Merge branch 'cecil-light'
authorJb Evain <jbevain@gmail.com>
Mon, 22 Nov 2010 23:37:13 +0000 (00:37 +0100)
committerJb Evain <jbevain@gmail.com>
Mon, 22 Nov 2010 23:37:13 +0000 (00:37 +0100)
1079 files changed:
data/cecil.pc.in
mcs/class/Mono.Cecil.Mdb/AUTHORS [deleted file]
mcs/class/Mono.Cecil.Mdb/ChangeLog [deleted file]
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.csproj [deleted file]
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.dll.sources
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/AssemblyInfo.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs [deleted file]
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbReader.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbWriter.cs
mcs/class/Mono.Cecil.Mdb/README [deleted file]
mcs/class/Mono.Cecil/.gitignore [new file with mode: 0644]
mcs/class/Mono.Cecil/AUTHORS [deleted file]
mcs/class/Mono.Cecil/ChangeLog [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-gen-attributes.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-gen-sources.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-gen-tests.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-gen-types.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-gen.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-mig.rb [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil-update-rev [deleted file]
mcs/class/Mono.Cecil/CodeGen/cecil.xml [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/BaseMetadataVisitor.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/Code.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/CodedIndex.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/IMetadataVisitor.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/IndexedCollection.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowReader.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowWriter.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableReader.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableWriter.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/NamedCollection.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/OpCodes.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/Table.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/Tests.cs [deleted file]
mcs/class/Mono.Cecil/CodeGen/templates/Utilities.cs [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/index.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/ns-.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml [deleted file]
mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml [deleted file]
mcs/class/Mono.Cecil/Makefile
mcs/class/Mono.Cecil/Mono.Cecil-SL.csproj [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/CopyImageVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/IHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageInitializer.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/MemoryBinaryWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/Code.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/Document.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandler.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/Instruction.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodBody.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodDataSection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodHeader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCode.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeNames.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodes.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/SequencePoint.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/SymbolStoreHelper.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableReference.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BlobHeap.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CodedIndex.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CultureUtils.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ElementType.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GuidHeap.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataInitializer.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataToken.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TokenType.cs
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs
mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Array.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ArrayShape.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/BaseSignatureVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Class.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Constraint.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FieldSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FnPtr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericArg.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInst.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInstSignature.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/InputOutputItem.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MVar.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodDefSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodRefSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Param.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/PropertySig.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Ptr.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/RetType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SigType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Signature.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SzArray.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/TypeSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ValueType.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Var.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil.csproj
mcs/class/Mono.Cecil/Mono.Cecil.dll.sources
mcs/class/Mono.Cecil/Mono.Cecil.nunit [new file with mode: 0755]
mcs/class/Mono.Cecil/Mono.Cecil.sln [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/AggressiveReflectionReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ArrayType.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFlags.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyHashAlgorithm.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyLinkedResource.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs
mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/CallSite.cs
mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/CustomAttribute.cs
mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs
mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/EmbeddedResource.cs
mcs/class/Mono.Cecil/Mono.Cecil/EventAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/EventDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/EventReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/FieldAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/FieldReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/FileAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/FunctionPointerType.cs
mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceMethod.cs
mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceType.cs
mcs/class/Mono.Cecil/Mono.Cecil/GenericParameter.cs
mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/HashCodeProvider.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/ICustomAttributeProvider.cs
mcs/class/Mono.Cecil/Mono.Cecil/IDetailReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IGenericInstance.cs
mcs/class/Mono.Cecil/Mono.Cecil/IGenericParameterProvider.cs
mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/IMemberDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IMetadataScope.cs
mcs/class/Mono.Cecil/Mono.Cecil/IMetadataTokenProvider.cs
mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs
mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/Import.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/LinkedResource.cs
mcs/class/Mono.Cecil/Mono.Cecil/ManifestResourceAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/MemberReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs
mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/MethodAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodCallingConvention.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/MethodImplAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodReturnType.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodSemanticsAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/MethodSpecification.cs
mcs/class/Mono.Cecil/Mono.Cecil/Modifiers.cs
mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/ModuleReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/NameObjectCollectionBase.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/NativeType.cs
mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/NullReferenceImporter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/PInvokeAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/PInvokeInfo.cs
mcs/class/Mono.Cecil/Mono.Cecil/ParameterAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinitionCollection.cs
mcs/class/Mono.Cecil/Mono.Cecil/ParameterReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/PinnedType.cs
mcs/class/Mono.Cecil/Mono.Cecil/PointerType.cs
mcs/class/Mono.Cecil/Mono.Cecil/PropertyAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/PropertyReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/ReferenceType.cs
mcs/class/Mono.Cecil/Mono.Cecil/ReflectionController.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ReflectionHelper.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ReflectionReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/ReflectionWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/Resource.cs
mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclaration.cs
mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/SentinelType.cs
mcs/class/Mono.Cecil/Mono.Cecil/StructureReader.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/StructureWriter.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/TargetRuntime.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeAttributes.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinition.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinitionCollection.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/TypeReference.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil/TypeSpecification.cs
mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Cecil/VariantType.cs
mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono.Xml/ChangeLog [deleted file]
mcs/class/Mono.Cecil/Mono.Xml/SecurityParser.cs [deleted file]
mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs [deleted file]
mcs/class/Mono.Cecil/Mono/Actions.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono/Empty.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/Mono/Funcs.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/NEWS [deleted file]
mcs/class/Mono.Cecil/NOTES.txt [new file with mode: 0644]
mcs/class/Mono.Cecil/README [deleted file]
mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs [new file with mode: 0644]
mcs/class/Mono.Cecil/TODO [deleted file]
mcs/class/Mono.Cecil/configure [deleted file]
mcs/class/Mono.Cecil/default.build [deleted file]
mcs/class/Mono.Cecil/mono-cecil.pc.in [deleted file]
mcs/class/Mono.Cecil/mono.snk [new file with mode: 0644]
mcs/class/Mono.Cecil/standalone.make [deleted file]
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.Ast/ExprCall.cs
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.AstVisitors/CompileVisitor.cs
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ContractsRuntime.cs
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ExprGen.cs
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/PerformRewrite.cs
mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs
mcs/class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodBodyMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
mcs/tools/cil-strip/AssemblyStripper.cs [new file with mode: 0644]
mcs/tools/cil-strip/Makefile
mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/CopyImageVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/IHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ImageInitializer.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ImageReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ImageWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/MemoryBinaryWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/CodeWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/MethodDataSection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/MethodHeader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeNames.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/SymbolStoreHelper.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/CultureUtils.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataInitializer.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Metadata/Utilities.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Array.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/ArrayShape.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/BaseSignatureVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Class.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Constraint.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/FieldSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/FnPtr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericArg.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInst.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInstSignature.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/InputOutputItem.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MVar.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodDefSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodRefSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Param.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/PropertySig.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Ptr.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/RetType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/SigType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Signature.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/SzArray.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/TypeSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/ValueType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil.Signatures/Var.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AggressiveReflectionReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyInfo.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/BaseReflectionReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/CallSite.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/Constants.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/EventReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/HashCodeProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IDetailReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IImporter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MetadataResolver.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/NameObjectCollectionBase.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/NativeType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/NullReferenceImporter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PointerType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReflectionController.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReflectionHelper.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReflectionReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ReflectionWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/Resource.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/StructureReader.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/StructureWriter.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Cecil/VariantType.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Xml/ChangeLog [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Xml/SecurityParser.cs [new file with mode: 0644]
mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs [new file with mode: 0644]
mcs/tools/cil-strip/cilstrip.cs
mcs/tools/cil-strip/mono-cil-strip.exe.sources
mcs/tools/corcompare/AssemblyResolver.cs
mcs/tools/corcompare/Util.cs
mcs/tools/corcompare/WellFormedXmlWriter.cs
mcs/tools/corcompare/mono-api-diff.cs
mcs/tools/corcompare/mono-api-info.cs
mcs/tools/linker/Mono.Linker.Steps/BaseStep.cs
mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs
mcs/tools/linker/Mono.Linker.Steps/LoadI18nAssemblies.cs
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs
mcs/tools/linker/Mono.Linker.Steps/ResolveFromAssemblyStep.cs
mcs/tools/linker/Mono.Linker.Steps/ResolveFromXApiStep.cs
mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs
mcs/tools/linker/Mono.Linker.Steps/ResolveStep.cs
mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
mcs/tools/linker/Mono.Linker.Steps/TypeMapStep.cs
mcs/tools/linker/Mono.Linker/Annotations.cs
mcs/tools/linker/Mono.Linker/AssemblyResolver.cs
mcs/tools/linker/Mono.Linker/LinkContext.cs
mcs/tools/linker/Mono.Linker/Pipeline.cs
mcs/tools/linker/Mono.Linker/TypeParser.cs [deleted file]
mcs/tools/linker/Mono.Linker/XApiReader.cs
mcs/tools/linker/monolinker.exe.sources
mcs/tools/mdoc/Makefile
mcs/tools/mdoc/Mono.Documentation/exceptions.cs
mcs/tools/mdoc/Mono.Documentation/monodocer.cs
mcs/tools/pdb2mdb/Driver.cs
mcs/tools/security/permview.cs
mcs/tools/tuner/Makefile
mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs
mcs/tools/tuner/Mono.Tuner/CheckVisibility.cs
mcs/tools/tuner/Mono.Tuner/FilterAttributes.cs
mcs/tools/tuner/Mono.Tuner/InjectSecurityAttributes.cs
mcs/tools/tuner/Mono.Tuner/MoonlightA11yAssemblyStep.cs
mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs
mcs/tools/tuner/Mono.Tuner/MoonlightA11yProcessor.cs
mcs/tools/tuner/Mono.Tuner/MoonlightAssemblyStep.cs
mcs/tools/tuner/Mono.Tuner/PrintStatus.cs
mcs/tools/tuner/Mono.Tuner/RemoveSerialization.cs
mcs/tools/tuner/Mono.Tuner/TunerAnnotations.cs

index 768bc466db25330623a73d14f170cb1df0a83390..067872a5274553a21713c5515aea3609600d96f2 100644 (file)
@@ -1,5 +1,5 @@
 assemblies_dir=@prefix@/lib/mono
-Libraries=${assemblies_dir}/gac/Mono.Cecil/0.6.9.0__0738eb9f132ed756/Mono.Cecil.dll
+Libraries=${assemblies_dir}/gac/Mono.Cecil/0.9.4.0__0738eb9f132ed756/Mono.Cecil.dll
 
 Name: Mono Internal -- Do not use.
 Description: Mono Internal Libraries -- Do not use 
diff --git a/mcs/class/Mono.Cecil.Mdb/AUTHORS b/mcs/class/Mono.Cecil.Mdb/AUTHORS
deleted file mode 100644 (file)
index fcfe312..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Jb Evain  <jbevain@novell.com>
diff --git a/mcs/class/Mono.Cecil.Mdb/ChangeLog b/mcs/class/Mono.Cecil.Mdb/ChangeLog
deleted file mode 100644 (file)
index 7713cc5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-2010-01-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
-
-       * Makefile: Specify the path to Mono.Cecil.dll when referencing it.
-
-2009-02-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Mdb/MdbWriter.cs: add a GetDebugHeader method
-               that will be used by the image writer.
-
-2008-11-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbFactory.cs: Wrap any MonoSymbolFileException
-       into a FormatException since callers can't catch the former (at least
-       not without catching Exception).
-
-2008-10-17  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Mdb/MdbWriter.cs: Adjust to Cecil changes.
-
-2008-06-07  Martin Baulig  <martin@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-       reader changes.
-
-       * Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol
-       writer changes.
-
-2008-05-28  Martin Baulig  <martin@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-       reader changes.
-
-2008-05-05  Martin Baulig  <martin@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol writer
-       changes; DefineLocalVariables() doesn't take a signature anymore.
-
-       * Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol writer
-       changes; use CodeBlockEntry instead of LexicalBlockEntry.
-
-2008-04-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbReader.cs: Update wrt interface change (i.e.
-       Read now provide a Dictionary to reuse the existing Hashtable
-       between offsets and instructions).
-
-2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Mdb/MdbReader.cs:
-               Make sure we set variables names even if the scope
-               information is missing.
-
-2007-08-28  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Mdb/MdbWriter.cs:
-               Rewrite variables infos.
-
-2007-08-27  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Mdb/MdbWriter.cs:
-               Rewrite using the direct mdb api.
-
-2007-02-21  Jb Evain  <jb@nurv.fr>
-
-       * Start working on local var debug infos emitting.
-
-2006-09-24  Jb Evain  <jbevain@gmail.com>
-
-       * start some work on the reader.
-
-2006-09-19  Jb Evain  <jbevain@gmail.com>
-
-       * first checkin in SVN:
-               This is the assembly to support reading and writing
-               from Mono's mdb symbol store.
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.csproj b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.csproj
deleted file mode 100644 (file)
index 3f74360..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{C5D12431-9C20-4789-8FEC-46094B0F81B5}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Mono.Cecil.Mdb</RootNamespace>
-    <AssemblyName>Mono.Cecil.Mdb</AssemblyName>
-    <StartupObject>
-    </StartupObject>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\mcs\class\mono.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ItemGroup>
-    <Compile Include="Mono.Cecil.Mdb\AssemblyInfo.cs" />
-    <Compile Include="Mono.Cecil.Mdb\MdbFactory.cs" />
-    <Compile Include="Mono.Cecil.Mdb\MdbReader.cs" />
-    <Compile Include="Mono.Cecil.Mdb\MdbWriter.cs" />
-    <Compile Include="Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />
-    <Compile Include="Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />
-    <Compile Include="Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs" />
-    <Compile Include="Mono.CompilerServices.SymbolWriter\SymbolWriterImpl.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\mcs\class\Mono.Cecil\Mono.Cecil.csproj">
-      <Project>{D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}</Project>
-      <Name>Mono.Cecil</Name>
-    </ProjectReference>
-  </ItemGroup>
-</Project>
\ No newline at end of file
index 74a3d70fdbc4006955617daf4568f31094036dbd..9775ab4ebc1fb36b08b33113428985efcb19df13 100644 (file)
@@ -1,5 +1,4 @@
 ./Mono.Cecil.Mdb/AssemblyInfo.cs
-./Mono.Cecil.Mdb/MdbFactory.cs
 ./Mono.Cecil.Mdb/MdbReader.cs
 ./Mono.Cecil.Mdb/MdbWriter.cs
 ../Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
index 5debf10fff02d3b84ebe6556509ce0bf1bd777b6..a08113a31d80e029ff1fb9d3ea117f1a4b6bad94 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,13 +31,11 @@ using System.Reflection;
 using System.Runtime.InteropServices;
 
 [assembly: AssemblyTitle ("Mono.Cecil.Mdb")]
-[assembly: AssemblyDescription ("Support for the mdb symbols store in Cecil")]
-[assembly: AssemblyConfiguration ("")]
 [assembly: AssemblyProduct ("Mono.Cecil")]
-[assembly: AssemblyCopyright ("(C) 2006, Jb Evain")]
-[assembly: AssemblyCulture ("")]
+[assembly: AssemblyCopyright ("Copyright Â© 2008 - 2010 Jb Evain")]
 
 [assembly: CLSCompliant (false)]
 [assembly: ComVisible (false)]
 
-[assembly: AssemblyVersion ("0.2.0.0")]
+[assembly: AssemblyVersion ("0.9.4.0")]
+[assembly: AssemblyFileVersion ("0.9.4.0")]
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs
deleted file mode 100644 (file)
index f12cff4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// MdbFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Mdb {
-
-       using System;
-
-       using Mono.Cecil.Cil;
-
-       using Mono.CompilerServices.SymbolWriter;
-
-       public class MdbFactory : ISymbolStoreFactory {
-
-               public ISymbolReader CreateReader (ModuleDefinition module, string assembly)
-               {
-                       try {
-                               return new MdbReader (MonoSymbolFile.ReadSymbolFile (module.Assembly, assembly));
-                       }
-                       catch (MonoSymbolFileException e) {
-                               // callers may not be able to catch this exception since they, likely,
-                               // don't link with Mono.CompilerServices.SymbolWriter
-                               throw new FormatException ("Invalid MDB symbol file.", e);
-                       }
-               }
-
-               public ISymbolWriter CreateWriter (ModuleDefinition module, string assembly)
-               {
-                       return new MdbWriter (module.Mvid, assembly);
-               }
-       }
-}
index fd09e69d47f28594cd966d706353b7b9f744559a..0198a7164dba27f0d4c6c1653832b9ef02651129 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+using Mono.CompilerServices.SymbolWriter;
+
 namespace Mono.Cecil.Mdb {
 
-       using System.Collections;
+       public class MdbReaderProvider : ISymbolReaderProvider {
 
-       using Mono.Cecil.Cil;
+               public ISymbolReader GetSymbolReader (ModuleDefinition module, string fileName)
+               {
+                       return new MdbReader (MonoSymbolFile.ReadSymbolFile (module, fileName));
+               }
 
-       using Mono.CompilerServices.SymbolWriter;
+               public ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
 
-       class MdbReader : ISymbolReader {
+       public class MdbReader : ISymbolReader {
 
-               MonoSymbolFile m_symFile;
-               Hashtable m_documents;
-               Hashtable m_scopes;
+               readonly MonoSymbolFile symbol_file;
+               readonly Dictionary<string, Document> documents;
 
                public MdbReader (MonoSymbolFile symFile)
                {
-                       m_symFile = symFile;
-                       m_documents = new Hashtable ();
-                       m_scopes = new Hashtable ();
+                       symbol_file = symFile;
+                       documents = new Dictionary<string, Document> ();
                }
 
-               Instruction GetInstruction (MethodBody body, IDictionary instructions, int offset)
+               public bool ProcessDebugHeader (ImageDebugDirectory directory, byte [] header)
                {
-                       Instruction instr = (Instruction) instructions [offset];
-                       if (instr != null)
-                               return instr;
-
-                       return body.Instructions.Outside;
+                       return true;
                }
 
-               public void Read (MethodBody body, IDictionary instructions)
+               public void Read (MethodBody body, InstructionMapper mapper)
                {
-                       MethodEntry entry = m_symFile.GetMethodByToken ((int) body.Method.MetadataToken.ToUInt ());
+                       var method_token = body.Method.MetadataToken;
+                       var entry = symbol_file.GetMethodByToken (method_token.ToInt32  ());
                        if (entry == null)
                                return;
 
-                       ReadScopes (entry, body, instructions);
-                       ReadLineNumbers (entry, instructions);
-                       ReadLocalVariables (entry, body);
+                       var scopes = ReadScopes (entry, body, mapper);
+                       ReadLineNumbers (entry, mapper);
+                       ReadLocalVariables (entry, body, scopes);
                }
 
-               void ReadLocalVariables (MethodEntry entry, MethodBody body)
+               static void ReadLocalVariables (MethodEntry entry, MethodBody body, Scope [] scopes)
                {
-                       LocalVariableEntry[] locals = entry.GetLocals ();
-                       foreach (LocalVariableEntry loc in locals) {
-                               VariableDefinition var = body.Variables [loc.Index];
-                               var.Name = loc.Name;
+                       var locals = entry.GetLocals ();
+                       foreach (var local in locals) {
+                               var variable = body.Variables [local.Index];
+                               variable.Name = local.Name;
+
+                               var index = local.BlockIndex;
+                               if (index < 0 || index >= scopes.Length)
+                                       continue;
 
-                               Scope scope = m_scopes [loc.BlockIndex] as Scope;
+                               var scope = scopes [index];
                                if (scope == null)
                                        continue;
-                               scope.Variables.Add (var);
+
+                               scope.Variables.Add (variable);
                        }
                }
 
-               void ReadLineNumbers (MethodEntry entry, IDictionary instructions)
+               void ReadLineNumbers (MethodEntry entry, InstructionMapper mapper)
                {
-                       LineNumberTable lnt = entry.GetLineNumberTable ();
-                       foreach (LineNumberEntry line in lnt.LineNumbers) {
-                               Instruction instr = instructions [line.Offset] as Instruction;
-                               if (instr == null)
+                       Document document = null;
+                       var table = entry.GetLineNumberTable ();
+
+                       foreach (var line in table.LineNumbers) {
+                               var instruction = mapper (line.Offset);
+                               if (instruction == null)
                                        continue;
 
-                               Document doc = GetDocument (entry.CompileUnit.SourceFile);
-                               instr.SequencePoint = new SequencePoint (doc);
-                               instr.SequencePoint.StartLine = line.Row;
-                               instr.SequencePoint.EndLine = line.Row;
+                               if (document == null)
+                                       document = GetDocument (entry.CompileUnit.SourceFile);
+
+                               instruction.SequencePoint = new SequencePoint (document) {
+                                       StartLine = line.Row,
+                                       EndLine = line.Row,
+                               };
                        }
                }
 
                Document GetDocument (SourceFileEntry file)
                {
-                       Document doc = m_documents [file.FileName] as Document;
-                       if (doc != null)
-                               return doc;
+                       var file_name = file.FileName;
+
+                       Document document;
+                       if (documents.TryGetValue (file_name, out document))
+                               return document;
 
-                       doc = new Document (file.FileName);
+                       document = new Document (file_name);
+                       documents.Add (file_name, document);
 
-                       m_documents [file.FileName] = doc;
-                       return doc;
+                       return document;
                }
 
-               void ReadScopes (MethodEntry entry, MethodBody body, IDictionary instructions)
+               static Scope [] ReadScopes (MethodEntry entry, MethodBody body, InstructionMapper mapper)
                {
-                       CodeBlockEntry[] blocks = entry.GetCodeBlocks ();
-                       foreach (CodeBlockEntry cbe in blocks) {
-                               if (cbe.BlockType != CodeBlockEntry.Type.Lexical)
+                       var blocks = entry.GetCodeBlocks ();
+                       var scopes = new Scope [blocks.Length];
+
+                       foreach (var block in blocks) {
+                               if (block.BlockType != CodeBlockEntry.Type.Lexical)
                                        continue;
 
-                               Scope s = new Scope ();
-                               s.Start = GetInstruction (body, instructions, cbe.StartOffset);
-                               s.End = GetInstruction(body, instructions, cbe.EndOffset);
-                               m_scopes [entry.Index] = s;
+                               var scope = new Scope ();
+                               scope.Start = mapper (block.StartOffset);
+                               scope.End = mapper (block.EndOffset);
+
+                               scopes [block.Index] = scope;
 
-                               if (!AddScope (body, s))
-                                       body.Scopes.Add (s);
+                               if (body.Scope == null)
+                                       body.Scope = scope;
+
+                               if (!AddScope (body.Scope, scope))
+                                       body.Scope = scope;
                        }
+
+                       return scopes;
                }
 
-               bool AddScope (IScopeProvider provider, Scope s)
+               static bool AddScope (Scope provider, Scope scope)
                {
-                       foreach (Scope scope in provider.Scopes) {
-                               if (AddScope (scope, s))
+                       foreach (var sub_scope in provider.Scopes) {
+                               if (AddScope (sub_scope, scope))
                                        return true;
 
-                               if (s.Start.Offset >= scope.Start.Offset && s.End.Offset <= scope.End.Offset) {
-                                       scope.Scopes.Add (s);
+                               if (scope.Start.Offset >= sub_scope.Start.Offset && scope.End.Offset <= sub_scope.End.Offset) {
+                                       sub_scope.Scopes.Add (scope);
                                        return true;
                                }
                        }
@@ -140,9 +170,44 @@ namespace Mono.Cecil.Mdb {
                        return false;
                }
 
+               public void Read (MethodSymbols symbols)
+               {
+                       var entry = symbol_file.GetMethodByToken (symbols.MethodToken.ToInt32 ());
+                       if (entry == null)
+                               return;
+
+                       ReadLineNumbers (entry, symbols);
+                       ReadLocalVariables (entry, symbols);
+               }
+
+               void ReadLineNumbers (MethodEntry entry, MethodSymbols symbols)
+               {
+                       var table = entry.GetLineNumberTable ();
+                       var lines = table.LineNumbers;
+
+                       var instructions = symbols.instructions = new Collection<InstructionSymbol> (lines.Length);
+
+                       for (int i = 0; i < lines.Length; i++) {
+                               var line = lines [i];
+
+                               instructions.Add (new InstructionSymbol (line.Offset, new SequencePoint (GetDocument (entry.CompileUnit.SourceFile)) {
+                                       StartLine = line.Row,
+                                       EndLine = line.Row,
+                               }));
+                       }
+               }
+
+               static void ReadLocalVariables (MethodEntry entry, MethodSymbols symbols)
+               {
+                       foreach (var local in entry.GetLocals ()) {
+                               var variable = symbols.Variables [local.Index];
+                               variable.Name = local.Name;
+                       }
+               }
+
                public void Dispose ()
                {
-                       m_symFile.Dispose ();
+                       symbol_file.Dispose ();
                }
        }
 }
index 948d151d1dbd6c68c20142c6d45fab025c3665f3..54362ec3c01aaf3b770628c3f41dcbe2ba87fae4 100644 (file)
@@ -2,9 +2,9 @@
 // MdbWriter.cs
 //
 // Author:
-//   Jb Evain (jbevain@novell.com)
+//   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2007 Novell, Inc.
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-// Inspired by the pdb2mdb tool written by Robert Jordan, thanks Robert!
+using System;
+using System.Collections.Generic;
+using System.IO;
 
-namespace Mono.Cecil.Mdb {
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+using Mono.CompilerServices.SymbolWriter;
 
-       using System;
-       using System.Collections;
+namespace Mono.Cecil.Mdb {
 
-       using Mono.CompilerServices.SymbolWriter;
+#if !READ_ONLY
+       public class MdbWriterProvider : ISymbolWriterProvider {
 
-       using Mono.Cecil;
-       using Mono.Cecil.Cil;
+               public ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName)
+               {
+                       return new MdbWriter (module.Mvid, fileName);
+               }
 
-       class MdbWriter : ISymbolWriter {
+               public ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
 
-               Guid m_mvid;
-               MonoSymbolWriter m_writer;
+       public class MdbWriter : ISymbolWriter {
 
-               Hashtable m_documents;
+               readonly Guid mvid;
+               readonly MonoSymbolWriter writer;
+               readonly Dictionary<string, SourceFile> source_files;
 
                public MdbWriter (Guid mvid, string assembly)
                {
-                       m_mvid = mvid;
-                       m_writer = new MonoSymbolWriter (assembly);
-                       m_documents = new Hashtable ();
+                       this.mvid = mvid;
+                       this.writer = new MonoSymbolWriter (assembly);
+                       this.source_files = new Dictionary<string, SourceFile> ();
                }
 
-               static Instruction [] GetInstructions (MethodBody body)
+               static Collection<Instruction> GetInstructions (MethodBody body)
                {
-                       ArrayList list = new ArrayList ();
-                       foreach (Instruction instruction in body.Instructions)
+                       var instructions = new Collection<Instruction> ();
+                       foreach (var instruction in body.Instructions)
                                if (instruction.SequencePoint != null)
-                                       list.Add (instruction);
+                                       instructions.Add (instruction);
 
-                       return list.ToArray (typeof (Instruction)) as Instruction [];
+                       return instructions;
                }
 
                SourceFile GetSourceFile (Document document)
                {
-                       string url = document.Url;
-                       SourceFile file = m_documents [url] as SourceFile;
-                       if (file != null)
-                               return file;
+                       var url = document.Url;
+
+                       SourceFile source_file;
+                       if (source_files.TryGetValue (url, out source_file))
+                               return source_file;
 
-                       SourceFileEntry entry = m_writer.DefineDocument (url);
-                       CompileUnitEntry comp_unit = m_writer.DefineCompilationUnit (entry);
+                       var entry = writer.DefineDocument (url);
+                       var compile_unit = writer.DefineCompilationUnit (entry);
 
-                       file = new SourceFile (comp_unit, entry);
-                       m_documents [url] = file;
-                       return file;
+                       source_file = new SourceFile (compile_unit, entry);
+                       source_files.Add (url, source_file);
+                       return source_file;
                }
 
-               void Populate (Instruction [] instructions, int [] offsets,
-                       int [] startRows, int [] startCols, int [] endRows, int [] endCols,
-                       out SourceFile file)
+               void Populate (Collection<Instruction> instructions, int [] offsets,
+                       int [] startRows, int [] startCols, out SourceFile file)
                {
-                       SourceFile document = null;
+                       SourceFile source_file = null;
 
-                       for (int i = 0; i < instructions.Length; i++) {
-                               Instruction instr = (Instruction) instructions [i];
-                               offsets [i] = instr.Offset;
+                       for (int i = 0; i < instructions.Count; i++) {
+                               var instruction = instructions [i];
+                               offsets [i] = instruction.Offset;
 
-                               if (document == null)
-                                       document = GetSourceFile (instr.SequencePoint.Document);
+                               var sequence_point = instruction.SequencePoint;
+                               if (source_file == null)
+                                       source_file = GetSourceFile (sequence_point.Document);
 
-                               startRows [i] = instr.SequencePoint.StartLine;
-                               startCols [i] = instr.SequencePoint.StartColumn;
-                               endRows [i] = instr.SequencePoint.EndLine;
-                               endCols [i] = instr.SequencePoint.EndColumn;
+                               startRows [i] = sequence_point.StartLine;
+                               startCols [i] = sequence_point.StartColumn;
                        }
 
-                       file = document;
+                       file = source_file;
                }
 
                public void Write (MethodBody body)
                {
-                       SourceMethod meth = new SourceMethod (body.Method);
+                       var method = new SourceMethod (body.Method);
 
-                       SourceFile file;
-
-                       Instruction [] instructions = GetInstructions (body);
-                       int length = instructions.Length;
-                       if (length == 0)
+                       var instructions = GetInstructions (body);
+                       int count = instructions.Count;
+                       if (count == 0)
                                return;
 
-                       int [] offsets = new int [length];
-                       int [] startRows = new int [length];
-                       int [] startCols = new int [length];
-                       int [] endRows = new int [length];
-                       int [] endCols = new int [length];
+                       var offsets = new int [count];
+                       var start_rows = new int [count];
+                       var start_cols = new int [count];
+
+                       SourceFile file;
+                       Populate (instructions, offsets, start_rows, start_cols, out file);
+
+                       var builder = writer.OpenMethod (file.CompilationUnit, 0, method);
 
-                       Populate (instructions, offsets, startRows, startCols, endRows, endCols, out file);
+                       for (int i = 0; i < count; i++)
+                               builder.MarkSequencePoint (
+                                       offsets [i],
+                                       file.CompilationUnit.SourceFile,
+                                       start_rows [i],
+                                       start_cols [i],
+                                       false);
 
-                       SourceMethodBuilder builder = m_writer.OpenMethod (file.CompilationUnit, 0, meth);
+                       if (body.HasVariables)
+                               AddVariables (body.Variables);
 
-                       for (int i = 0; i < length; i++)
-                               builder.MarkSequencePoint (offsets [i], file.CompilationUnit.SourceFile,
-                                                          startRows [i], startCols [i], false);
+                       writer.CloseMethod ();
+               }
 
-                       MarkVariables (body);
+               readonly static byte [] empty_header = new byte [0];
 
-                       m_writer.CloseMethod ();
+               public bool GetDebugHeader (out ImageDebugDirectory directory, out byte [] header)
+               {
+                       directory = new ImageDebugDirectory ();
+                       header = empty_header;
+                       return false;
                }
 
-               void MarkVariables (MethodBody body)
+               void AddVariables (IList<VariableDefinition> variables)
                {
-                       for (int i = 0; i < body.Variables.Count; i++) {
-                               VariableDefinition var = body.Variables [i];
-                               m_writer.DefineLocalVariable (i, var.Name);
+                       for (int i = 0; i < variables.Count; i++) {
+                               var variable = variables [i];
+                               writer.DefineLocalVariable (i, variable.Name);
                        }
                }
 
-               public byte [] GetDebugHeader ()
+               public void Write (MethodSymbols symbols)
                {
-                       // mdb doesn't need a debug header
-                       // in the PE file.
-                       return new byte [0];
+                       var method = new SourceMethodSymbol (symbols);
+
+                       var file = GetSourceFile (symbols.Instructions [0].SequencePoint.Document);
+                       var builder = writer.OpenMethod (file.CompilationUnit, 0, method);
+                       var count = symbols.Instructions.Count;
+
+                       for (int i = 0; i < count; i++) {
+                               var instruction = symbols.Instructions [i];
+                               var sequence_point = instruction.SequencePoint;
+
+                               builder.MarkSequencePoint (
+                                       instruction.Offset,
+                                       GetSourceFile (sequence_point.Document).CompilationUnit.SourceFile,
+                                       sequence_point.StartLine,
+                                       sequence_point.EndLine,
+                                       false);
+                       }
+
+                       if (symbols.HasVariables)
+                               AddVariables (symbols.Variables);
+
+                       writer.CloseMethod ();
                }
 
                public void Dispose ()
                {
-                       m_writer.WriteSymbolFile (m_mvid);
+                       writer.WriteSymbolFile (mvid);
                }
 
                class SourceFile : ISourceFile {
-                       CompileUnitEntry comp_unit;
-                       SourceFileEntry entry;
+
+                       readonly CompileUnitEntry compilation_unit;
+                       readonly SourceFileEntry entry;
 
                        public SourceFileEntry Entry {
                                get { return entry; }
                        }
 
                        public CompileUnitEntry CompilationUnit {
-                               get { return comp_unit; }
+                               get { return compilation_unit; }
                        }
 
                        public SourceFile (CompileUnitEntry comp_unit, SourceFileEntry entry)
                        {
-                               this.comp_unit = comp_unit;
+                               this.compilation_unit = comp_unit;
                                this.entry = entry;
                        }
                }
 
+               class SourceMethodSymbol : IMethodDef {
+
+                       readonly string name;
+                       readonly int token;
+
+                       public string Name {
+                               get { return name;}
+                       }
+
+                       public int Token {
+                               get { return token; }
+                       }
+
+                       public SourceMethodSymbol (MethodSymbols symbols)
+                       {
+                               name = symbols.MethodName;
+                               token = symbols.MethodToken.ToInt32 ();
+                       }
+               }
+
                class SourceMethod : IMethodDef {
 
-                       MethodDefinition m_method;
+                       readonly MethodDefinition method;
 
                        public string Name {
-                               get { return m_method.Name; }
+                               get { return method.Name; }
                        }
 
                        public int Token {
-                               get { return (int) m_method.MetadataToken.ToUInt (); }
+                               get { return method.MetadataToken.ToInt32 (); }
                        }
 
                        public SourceMethod (MethodDefinition method)
                        {
-                               m_method = method;
+                               this.method = method;
                        }
                }
        }
+#endif
 }
diff --git a/mcs/class/Mono.Cecil.Mdb/README b/mcs/class/Mono.Cecil.Mdb/README
deleted file mode 100644 (file)
index ef81761..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Mono.Cecil.Mdb is an internal assembly used by Mono.Cecil to
-read and write the Mono Debugging Symbols file format.
diff --git a/mcs/class/Mono.Cecil/.gitignore b/mcs/class/Mono.Cecil/.gitignore
new file mode 100644 (file)
index 0000000..3629e37
--- /dev/null
@@ -0,0 +1,7 @@
+bin
+obj
+*.suo
+*.user
+*.pidb
+*.userprefs
+*.xml
diff --git a/mcs/class/Mono.Cecil/AUTHORS b/mcs/class/Mono.Cecil/AUTHORS
deleted file mode 100644 (file)
index c05a391..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Jb Evain  (jbevain@gmail.com)
diff --git a/mcs/class/Mono.Cecil/ChangeLog b/mcs/class/Mono.Cecil/ChangeLog
deleted file mode 100644 (file)
index 140b0ea..0000000
+++ /dev/null
@@ -1,4474 +0,0 @@
-2010-04-23  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs: fix writing of exported types.
-
-2010-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-       * Mono.Cecil/ReflectionWriter.cs: Partial (forwarders) fix for
-       writing ExternTypes (needed for tuning ML4 correctly)
-
-2010-04-11  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/GenericParameter.cs: override Module properly.
-
-2010-03-29  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyStripper.cs: optimize.
-
-2010-02-13  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs: don't cache everything
-       that is context dependent.
-       Based on a patch by Frank Laub  <frank.laub@gmail.com>
-
-2010-02-13  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodReturnType.cs: avoid creating an
-       inner parameter if not necessary.
-
-2010-02-13  Jb Evain  <jbevain@novell.com>
-
-       * TypeAttributes.cs: add Forwarder flag.
-
-2010-02-12  Jb Evain  <jbevain@novell.com>
-
-       * AssemblyStripper.cs: properly set the rva of methods with
-       no body.
-
-2010-01-06     Rodrigo B. de Oliveira <rodrigo@unity.com>
-
-       * Mono.Cecil.csproj
-         Mono.Cecil/NameObjectCollectionBase.cs
-         Mono.Cecil/BaseAssemblyResolver.cs
-         Mono.Cecil/DefaultAssemblyResolver.cs:
-               support for compiling Mono.Cecil without
-               any references to System.dll using the newly introduced
-               "Debug - No System.dll" configuration in Mono.Cecil.csproj;
-
-2009-12-14  Sebastien Pouliot  <sebastien at ximian.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs: Update to .net fx 4 beta2
-       version number and reduce code duplication.
-
-2009-10-25  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               update .net 4.0 version to beta 2.
-
-2009-08-18  Michael Hutchinson  <mhutchinson@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs: Search GACs specified in the
-         MONO_GAC_PREFIX environment variable.
-
-2009-08-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-       Do not crash when the GAC folder can't be found.
-
-2009-07-28  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyStripper.cs: Make all methods share
-       the same body.
-
-2009-07-16  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-       * Mono.Cecil.Metadata/MetadataWriter.cs
-       * Mono.Cecil.Binary/ImageWriter.cs:
-               Support for properly writing 4.0 dlls.
-               Patch by Carlo Kok  <ck@remobjects.com>.
-
-2009-06-05  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs: properly look for the 4.0 corlib
-       when running on Mono.
-
-2009-06-03  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MetadataResolver.cs: add support for resolving from
-       a ModuleReference.
-
-2009-06-03  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs: look for 4.0.0.0 assemblies.
-
-2009-05-21  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs: add support for type forwarders.
-
-2009-05-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/TargetRuntime.cs
-       * Mono.Cecil/StructureReader.cs
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               add support for .net 4.0 detection.
-
-2009-04-30  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: fix reading out extra mods.
-
-2009-04-21  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/SymbolStoreHelper.cs: look for the assembly in the GAC
-       as well if it's not local.
-
-2009-04-03  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Metadata/BlobHeap.cs
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               do a better job at emitting a blob heap.
-
-2009-04-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ModuleDefinition.cs (Import): add overloads
-       taking a MethodDefinition as a generic context.
-
-2009-04-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionHelper.cs: throw proper exception
-       when importing in an invalid context.
-
-2009-03-12  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyStripper.cs (PatchHeap): don't crash
-       if the assembly doesn't contain a specific metadata heap.
-
-2009-03-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/StructureWriter.cs: properly set the metadata tokens
-       of newly emitted modules and assemblies. Fix #480729.
-
-2009-01-28  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MetadataResolver.cs:
-               Add new MetadataResolver.
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/TypeReference.cs
-         Mono.Cecil/GenericInstanceMethod.cs
-         Mono.Cecil/IMemberDefinition.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/PropertyReference.cs
-         Mono.Cecil/EventReference.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/MethodReference.cs
-         Mono.Cecil/FieldReference.cs
-         Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil/PropertyDefinition.cs
-         Mono.Cecil/ParameterReference.cs
-         Mono.Cecil.Cil/VariableReference.cs
-         Mono.Cecil.Cil/VariableDefinition.cs:
-               Add Resolve to Definition methods on References.
-
-       * Mono.Cecil.dll.sources, Mono.Cecil.csproj: add MetadataResolver.cs
-
-2009-01-05  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionHelper.cs
-       * Mono.Cecil/DefaultImporter.cs:
-               Adjust references's generic parameter count on import.
-
-2009-01-05  Sebastien Pouliot  <sebastien at ximian.com>
-
-       * CodeReader.cs: Do not call VisitVariableDefinitionCollection
-       unless LocalVarToken is different from zero.
-       * CodeWriter.cs: Use HasVariables and HasExceptionHandlers.
-       Write zero, not TokenType.Signature, for LocalVarToken if no
-       variable is defined. That should fix the problem with unsign
-       * Mono.Cecil.Cil/MethodBody.cs: Add HasExceptionHandlers,
-       HasVariables and HasScopes to avoid creating empty collections
-       inside Cecil. There is no HasInstruction because there's always
-       something if MethodDefinition.HasBody is true (i.e. a MethodBody
-       exists). [re-apply r1222198]
-
-2008-12-29  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/MethodReturnType.cs: Override ToString so we can, by
-       default, display something useful about the return type.
-
-2008-12-29  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/GenericInstanceMethod.cs,
-       * Mono.Cecil/GenericInstanceType.cs,
-       * Mono.Cecil/IGenericInstance.cs: Introduce HasGenericArguments into
-       the interface and implement it inside GenericInstance[Method|Type]
-
-2008-12-16  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: fix reading of wrong
-       modifiers.
-
-2008-12-01  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Signatures/CustomAttrib.cs: Define reusable Empty
-       arrays for both FixedArg and NamedArg.
-       * Mono.Cecil.Signatures/SignatureReader.cs: Avoid creating empty
-       ParameterDefinitionCollection on constructors. Use the new Empty
-       arrays when possible.
-
-2008-12-01  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/MethodReference.cs: Make HasParameters virtual
-       * Mono.Cecil/MethodSpecification.cs: Override HasParameters to make
-       sure we're tracking the same object as the Parameters property does.
-       * Mono.Cecil/PropertyDefinition.cs: Implement HasParameters based on
-       the GetMethod, SetMethod or its own parameter collection.
-       * Mono.Cecil/PropertyReference.cs: Add abstract HasParameters property
-
-2008-11-27  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ExternTypeCollection.cs: don't attach types as they
-       are already attached to the current module.
-
-2008-11-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/GenericParameter.cs,
-       * Mono.Cecil/ICustomAttributeProvider.cs,
-       * Mono.Cecil/CallSite.cs,
-       * Mono.Cecil/IMethodSignature.cs,
-       * Mono.Cecil/FunctionPointerType.cs,
-       * Mono.Cecil/FieldDefinition.cs,
-       * Mono.Cecil/TypeReference.cs,
-       * Mono.Cecil/GenericInstanceMethod.cs,
-       * Mono.Cecil/IHasSecurity.cs,
-       * Mono.Cecil/MethodReturnType.cs,
-       * Mono.Cecil/AssemblyDefinition.cs,
-       * Mono.Cecil/TypeDefinition.cs,
-       * Mono.Cecil/MethodDefinition.cs,
-       * Mono.Cecil/EventDefinition.cs,
-       * Mono.Cecil/ModuleDefinition.cs,
-       * Mono.Cecil/MethodReference.cs,
-       * Mono.Cecil/ReflectionWriter.cs,
-       * Mono.Cecil/ParameterDefinition.cs,
-       * Mono.Cecil/PropertyDefinition.cs,
-       * Mono.Cecil/IGenericParameterProvider.cs:
-               Add boolean Has{x} properties so Cecil consumers are able
-               to avoid the lazy allocations that would be made for an
-               empty {x}. Use the Has{x} properties inside Cecil (some
-               cases might be missing).
-
-2008-11-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/TypeDefinition.cs (IsValueType): Inline the call to
-       IsEnum and remove the double null check being done.
-
-2008-11-14  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ParameterAttributes.cs: add Retval and Lcid.
-       * Mono.Cecil/ParameterDefinition.cs: add Is* property accordingly.
-
-2008-11-12  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: properly construct
-       TypeReferences when reading them from custom attributes data.
-
-2008-11-11  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs (AddTypeRef):
-       protect against invalid token.
-
-2008-11-11  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs: fix writing of catch handlers
-       of a generic exception type.
-
-2008-11-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs: properly clean
-       the runtime image in case we're unsigning an assembly.
-
-2008-11-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/RuntimeImage.cs: add [Flags] attribute.
-       Fixes #440574.
-
-2008-10-27  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyInfo.cs: bump version.
-
-2008-10-27  Zoltan Varga  <vargaz@gmail.com>
-
-       * Mono.Cecil/AssemblyStripper.cs: Strip locals info too.
-
-2008-10-17  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs: remove dead code.
-       * Mono.Cecil.Cil/ISymbolWriter.cs: simplify Write method.
-
-2008-10-17     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs
-       * Mono.Cecil.Cil/MethodBody.cs:
-               mcs-cecil-local-var-1.diff patch enabling better handling of local
-               variable debugging information applied.
-               Patch by Juerg Billeter <j@bitron.ch>
-
-2008-10-17     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil/ConstructorCollection.cs
-       * Mono.Cecil.Binary/ImageReader.cs:
-               Compact Framework compilation fixes.
-
-2008-10-14  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs: protect against
-       wrongly formatted security attributes.
-
-2008-10-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Cil/SymbolStoreHelper.cs: Change two "static readonly"
-       fields into const.
-       [Found using Gendarme PreferLiteralOverInitOnlyFieldsRule]
-
-2008-10-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/ConstructorCollection.cs: Fix a NRE if a null parameter
-       is provided to one of the GetConstructor overloads.
-
-2008-10-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs: don't cache generic typespecs,
-       as some compiler reuse generic instance signatures with different
-       generic contexts.
-
-2008-10-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.dll.sources
-       * Mono.Cecil.csproj
-       * Mono.Cecil/AssemblyStripper.cs
-       * Mono.Cecil.Cil/CodeWriter.cs
-       * Mono.Cecil.Metadata/MetadataWriter.cs: add a new AssemblyStripper
-       class to be used by a tool to empty method bodies for assemblies
-       that have been AOTed.
-
-2008-09-29  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/GenericParameter.cs: override TypeReference.Scope.
-
-2008-09-25  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/MemoryBinaryWriter.cs: Make sure QuadAlign
-       properly enlarge the memory stream if needed.
-       Patch by Regis Vaquette <rvaquette@yahoo.fr>.
-
-2008-09-18  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs (GetModifierType): protect against
-       zero rids.
-
-2008-09-15  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: fix regression
-       in reading custom mods.
-
-2008-09-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: better read modifiers on
-       return types and parameters.
-
-2008-09-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Metadata/UserStringsHeap.cs: fix reading of some unicode fu.
-
-2008-09-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodAttributes.cs: add CheckAccessOnOverride.
-       * Mono.Cecil/MethodDefinition.cs: add IsCheckAccessOnOverride.
-
-2008-09-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/GenericParameter.cs: fix Has*Constraint properties.
-
-2008-09-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs: fix reading
-       multiple permissions. Patch by Carsten Keutmann.
-
-2008-09-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs: properly compose mod and byref types
-       for parameters and return types.
-       Based on a patch by Carlo Kok <ck@remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs: Avoid a crash
-       when looking for an enumeration definition when the assembly
-       could not be resolved. Patch by Carlo Kok <ck@remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs: fix for writing null string
-       constants. Patch by Ewout Prangsma <ewout@tallapplications.com>.
-
-2008-06-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.dll.sources
-       * Mono.Xml/MiniParser.cs:
-               Remove MiniParser as it is no more required (replaced by
-               SmallXmlParser) and save a few KB in the binary size
-
-       * Mono.Xml/SecurityParser.cs
-       * Mono.Xml/SmallXmlParser.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil.Signatures/GenericArg.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil.Binary/CopyImageVisitor.cs
-       * Mono.Cecil.Binary/ImageInitializer.cs
-       * Mono.Cecil.Binary/ImageReader.cs
-       * Mono.Cecil.Binary/ImageWriter.cs
-       * Mono.Cecil.Binary/ResourceReader.cs
-       * Mono.Cecil.Binary/ResourceWriter.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil.Metadata/CultureUtils.cs
-       * Mono.Cecil.Metadata/MetadataInitializer.cs
-       * Mono.Cecil.Metadata/MetadataReader.cs
-       * Mono.Cecil.Metadata/MetadataRowReader.cs
-       * Mono.Cecil.Metadata/MetadataRowWriter.cs
-       * Mono.Cecil.Metadata/MetadataTableReader.cs
-       * Mono.Cecil.Metadata/Utilities.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil.Cil/CodeReader.cs
-       * Mono.Cecil.Cil/OpCodeNames.cs
-       * Mono.Cecil.Cil/CodeWriter.cs
-       * Mono.Cecil.Cil/SymbolStoreHelper.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil/SecurityDeclarationReader.cs
-       * Mono.Cecil/NullReferenceImporter.cs
-       * Mono.Cecil/TableComparers.cs:
-               Seal non-visible classes.
-               [Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-       * Mono.Cecil/AssemblyNameReference.cs:
-               Use String.Length > 0 instead of comparing to String.Empty
-               [Found using Gendarme CompareWithEmptyStringEfficientlyRule]
-
-       * Mono.Cecil.Metadata/MetadataToken.cs:
-               Add a private Equals(MetadataToken) method. This allows the
-               existing operators (== and !=) to avoid boxing, since they
-               will prefer it to the Equals(object) method.
-               [Found using Gendarme ImplementEqualsTypeRule]
-
-       * Mono.Cecil.Cil/GuidAttribute.cs:
-               Seal attribute class
-               [Found using Gendarme AvoidUnsealedConcreteAttributesRule]
-
-       * Mono.Cecil.Signatures/SignatureWriter.cs:
-               Fix typo.
-               [Found using Gendarme AvoidUnneededUnboxingRule]
-
-2008-06-06  Jb Evain  <jbevain@novell.com>
-
-       * CodeGen/cecil.xml: constrained. is of type InlineType.
-       * Mono.Cecil.Cil/OpCodes.cs: re-generate.
-
-2008-05-14  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Only create the GenericParameterConstraint table if needed.
-               Patch by Richard Flamsholt <richard.flamsholt@gmail.com>.
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fix typo in switch cloning. Patch by
-               Rune Glerup <rune.glerup@gmail.com>.
-
-2008-05-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Signatures/CustomMod.cs:
-               Introduce a EmptyCustomMod static field.
-       * Mono.Cecil/ReflectionWriter.cs
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Use EmptyCustomMod instead of instanciating
-               empty arrays of CustomMod.
-               Based on a patch by Carlo Kok <ck@remobjects.com>.
-
-       * Mono.Cecil.Metadata/MetadataRowReader.cs
-       * Mono.Cecil.Metadata/MetadataRowWriter.cs:
-               Cache row counters delegates.
-               Based on a patch by Carlo Kok <ck@remobjects.com>.
-
-       * Mono.Cecil/TypeDefinition.cs
-       * Mono.Cecil/MethodDefinition.cs
-       * Mono.Cecil/DefaultImporter.cs
-       * Mono.Cecil/ReflectionHelper.cs:
-               Restore the generic context values instead of blindly
-               overriding them. Based on a patch by Dzintars Avots.
-
-       * Mono.Cecil/MarshalSpec.cs (CloneInto): add new method
-       to clone MarshalSpec into a new container.
-
-       * Mono.Cecil/ParameterDefinition.cs (Clone):
-       * Mono.Cecil/FieldDefinition.cs (Clone):
-       Use the new MarshalSpec.CloneInto method.
-       Based on a patch by Dzintars Avots <davots@coverity.com>.
-
-       * Mono.Cecil/MethodDefinition.cs (Clone): fix cloning of
-       return types when they don't have a parameter.
-       Patch by Dzintars Avots <davots@coverity.com>.
-
-       * Mono.Cecil.Cil/CodeWriter.cs (ComputeMaxStack): compute max
-       stack more precisely. Based on a patch by Daniel Grunwald,
-       Contains code from Cecil.FlowAnalysis.
-
-       * Mono.Cecil.Cil/MethodBody.cs (Clone): make sure the
-       instruction linked list is properly constructed.
-
-2008-04-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-       * Mono.Cecil.Cil/ISymbolReader.cs:
-               Move reading of debugging symbols where it's possible to
-               reuse the existing Hashtable (offset, Instruction) in
-               the debugging libraries. Change interface to allow
-               passing the Hashtable.
-
-2008-04-15  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.csproj
-       * Mono.Cecil.dll.sources:
-               Add Mono.Cecil.Cil/OpCodeNames.cs to the build.
-
-       * Mono.Cecil.Cil/OpCodeNames.cs
-       * Mono.Cecil.Cil/OpCode.cs
-       * Mono.Cecil.Cil/OpCodes.cs:
-               Reduce the OpCode struct size to 8 bytes (instead of 36).
-               Based on the SRE.OpCode code found in corlib.
-
-2008-04-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/AssemblyDefinition.cs:
-               Short circut loop when module is found.
-
-2008-04-08  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/SecurityDeclarationReader.cs:
-               Implement resolving of SecurityDeclarations.
-
-2008-03-31  Jb Evain  <jbevain@novell.com>
-
-       Integrate patches from Dzintars Avots <davots@coverity.com>
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/DefaultImporter.cs
-         Mono.Cecil/MethodDefinition.cs:
-               Fix generic parameter cloning to avoid issues when
-               the constraint reference the parameter itself.
-
-       * Mono.Cecil/MethodBody.cs (Clone): deals with switches.
-
-       * Mono.Cecil/MethodBody.cs (Clone): clone the name of
-       the local variables.
-
-2008-03-30  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Avoid creating a BinaryReader+MemoryStream on LE archs for
-               GetConstant. Saves about 400KB for Gendarme.
-               Avoid a BinaryReader creation in GetConstant which saves
-               about 50KB for Gendarme.
-       * Mono.Cecil.Metadata/GuidHeap.cs:
-               Compute ideal capacity for Hashtable. Avoid memory allocation
-               if a single GUID is present (which is the case for all of
-               Mono 2.0 assemblies). Saves a whole 2KB for Gendarme ;-)
-       * Mono.Cecil.Binary/Image.cs:
-               Add internal GetSectionAtVirtualAddress to avoid creating
-               BinaryReader in some cases.
-       * Mono.Cecil.Binary/ResourceReader.cs:
-               Avoid a BinaryReader creation in SetInitialValue which saves
-               about 3000KB for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/CopyImageVisitor.cs:
-               Copy the cliheaders flags over the new assembly.
-               Patch by Oleksiy Gapotchenko <alex.s.gap@gmail.com>
-
-2008-03-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Use one and only Hashtable for caching instructions offsets.
-               Save tons of precious memory.
-
-2008-03-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Cil/OpCode.cs
-       * Mono.Cecil.Binary/RVA.cs
-       * Mono.Cecil.Binary/DataDirectory.cs:
-               Avoid boxing/unboxing when == or != operators are used.
-               Results in significant memory savings for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Protect from malformed RIDs.
-       * Mono.Cecil/AggressiveReflectionReader.cs:
-               Create the m_events and m_properties tables
-               even if they contains 0 elements.
-
-2008-02-26  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/ImageReader.cs:
-               Avoid throwing non desired exceptions.
-
-2008-02-25  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Avoid throwing in case a constant
-               is of type object.
-
-2008-02-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/DefaultImporter.cs:
-               Add support for importing function pointers. Based on a
-               patch by Andrea Carlo Ornstein <andrea.ornstein@st.com>.
-
-       * Mono.Cecil/ModuleDefinition.cs:
-               Add a Inject(FieldDef) overload for symmetry.
-               Patch by Andrea Carlo Ornstein <andrea.ornstein@st.com>.
-
-2008-02-16  Jb Evain  <jbevain@novell.com>
-
-       * CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/Utilities.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/Utilities.cs:
-               Use a good old traditional array instead of an
-               Hashtable. Based on a patch by Carlo Kok <ck@remobjects.com>.
-
-2008-02-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               deal with 2.1 corlib on Mono.
-
-2008-02-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodDefinition.cs:
-               add last Is method for semantics property.
-
-2008-02-05  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/TypeDefinition.cs:
-               System.Enum by itself is not a value type.
-               Fix #351879.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Properly read fnptr local variables. Fix #358507.
-
-       * Mono.Cecil.Binary/DefaultImporter.cs:
-               Import modifiers and sentinels, patch from:
-               Andrea Carlo Ornstein <andrea.ornstein@st.com>
-
-2008-02-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/CLIHeader.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               emit the proper cli header version for 1.1 and 2.0 cases.
-
-       * Mono.Cecil.Cil/CilWorker.cs: add callsite overloads.
-
-2008-01-10  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionHelper.cs: deal with complex arrays.
-
-2008-01-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Allow ldarg.s/ldloc.s/stloc.s to take a byte
-               instead of the actual parameter or variable. Fix #350606.
-
-2008-01-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ArrayType.cs:
-               Add a constructor with the array rank. Fix #351924.
-               Based on a patch by Rolf Kvinge <rkvinge@novell.com>.
-
-2008-01-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Allow ldarg/ldloc/stloc to take a integer
-               instead of the actual parameter or variable. Fix #350606.
-
-2008-01-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/DefaultImporter.cs:
-         Mono.Cecil/ReflectionHelper.cs:
-               Properly import nested types. Fix #351133.
-
-2008-01-03  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Properly emit null type constants. Fix #351141.
-               Patch by Rolf Kvinge <rkvinge@novell.com>.
-
-2007-12-30  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Check for null arguments. Fix #350857.
-
-2007-12-21  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Don't crash on force resolve for nested arrays
-               in custom attributes.
-
-2007-12-17  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/IMemberDefinition.cs: make IMemberDefinition
-       implement ICustomAttributeProvider.
-
-2007-12-15  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/AggressiveReflectionReader.cs: protect
-       against zeroed tokens.
-
-2007-12-15  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/ImageReader.cs: fix crash when reading
-       some non .net binaries.
-
-2007-11-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:      Change default read
-       value to true. Fix reading 2.0 security declaration format used by
-       MS compilers (#343553).
-
-2007-11-15     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fixed Optimize for ldc_i4
-
-2007-11-15     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil.Cil/DocumentLanguage.cs
-         Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-               Compact Framework support by using Guid(string) if CF_2_0 is defined
-
-2007-11-01  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodReturnType.cs: based on a patch by
-       Ivan <ivanjh@gmail.com>. Fix for cloning methods with
-       marshalers on return type.
-
-2007-10-31  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/ImageReader.cs: fix for the case where
-       the export table export zero functions.
-
-2007-10-18  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs: Add an Optimize method which
-       is the opposite of Simplify. Based on a patch by Carlo.
-
-       * Mono.Cecil.Cil/CodeWriter.cs: don't care about reducing MaxStack.
-
-2007-10-11  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/TypeReference.cs: add a IsNested helper property.
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Integrate patch for Carlo, start working on enum writing
-               in custom attribute.
-
-2007-10-09  Nestor Salceda  <nestor.salceda@gmail.com>
-
-       * mono-cecil.pc.in:  Updated the version number.
-
-2007-10-09  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/Instruction.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Move CodeWriter.GetSize (Instruction) to Instruction.
-
-       Integration of patches from Carlo Kok <ck@remobjects.com>:
-
-       * Mono.Cecil.Cil/Document.cs
-         Mono.Cecil.Cil/DocumentType.cs
-         Mono.Cecil.Cil/DocumentLanguage.cs
-         Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-               Use plain guids for Document properties so it's easy
-               for third party document providers to use their own.
-
-       * Mono.Cecil/ParameterDefinition.cs:
-               Clean or set the HasFieldMarshal flag when setting
-               MarshalSpecs on parameters.
-
-       * Mono.Cecil/AssemblyNameReference.cs:
-               Protect against null culture.
-
-       * Mono.Cecil/FieldDefinition.cs:
-               Clean or set the HasFieldMarshal flag when setting
-               MarshalSpecs on fields.
-
-       * Mono.Cecil/GenericInstanceType.cs:
-               Properly initialize the IsValueType from the element type.
-
-2007-10-09  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs: check for duplicates
-       in the MemberRef row.
-
-2007-10-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * standalone.make: Revert changes so standalone Cecil (in SVN) can
-       be built using this Makefile (required for Gendarme);
-       * README: Update build and bug instructions.
-
-2007-10-07  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs: first lookup assemblies
-       in the specified directories before trying the framework dir.
-
-2007-10-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/OpCode.cs: make that a struct again, it
-       make the 2.1 profile explode. Will investigate why.
-
-2007-10-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodCallingConvention.cs: Not a [Flag]
-
-2007-10-05  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/OpCode.cs: Change OpCode from struct to class
-       to avoid copying everything everytime.
-
-2007-09-28  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:
-               Adapt patch from Carlo Kok  <ck@remobjects.com>.
-               Properly read unicode string constants.
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:
-               Adapt patch from Carlo Kok  <ck@remobjects.com>.
-               For some MS assemblies, the security declaration contains
-               one zero byte.
-
-2007-09-24  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ModuleDefinition.cs: after a FullLoad, the symbol
-       reader is not needed anymore.
-
-2007-09-18  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Adapt a patch from Ivan <ivanjh@gmail.com>.
-               Fix cloning of the This parameter.
-
-2007-09-12  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/TypeSpec.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Deal with custom mods on typespecs.
-
-2007-09-12  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Binary/ImageReader.cs: some 64bits assemblies
-       have a strange header without import tables.
-
-2007-09-09  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/GenericContext.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/DefaultImporter.cs:
-               Better handling of generic instances of references, where
-               the number of generic parameters is not known.
-
-2007-09-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/MethodDefinition: add Is** methods for MethodImplAttributes.
-
-2007-09-04  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Adapt a patch by Ewout Prangsma <ewout@tallapplications.com>.
-               Cache the typespec tokens instead of the typespec themselves
-               because GenericParameters are somethimes considered as typespecs.
-
-2007-08-28  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/SymbolStoreHelper.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Generate proper variables signatures for symbols
-               stores.
-
-2007-08-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Deal with generic exceptions.
-
-2007-08-15  Jb Evain  <jbevain@novell.com>
-
-       * CodeGen/cecil.xml,
-         Mono.Cecil.Cil/OpCodes.cs:
-               Fix bug spotted by Jesse Jones, ldelem.any has a
-               stack behavior pop of popref, popi.
-
-2007-08-15  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/TypeReference.cs
-         Mono.Cecil/TypeSpecification.cs:
-               TypeSpecification.Module return the module of the elemen
-               type now.
-
-2007-08-13  Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * default.build
-         Mono.Cecil/AssemblyInfo.cs:
-               Ability to pass custom defines to the c# compiler through
-               the csc.defines property. KEYFILE can be used to force
-               an AssemblyKeyFile attribute on AssemblyInfo.cs so strongly
-               signed versions of Mono.Cecil can be produced on .net 1.1,
-               cf 1.0 and cf 2.0.
-
-2007-08-13  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Fix InsertBefore.
-
-2007-08-06  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Fix the linked list after an InsertBefore, InsertAfter.
-
-2007-08-02  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/PInvokeInfo.cs
-         Mono.Cecil/Resource.cs
-         Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil/PropertyDefinition.cs:
-
-               Add Isxxx properties based on the xxxAttributes enums.
-
-2007-07-23  Raja R Harinath  <rharinath@novell.com>
-
-       Fix 'make warnings'.
-       * Makefile (LIBRARY_PACKAGE): Set to none.
-       (install-local): Remove.
-
-2007-07-21  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/TypeReference.cs
-         Mono.Cecil/TypeSpecification.cs:
-               Add a new GetOriginalType () method.
-
-       * Mono.Cecil/MethodReference.cs
-         Mono.Cecil/MethodSpecification.cs:
-               Add a new GetOriginalMethod () method.
-
-2007-07-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Binary/Image.cs:
-               Update the fileinfo after writing an assembly
-               to a file.
-
-2007-07-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Signature/SignatureReader.cs:
-               Better handling of the sentil in the varargs methods.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/SentinelType.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix handling of varargs methods.
-
-2007-07-18  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Deal with non-sense instructions that some
-               obfuscators emit.
-
-       * Mono.Cecil/AggressiveReflectionReader.cs:
-               Deal with out of range properties.
-       * Mono.Cecil.Metadata/StringsHeap.cs:
-               Deal with out of range string indexes.
-
-2007-07-17  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AggressiveReflectionReader.cs:
-               Add some gards against zeroed tokens.
-
-       * Mono.Cecil.Metadata/Utilities.cs:
-               Return zero instead of throwing on invalid tags.
-               Allow Cecil to read assemblies partially broken
-               by some obfuscators.
-
-2007-07-14  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * default.build: Fix relative path to key. Avoid use of ugly foreach
-       contruct. Spaces to tabs.
-       * Mono.Cecil.csproj: Fix relative path to key.
-       * standalone.make: Fix relative path to key and config.make.
-
-2007-07-03  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               Expose a way to add default directories
-               where the assemblies are first looked for.
-
-2007-06-20  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/IReferenceImporter.cs => IImporter.cs
-         Mono.Cecil/DefaultReferenceImporter.cs => DefaultImporter.cs
-
-       * Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/DefaultReferenceImporter.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Move Cecil types import logic into
-               the DefaultReferenceImporter.
-
-               Needed by the merger and the extractor.
-
-2007-06-19  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Avoid invalid cast by properly simplifying
-               instructions.
-
-       * Mono.Cecil.Cil/OpCodes.cs:
-         CodeGen/cecil.xml:
-               leave.s is a macro instruction.
-
-       * Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/ParameterDefinition.cs:
-               Fix cloning.
-
-2007-06-18  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix custom mods for fields ref.
-
-2007-06-13  Jb Evain  <jbevain@novell.com>
-
-       Integrated patches by:
-       Paul Apostolescu <papostolescu@fortifysoftware.com>
-
-       * patch3:
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               In named args, objects are encoded as boxed.
-
-       * patch1:
-         Mono.Cecil/IMemberDefinition.cs
-         Mono.Cecil/Constants.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/AggressiveReflectionReader.cs:
-               Do not take into account special _Deleted
-               members.
-
-       * patch6:
-         Mono.Cecil/StructureReader.cs:
-               Read the flags of the references as well.
-
-       * patch5:
-         Mono.Cecil.Metadata/UserStringsHeap.cs:
-               Don't bother getting a string from the bytes
-               if the length is < 2 (0, or 0 + an encoding flag)
-
-       * patch4:
-         Mono.Cecil/ReflectionHelper.cs:
-               Update the value type flags of types
-               when they are imported if the type
-               reference was first seen as a type reference.
-
-       * patch2:
-         Mono.Cecil.Signature/SignatureWriter.cs:
-               Patch to handle nullref values for types in
-               custom attributes arguments.
-
-2007-06-13  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/StructureWriter.cs,
-         Mono.Cecil/ReflectionWriter.cs:
-               Revert the on demand creation of memberref.
-
-2007-06-12  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/CallSite.cs
-         Mono.Cecil/ModuleReference.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/AssemblyDefinition.cs
-         Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/AssemblyNameReference.cs
-         Mono.Cecil/MemberReference.cs
-         Mono.Cecil/Resource.cs
-         Mono.Cecil/ParameterReference.cs:
-               Implement explicitely IAnnotationProvider.
-
-2007-06-05  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/AssemblyNameReference.cs:
-               Cache the fullname when possible.
-
-2007-05-31  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/ModuleDefinition.cs:
-               Add types to the module and members to the context
-               on inject.
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               Improve resolve, works for people requiring
-               .net 1.0 assemblies when they only have 1.1.
-
-2007-05-30  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/DefaultAssemblyResolver.cs:
-               Add a RegisterAssembly method to register an
-               assembly to the cache without having to resolve it.
-
-       * Mono.Cecil/DefaultReferenceImporter.cs:
-               Make methods virtual.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.csproj
-         Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/IReferenceImporter.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/ImportContext.cs
-         Mono.Cecil/NullReferenceImporter.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ReflectionController.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/GenericContext.cs
-         Mono.Cecil/DefaultReferenceImporter.cs
-         Mono.Cecil/PropertyDefinition.cs:
-               Provide a IReferenceImporter to customize how
-               types are injected from an assembly to another.
-
-2007-05-28  Jb Evain  <jbevain@novell.com>
-
-       * Borrow annotations concept from boo ast node.
-         Should be useful for the linker.
-
-2007-05-23  Jb Evain  <jbevain@novell.com>
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Emit MemberReferences rows on demand.
-
-2007-05-16  Jb Evain  <jb@nurv.fr>
-
-       * Mono.Cecil.Binary/ImageReader.cs:
-               Fix reading of the debug header for
-               headers half way emitted by .net SRE.
-
-       * Mono.Cecil/BaseAssemblyResolver:
-               try to resolve unversionned assemblies.
-
-2007-05-09  Jb Evain  <jb@nurv.fr>
-
-       * Mono.Cecil.Binary/Image.cs:
-               Throw when rva cannot be resolved.
-
-       * Mono.Cecil.csproj
-         Mono.Cecil.Binary/ExportTable.cs
-         Mono.Cecil.Binary/BaseImageVisitor.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/IBinaryVisitor.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               When present, read the export table, so that people
-               reading non managed assemblies can use the Mono.Cecil.Binary
-               stuff.
-
-               Fix the bug when section name is 8 char long.
-
-               Based on a patch by Pavel Savara <pavel.savara@gmail.com>.
-
-2007-04-27  Jb Evain  <jb@nurv.fr>
-
-       * Mono.Cecil/AssemblyNameReference.cs:
-               Allow the computation of pktoken on CF_2_0.
-
-2007-04-25  Jb Evain  <jb@nurv.fr>
-
-       * Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/ISymbolWriter.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs
-               Start working on local var debug infos emitting.
-
-2007-04-08  Jb Evain  <jb@nurv.fr>
-
-       * Mono.Cecil/ParameterAttributes.cs:
-               ParameterAttributes.None
-
-2007-03-30  Jb Evain  <jb@nurv.fr>
-
-       * Collections:
-               Remove uneeded tests as an optimizations.
-               Based on a suggestion by Carlo Kok <ck@remobjects.com>.
-
-       * Mono.Cecil.Metadata/StringsHeap.cs:
-               Optimize GetStringAt, patch by:
-               Carlo Kok <ck@remobjects.com>
-
-2007-03-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Bump to 0.5.0.0 for the sake of our packagers friends.
-               Re-Bump to 0.5.0.1.
-
-       * Mono.Cecil/StructureWriter.cs:
-               Throw a NotSupportedException instead of a NIE
-               for mixed mode assemblies.
-
-2007-03-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Correct epilog for unicode user strings heap.
-
-2007-03-16  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/MethodBody.cs:
-               Add a MethodBody.Simplify method to expand
-               macros.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.csproj
-         Mono.Cecil.Cil/OpCode.cs
-         Mono.Cecil.Cil/OpCodes.cs
-         Mono.Cecil.Cil/Code.cs
-         CodeGen/cecil-gen.rb
-         CodeGen/templates/OpCodes.cs
-         CodeGen/templates/Code.cs:
-               Add a Code enumeration to simplify working with
-               OpCodes.
-
-2007-03-12  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/UserStringsHeap.cs:
-               Avoid trailing blank on some systems.
-
-2007-02-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Deal with sentinels on simple methodrefs.
-
-2007-02-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.csproj
-         CodeGen/cecil.xml
-         Mono.Cecil.Metadata/ParamPtr.cs
-         Mono.Cecil.Metadata/MethodSpec.cs
-         Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-         Mono.Cecil.Metadata/EventPtr.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/PropertyPtr.cs
-         Mono.Cecil.Metadata/FieldPtr.cs
-         Mono.Cecil.Metadata/MethodPtr.cs
-         Mono.Cecil.Metadata/IMetadataVisitor.cs:
-               Add *Ptr table definitions.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.csproj
-         Mono.Cecil/CallSite.cs
-         Mono.Cecil/IMethodSignature.cs
-         Mono.Cecil/SentinelType.cs
-         Mono.Cecil/FunctionPointerType.cs
-         Mono.Cecil/MethodReference.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Implement support for writing function pointers.
-               Based on a patch by Argiris Kirtzidis <akyrtzi@gmail.com>
-
-       * Mono.Cecil/Constants.cs:
-               Make it public due to some demands.
-
-2007-02-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               do not read enums if the resolution is not forced until
-               cecil knows how to write them.
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SzArray.cs
-         Mono.Cecil.Signatures/Array.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/TypeSpec.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               handle custom mods on arrays signatures.
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Handle fields TypeSpecs that have an initial value.
-               Based on a patch by Argiris Kirtzidis <akyrtzi@gmail.com>
-
-2007-01-29  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Save a byte ! Yeah !
-
-2006-12-18  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix a bug in reading MemberRef pointing to MethodDef.
-
-2006-12-16  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureReader.cs:
-               Prevent a NRE if we're reading a multi module
-               assembly through a stream if a module is not find.
-               Fix #80273.
-
-2006-12-07  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Allow an AssemblyDefinition to be written
-               more than once.
-
-2006-12-05  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Deal with nullref default parameters.
-
-2006-12-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Handle constant where the parameter is object
-               and the signature is something else.
-
-2006-11-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollection.cs:
-               Allow multiple typedefs with the same namespace+name
-               to be able to read unvalid assemblies.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/PropertySig.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               - Deal with modifiers on properties.
-               - Deal with non standard signatures when the byref
-               flag is placed after the custom modifiers.
-         Mono.Cecil/StructureReader.cs:
-               - Properly detect wether an assembli is a dll or not.
-
-               Based on a patch by Argiris Kirtzidis <akyrtzi@gmail.com>.
-
-2006-11-25  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/GenericArg.cs
-         Mono.Cecil.Signatures/GenericInstSignature.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Deal with modifiers for generic arguments.
-               Based on a patch by Argiris Kirtzidis <akyrtzi@gmail.com>.
-
-       * Mono.Cecil.Binary/ImageWriter.cs:
-               Fix a bug in writing rsrc sections.
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Do some refactoring.
-
-       * Mono.Cecil.Metadata/MetadataToken.cs:
-               Add a ctor to get a MetadataToken
-               from an integer token.
-
-2006-11-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/GuidAttribute.cs:
-               Fix for CF compilation.
-
-2006-11-16  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureReader.cs:
-               If an assembly has no managed assembly defined,
-               consider it as a dll.
-
-2006-11-08  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               Handles different kind of GAC on Windows.
-
-2006-11-07  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               Don't import the flags of an assembly name reference.
-
-2006-11-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/PropertyDefinition.cs:
-               Fix property cloning.
-               Patch by Alex Prudkiy <prudkiy@mail.ru>
-
-2006-10-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Use the proper generic context when reading memberrefs.
-
-2006-10-11  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/Document.cs:
-               Complete a little bit.
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:
-               Get rid of a lot of exceptions when creating the security
-               attribute.
-
-2006-10-10  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-         Mono.Cecil/CustomAttribute.cs:
-         Mono.Cecil.Signatures/SignatureReader.cs:
-         Mono.Cecil/SecurityDeclarationReader.cs:
-               Patch from: Eyal Alaluf  <eyala@mainsoft.com>.
-               Add support for resolving custom attributes that contain references
-               to enum in other assemblies.
-
-2006-10-09  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IRequireResolving.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/SecurityDeclarationReader.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Introduce the interface IRequireResolving implemented
-               by CustomAttribute and SecurityDeclaration for when they can't
-               be read without loading another assembly.
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:
-               Prevent Cecil to crash when it can not get the type
-               of the declaration.
-
-2006-10-04  Eyal Alaluf  <eyala@mainsoft.com>
-
-       * Mono.Cecil/StructureReader.cs:
-               Visit the module we load when a DLL has more then 1 module.
-         Mono.Cecil/AssemblyNameReference.cs:
-               Allow "PublicToken=null" when parsing an assembly full name.
-
-2006-10-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs
-         Mono.Cecil.Binary/ResourceReader.cs:
-               CompactFramework fix.
-
-2006-10-02  Jb Evain  <jbevain@gmail.com>
-
-       * implement IList on the named collections.
-
-       * implement the first bits of Win32 resources handling.
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               It does not make sense to import the assembly flags.
-
-2006-09-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/MethodDefinitionCollection.cs
-         Mono.Cecil/ConstructorCollection.cs
-         Mono.Cecil.Cil/InstructionCollection.cs
-         CodeGen/templates/IndexedCollection.cs
-               Fix StackOverlow.
-
-2006-09-27  Jb Evain  <jbevain@gmail.com>
-
-       * *Collection.cs: use CollectionBase when possible.
-
-2006-09-24  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/ISymbolStoreFactory.cs
-         Mono.Cecil.Cil/SymbolStoreHelper.cs:
-               Some more work on the debugging infos api.
-
-       * Mono.Cecil/MethodDefinitionCollection.cs
-         Mono.Cecil/ConstructorCollection.cs
-         CodeGen/templates/IndexedCollection.cs:
-               Fix the GetConstructor/GetMethod methods.
-               Based on a patch by Jon Chambers.
-
-2006-09-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Cil/ISymbolReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Cil/ISymbolWriter.cs
-         Mono.Cecil.Cil/SymbolStoreHelper.cs:
-               Working on the debug infos stuff.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Ensure custom attributes are read when they can be.
-               Patch by Sebastien Pouliot.
-
-2006-09-19  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Cil/Document.cs
-         Mono.Cecil.Cil/Instruction.cs
-         Mono.Cecil.Cil/SequencePoint.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/IScopeProvider.cs
-         Mono.Cecil.Cil/ISymbolReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Cil/ISymbolWriter.cs
-         Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-         Mono.Cecil.Cil/SymbolStoreHelper.cs
-         Mono.Cecil.Cil/ISymbolStoreFactory.cs
-         Mono.Cecil.Cil/ScopeCollection.cs
-         Mono.Cecil.Cil/Scope.cs:
-               Work on the architecture for debugging infos.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.Cil/Document.cs
-         Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-         Mono.Cecil.Cil/SequencePoint.cs
-         Mono.Cecil.Cil/ScopeCollection.cs
-         Mono.Cecil.Cil/BaseCodeVisitor.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/IScopeProvider.cs
-         Mono.Cecil.Cil/MethodBody.cs
-         Mono.Cecil.Cil/ICodeVisitor.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Cil/Scope.cs
-         Mono.Cecil.Cil/VariableDefinitionCollection.cs
-         CodeGen/cecil.xml:
-               First bits of the debug infos stuff.
-
-       * Mono.Cecil.Cil/InstructionCollection.cs
-         CodeGen/templates/IndexedCollection.cs:
-               The outside instruction has an offset of -1.
-
-       * Mono.Cecil.Cil/OpCodes.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/OpCode.cs
-         CodeGen/templates/OpCodes.cs:
-               Simpliest way of dealing with different opcodes.
-
-2006-09-07  Jb Evain  <jbevain@gmail.com>
-
-       * support PE32+ file format.
-
-       * Add an Outside instruction to an InstructionCollection.
-       Cleaner than the old null instruction.
-
-       * Mono.Cecil/MarshalSpec.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         CodeGen/cecil-mig.rb:
-               Refactor names from Desc to Spec.
-
-       * *Collection.cs:
-               Remove the unused events stuff.
-
-2006-08-31  Jb Evain  <jbevain@gmail.com>
-
-       * /!\ Breaking changes:
-               On the way to Cecil 0.5. Remove meaningless interfaces.
-               GenericParamAttributes -> GenericParameterAttributes
-               ParamAttributes -> ParamAttributes
-
-               I'll provide a migration path with a script.
-
-               Please do not use this revision, other changes are on the way.
-
-2006-08-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix a bug when reading some parameters.
-
-2006-08-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/ReflectionWriter.cs:
-               Fix the computation of the size of the last opcode in case
-               of an exception handler is pointing outside the cil stream.
-
-       * Mono.Cecil.Cil/ReflectionWriter.cs:
-               Don't use seh tiny headers when the size can't fit in a byte.
-
-       * Mono.Cecil.Cil/ReflectionWriter.cs:
-               Fix a problem in the computation of the stack when the IL
-               is somewhat strange.
-
-2006-08-23  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Cecil 0.4.3 release.
-
-2006-08-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Fix a bug in field initial values writing.
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               Look for assemblies in ./ first
-
-2006-08-17  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/BaseAssemblyResolver.cs:
-               Resolve the corlib depending on its version.
-
-       * Mono.Cecil/AssemblyName.cs
-         Mono.Cecil/BaseAssemblyResolver.cs:
-               Implement a AssemblyNameReference.Parse(string)
-
-       * Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs:
-               Avoid infinite recursion.
-
-       * Mono.Cecil/BaseAssemblyResolver.sc:
-               Stay .net 1.1 compatible
-
-2006-08-16  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IAssemblyResolver.cs
-         Mono.Cecil/BaseAssemblyResolver.cs
-         Mono.Cecil/DefaultAssemblyResolver.cs
-         Mono.Cecil/AssemblyDefinition.cs
-               Implement an assembly resolver.
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix the initial value reading.
-               Based on a report and a patch of Roei Erez  <roeie@mainsoft.com>
-
-2006-08-15  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs:
-               Fix the CopyTo method.
-
-2006-07-19  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/IIndexedCollection.cs
-         CodeGen/templates/IndexedCollectionImplem.cs
-         Mono.Cecil/IConstructorCollection.cs
-         Mono.Cecil/IMethodDefinitionCollection.cs
-         Mono.Cecil/MethodDefinitionCollection.cs
-         Mono.Cecil/ConstructorCollection.cs:
-               Add a GetConstructor(bool,ParameterDefinitionCollection) method
-               required by the linker.
-
-       * Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/StringsHeap.cs:
-               Read the string on demand, based on the index.
-               Needed due to some obfuscators that create a string entry like
-               xClassName, and make the pointer points to after the x.
-
-2006-07-03     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-       * CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               CompactFramework compatibility.
-
-2006-07-02     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Proper FileNotFoundException construction.
-
-       * Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/IMethod.cs:
-               Helper properties IsInternalCall and IsRuntime.
-
-2006-06-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Fix ldc.i4.s emitting.
-
-2006-06-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Fix for compiling on CF 1.
-       * Mono.Cecil/StructureReader.cs:
-               Fix for a "bug" when csc 7.1 emits an assembly
-               with an assembly row, but no blob heap.
-               Plus style fix.
-
-2006-06-08  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Add a public HasBody property.
-
-2006-06-07  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Read and write method bodies only when allowed.
-
-2006-05-29  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethodDefinition.cs
-         Mono.Cecil/MethodDefinition.cs:
-               Remove the useless CreateBody method.
-
-2006-05-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil.Metadata/MetadataToken.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Play better with mixed mode assemblies.
-
-       * Mono.Cecil/SecurityDeclarationReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Read/Write this awful load of crap that is sharepoint.
-
-2006-05-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CilWorker.cs:
-               Fix #78479. Patch by David Emsellem.
-
-2006-05-20  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         CodeGen/templates/ImageWriter.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/Binary/ImageReader.cs
-         Mono.Cecil/Binary/Image.cs
-         Mono.Cecil/Binary/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               Optimize assembly writing.
-               Add methods to read assemblies from byte arrays.
-
-       * Mono.Cecil/StructureWriter.cs:
-               Throw an exception when the target is an exe
-               and no entry point have been setted.
-       * Mono.Cecil/AssemblyFactory.cs:
-               Add helpers method to defines assemblies.
-       * Mono.Cecil/MethodDefinition.cs:
-               Set the hasThis flag to the correct value.
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Remove old comment.
-       * Mono.Xml/SmallXmlParser.cs:
-               Make private.
-
-2006-05-18  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/MetadataTableReader.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/TableCollection.cs
-         Mono.Cecil.Metadata/TablesHeap.cs:
-               Optimize a little bit.
-
-       * CodeGen/templates/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/TableCollection.cs:
-               Fix for last changeset.
-
-       * Mono.Cecil.Metadata/RIdAttribute.cs:
-               deleted.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         CodeGen/templates/Utilities.cs
-         CodeGen/templates/MetadataTableReader.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/Table.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/Assembly.cs
-         Mono.Cecil.Metadata/InterfaceImpl.cs
-         Mono.Cecil.Metadata/PropertyMap.cs
-         Mono.Cecil.Metadata/Constant.cs
-         Mono.Cecil.Metadata/MethodSpec.cs
-         Mono.Cecil.Metadata/DeclSecurity.cs
-         Mono.Cecil.Metadata/TypeDef.cs
-         Mono.Cecil.Metadata/GenericParamConstraint.cs
-         Mono.Cecil.Metadata/MethodImpl.cs
-         Mono.Cecil.Metadata/NestedClass.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-         Mono.Cecil.Metadata/AssemblyRef.cs
-         Mono.Cecil.Metadata/AssemblyRefOS.cs
-         Mono.Cecil.Metadata/Method.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/ExportedType.cs
-         Mono.Cecil.Metadata/CustomAttribute.cs
-         Mono.Cecil.Metadata/Param.cs
-         Mono.Cecil.Metadata/ClassLayout.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/Utilities.cs
-         Mono.Cecil.Metadata/AssemblyOS.cs
-         Mono.Cecil.Metadata/ModuleRef.cs
-         Mono.Cecil.Metadata/FieldMarshal.cs
-         Mono.Cecil.Metadata/GenericParam.cs
-         Mono.Cecil.Metadata/ImplMap.cs
-         Mono.Cecil.Metadata/TableCollection.cs
-         Mono.Cecil.Metadata/TablesHeap.cs
-         Mono.Cecil.Metadata/TypeRef.cs
-         Mono.Cecil.Metadata/ManifestResource.cs
-         Mono.Cecil.Metadata/File.cs
-         Mono.Cecil.Metadata/EventMap.cs
-         Mono.Cecil.Metadata/AssemblyProcessor.cs
-         Mono.Cecil.Metadata/FieldLayout.cs
-         Mono.Cecil.Metadata/Event.cs
-         Mono.Cecil.Metadata/Field.cs
-         Mono.Cecil.Metadata/Property.cs
-         Mono.Cecil.Metadata/Module.cs
-         Mono.Cecil.Metadata/MethodSemantics.cs
-         Mono.Cecil.Metadata/StandAloneSig.cs
-         Mono.Cecil.Metadata/FieldRVA.cs
-         Mono.Cecil.Metadata/TypeSpec.cs
-         Mono.Cecil.Metadata/IMetadataTable.cs
-         Mono.Cecil.Metadata/MemberRef.cs:
-               Fix the way the metadata tables are handled.
-
-       * Mono.Cecil.Signatures/SignatureWriter.cs:
-               Fix bug in string writing.
-
-2006-05-12  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Hide the info if Cecil is embedded.
-
-2006-05-09  Jb Evain  <jbevain@gmail.com>
-
-       * cecil.build: rename to default.build
-
-2006-05-08  Jb Evain  <jbevain@gmail.com>
-
-       * Makefile:
-               Sign the assembly.
-
-       * cecil.csproj:
-               Add an msbuild file.
-
-2006-05-05  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Add an AssemblyFactory.GetAssemblyManifest method.
-
-2006-05-04  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TableComparers.cs:
-               TypeDef.Compare: the name is enough against <Module>.
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Fix writing of namedargs in custom attributes.
-
-2006-04-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Don't create tons of hashtables.
-
-2006-04-24  Jb Evain  <jbveain@gmail.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fix cloning.
-
-2006-04-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-               Use MemoryStream::WriteTo when it's possible.
-
-2006-04-21     Rodrigo B. de Oliveira  <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/ISecurityDeclaration.cs
-         Mono.Cecil/SecurityDeclarationCollection.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Patch by Almann T. Goo (almann.goo@gmail.com) conditionally
-               removing references to PermissionSet when compiling for the CompactFramework.
-
-       * Mono.Cecil/CompactFrameworkCompatibility.cs:
-               System.Security.PermissionSet definition no longer needed.
-
-2006-04-21  Jb Evain  <jbevain@gmail.com>
-
-       * *Collection.cs:
-               Fix typo in RemoveAt.
-
-2006-04-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Fix writing of complex arrays.
-               Now we roundtrip SharpDevelop.
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/TableComparers.cs:
-               Ensure <Module> will always be the first type.
-               Fix roundtrip of Nemerle.
-
-2006-04-19  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs:
-               Handle the case where an handler points after the last
-               instruction. Now we roundtrip db4o.
-
-       * Mono.Cecil/IIndexedCollection.cs:
-         *Collection.cs:
-               Make every collection implement an indexed collection.
-
-2006-04-15  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/CustomAttribute.cs:
-               Fix handling of types.
-
-2006-04-11  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/IField.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil.Cil/IVariable.cs
-         Mono.Cecil.Cil/MethodBody.cs
-         Mono.Cecil.Cil/VariableDefinition.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Don't use interfaces internally.
-
-       * Mono.Cecil/TypeReference.cs:
-               Make TypeReference extend MemberReference.
-
-       * Mono.Cecil/Modifiers.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Signatures/LocalVarSig.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix modifiers on localvar signatures.
-               Fix roundtrip of delphi assemblies.
-
-       * Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Work on complex custom attributes encoding.
-
-       * Mono.Cecil/TableComparers.cs:
-               Style.
-
-2006-04-09  Eyal Alaluf  <eyala@mainsoft.com>
-
-    * Mono.Cecil/ReflectionReader.cs
-           Cannot assume that TypeRefs are ordered is such a way that an outer
-               class index comes always before all its inner classes.
-
-2006-04-06  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Clean up things a little bit prior ending
-               custom attribute encoding.
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Write custom attributes of parameters
-               onyl when all methods have their tokens.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/AggressiveReflectionReader.cs:
-               Handle custom attributes on generic parameters.
-
-2006-04-05  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Ensure the param[0] is written when it should be.
-
-2006-04-04  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               Remove an unused hack.
-
-       * Mono.Cecil/AssemblyInfo.cs: Go 0.4.1
-
-       * Mono.Cecil.Metadata/MetadataHeap.cs
-         Mono.Cecil.Metadata/MetadataStream.cs:
-               Read #- stream has well.
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               Implement Import stuff for System.Type and SR.*
-
-2006-04-03     Rodrigo B. de Oliveira  <rodrigobamboo@gmail.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs
-         Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/CompactFrameworkCompatibility.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/AssemblyName.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         Mono.Cecil.Metadata/CultureUtils.cs
-         cecil.build:
-               CompactFramework 2.0 support through CF_2_0 compilation symbol.
-
-2006-04-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/ImportContext.cs
-         Mono.Cecil/AssemblyName.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/GenericContext.cs
-         Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil/PropertyDefinition.cs
-         Mono.Cecil.Cil/MethodBody.cs:
-               Work on generic assemblies manipulation via
-               import stuff.
-
-2006-03-31  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFlags.cs:
-               Add a Retargetable flag used on the CF.
-
-2006-03-30  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/SecurityDeclarationReader.cs:
-               Don't crash if the declaration is empty.
-
-       * Mono.Cecil/ParamAttributes.cs:
-               Update the Optional flag.
-         Mono.Cecil/ReflectionWriter.cs:
-               Fix the encoding of nullref.
-               Fixes #77959. Based on a patch by
-               Armand Du Plessis < armand@dotnet.org.za>
-
-2006-03-29  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IHasSecurity.cs
-         Mono.Cecil/IHasConstant.cs
-         Mono.Cecil/IHasMarshalSpec.cs:
-         Mono.Cecil/MethodReturnType.cs
-         Mono.Cecil/AssemblyDefinition.cs:
-               Implement IMetadataTokenProvider.
-
-       * Mono.Cecil/StructureReader.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Use more the token providers.
-
-2006-03-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/MarshalDesc.cs
-         Mono.Cecil/IMarshalSpec.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Fix round-tripping of assemblies using
-               COM stuff.
-
-2006-03-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataToken.cs:
-               Override GetHashCode as we override Equals.
-
-       * Mono.Cecil/TableComparers.cs:
-               Fix the ordering of generic parameters.
-               This revision roundtrips C5. Yeah!
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Fix method spec "caching"
-         Mono.Cecil.Cil/OpCode.cs:
-               Override ToString ();
-         Mono.Cecil.Metadata/MetadataToken.cs:
-               Implement operator ==
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/TableComparers.cs:
-               Better handling of generic tables sorting.
-
-       * Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/TableComparers.cs:
-               Sort generic tables as well.
-
-2006-03-27     Rodrigo B. de Oliveira  <rodrigobamboo@gmail.com>
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Use CompactFramework compatible version of
-               System.Convert.ToBase64String.
-
-2006-03-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/ConstraintCollection.cs
-         Mono.Cecil/IGenericParameter.cs
-         Mono.Cecil/IConstraintCollection.cs
-         CodeGen/cecil.xml:
-               Add a ConstraintCollection to be used within
-               generic parameters.
-
-       * Mono.Cecil/GenericInstanceType.cs:
-               Correctly return if the instance is a value type
-               or not.
-
-2006-03-25  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ModuleDefinition.cs:
-               Support the unreadable security declarations
-               when converting one to byte [].
-
-       * Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Add a FullLoad method on a module.
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Fix a  few bugs in generics type emitting.
-
-       * Mono.Cecil.Cil/CodeWriter.cs:
-               Cache local sig as well.
-
-2006-03-24  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Cache method specs as well.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Replace the foreach char pattern by
-               Encoding.GetBytes
-
-2006-03-23  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/ImageReader.cs:
-               Ensure type with the same name are added
-               to the collection.
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Ensure every blob signature is unique.
-
-       * Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Rename method to avoid confusion.
-
-2006-03-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs:
-               Precisely detect whether we emit fat seh or not.
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Avoid duplicates in the typespec table.
-
-2006-03-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               Correctly write generic parameters.
-
-       * Mono.Cecil/SecurityDeclarationReader.cs
-         Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Fix for security declarations reading on .net 2.0.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/GenericContext.cs:
-               Fix test case RoundtripTestFixture.boo.
-
-2006-03-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataReader.cs:
-               #Strings heap is utf8, fix #77820.
-
-2006-03-08  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen-tests.rb
-         CodeGen/templates/Tests.cs:
-               Start of a very small infrastructure to use tests from
-               rotor/mono with Cecil.
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Add support for the very special case ldarg 0.
-               Patch idea by Vladislav Spivak <spivak@mainsoft.com>
-
-2006-03-07  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Allow users to get a loaded image using
-               Image.GetImage as they have no access to
-               the ImageReader.
-
-2006-03-06  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix array reading in custom attributes.
-
-2006-03-06  Joshua Tauberer <tauberer@for.net>
-
-       * Mono.Cecil/TypeAttributes.cs: Fixed typo
-         in value for Abstract.
-
-2006-02-27  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/IIndexedCollection.cs
-         Mono.Cecil.Cil/InstructionCollection.cs
-         Mono.Cecil.Cil/IInstructionCollection.cs:
-               Small API fix, prevent the user from not using
-               the CilWorker.
-
-       * Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/Label.cs:
-               Remove Label.
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix typo.
-
-2006-02-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/SignatureWriter.cs:
-               Fix a bug when a value is null in a custom attribute.
-
-2006-02-20  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Fix GetStrongNameSignatureSize to handle the ECMA pseudo-key.
-
-2006-02-07  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyInfos.cs:
-               Tag this version 0.3, as users are happy with it.
-
-2006-01-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/CustomAttribute.cs:
-               Fix cloning of non readable attributes.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Signatures/MethodRefSig.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs
-         Mono.Cecil.Signatures/MethodDefSig.cs:
-               Work on generics.
-
-       * Mono.Cecil/ArrayType.cs
-         Mono.Cecil/ReferenceType.cs
-         Mono.Cecil/PointerType.cs:
-               Fix names of typespecs.
-
-       * Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs:
-               Allow multiple key by names in type references.
-
-2006-01-25  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs:
-               Don't trap exceptions.
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/IMethod.cs
-         Mono.Cecil/GenericInstanceType.cs
-         Mono.Cecil/TypeReference.cs
-         Mono.Cecil/GenericInstanceMethod.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/IGenericArgumentCollection.cs
-         Mono.Cecil/ITypeReference.cs
-         Mono.Cecil/IGenericInstance.cs
-         Mono.Cecil/GenericArgumentCollection.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/MethodReference.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/IGenericArgumentProvider.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/GenericContext.cs
-         CodeGen/cecil.xml:
-               Clean the generic api. This is not stable yet.
-
-2006-01-24  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ArrayType.cs:
-               Bug reported by  Vladislav Spivak (spivak@mainsoft.com).
-               Fix a bug in array handling.
-       * Mono.Cecil/ConstructorCollection.cs
-         CodeGen/templates/IndexedCollectionImplem.cs:
-               Bug reported by Oleg Varchovsky (olegv@mainsoft.com).
-               Fix the lookup of constructors.
-
-2006-01-19  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyName.cs:
-               Fix computation of public key token.
-
-2006-01-18  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Metadata/MetadataToken.cs:
-               Add an use an ToUInt method and use it.
-         CodeGen/templates/DebugHeader.cs
-         Mono.Cecil.Binary/DebugHeader.cs:
-               Fix the size of the debug header.
-
-       * Mono.Cecil/ModuleReference.cs
-         Mono.Cecil/AssemblyName.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/IMetadataScope.cs:
-               Make IMetadataScope implement IMetadataTokenProvider.
-       * Mono.Cecil/ReflectionWriter.cs:
-               Fix a typo when saving nested type refs.
-
-2006-01-17  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ArrayType.cs
-         Mono.Cecil/ArrayDimension.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               End arrays support.
-
-2006-01-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/GenericContext.cs:
-               Work on generics.
-
-2005-12-31  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               Fix import of type specs.
-
-2005-12-30  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Add support to assemblies where the metadata is defined
-               outside of the text section. (c++/cli /safe for instance)
-
-2005-12-23  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Version 0.2.2.2 devel.
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Version 0.2 to be released.
-
-       * Mono.Cecil/ReflectionWriter.cs:
-               IGenericInstance are typespecs as well.
-
-       * Mono.Cecil/ArrayType.cs:
-               Add a single dimension in the default ctor.
-       * Mono.Cecil/ReflectionReader.cs:
-               Don't manually add the default dimension as it's done
-               int the array type ctor.
-       * Mono.Cecil/ReflectionHelper.cs:
-               Import type specs.
-
-2005-12-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionWriter:
-               Write pinvoke infos as well.
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Unsure that primitive value types are viewed as
-               value types.
-
-       * CodeGen/templates/Section.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/Section.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Simplify the way you read binary data whithin
-               high level layer.
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Make helper methods public static.
-       * Mono.Cecil/ReflectionReader.cs:
-               Don't try to get the entry point method
-               if it don't point on a valid method RID.
-
-       * CodeGen/templates/NamedCollectionImplem.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         Mono.Cecil/TypeReferenceCollection.cs:
-               Don't add existing values.
-
-       * Mono.Cecil/ModuleDefinition.cs:
-               Protect import from null refs.
-
-2005-12-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureWriter.cs:
-               Don't increment pdb age. Not Cecil's job.
-
-       * Mono.Cecil.Cil/ICilWorker.cs
-         Mono.Cecil.Cil/CilWorker.cs:
-               Add a new replace method.
-
-2005-12-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/StructureWriter.cs:
-               Ensure every assembly reference is processed.
-
-       * Mono.Cecil/ReflectionHelper.cs:
-               Don't assume the cache is magically loaded.
-               Aka: most stupid bug of the year.
-
-2005-12-19  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/DebugHeader.cs
-         Mono.Cecil.Binary/DebugHeader.cs
-         Mono.Cecil.Binary/DebugStoreType.cs:
-               New files to store debug header infos.
-       * Mono.Cecil.dll.sources: updated
-       * CodeGen/cecil.xml
-         CodeGen/cecil-gen.rb
-         Mono.Cecil/StructureWriter.cs
-         Mono.Cecil.Binary/IBinaryVisitor.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/BaseImageVisitor.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               Read and write debug header.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Revert revision 54409.
-
-2005-12-14  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/ICilWorker.cs
-         Mono.Cecil.Cil/CilWorker.cs:
-               Add a remove method.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Don't allocate potential big arrays here.
-
-2005-12-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Set the correct version for .net 2 assemblies.
-               Correctly write embedded resources.
-               Fix #76963.
-
-2005-12-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/MethodSpecification.cs:
-               Override the declaring type and the name property to
-               match the inner method.
-       * Mono.Cecil/GenericInstanceType.cs:
-               Correctly set the FullName.
-       * Mono.Cecil/GenericInstanceMethod.cs:
-               Style.
-
-2005-12-02  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeDefinition.cs:
-               Fix interface import. Patch by Thomas Gil.
-
-2005-11-24  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen.rb
-         CodeGen/templates/MetadataTableReader.cs
-         CodeGen/templates/PEFileHeader.cs
-         CodeGen/templates/CLIHeader.cs
-         CodeGen/templates/PEOptionalHeader.cs
-         CodeGen/templates/Table.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/OpCodes.cs
-         CodeGen/templates/Section.cs
-         CodeGen/templates/ImageReader.cs:
-               Update the codegen engine so that everyone can run it
-               without having to install a dependency (eruby).
-
-       * Mono.Cecil.Metadata/Utilities.cs: re-codegenerated.
-
-2005-11-23  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IGenericArgumentProvider.cs
-               Style.
-       * CodeGen/cecil.xml:
-               Mirror Martin's change in the codegen engine.
-
-2005-11-23  Martin Baulig  <martin@ximian.com>
-
-       Generics API changes:
-       TypeReference and MethodReference now contain a
-       `GenericArguments' property (of type `GenericArgumentCollection')
-       and `GenericParameters' is moved into TypeDefinition/MethodDefinition.
-
-       * Mono.Cecil/IGenericArgumentProvider.cs: New file.
-       (IGenericArgumentProvider): New public interface.
-
-       * Mono.Cecil/IGenericArgumentCollection.cs
-       (IGenericArgumentCollection.Container): Changed type from
-       `IGenericInstance' -> `IGenericArgumentProvider'.
-
-       * Mono.Cecil/IGenericInstance.cs
-       (IGenericInstance.Arguments): Renamed to `GenericArguments'.
-
-       * Mono.Cecil/ITypeReference.cs
-       (ITypeReference): Implement `IGenericArgumentProvider' instead of
-       `IGenericParameterProvider'.
-
-       * Mono.Cecil/ITypeDefinition.cs
-       (ITypeDefinition): Implement `IGenericParameterProvider'.
-
-       * Mono.Cecil/IMethod.cs
-       (IMethodReference): Implement `IGenericArgumentProvider' instead of
-       `IGenericParameterProvider'.
-       (IMethodDefinition): Implement `IGenericParameterProvider'.
-
-       * Mono.Cecil/TypeReference.cs
-       (TypeReference.GenericParameters): Removed.
-       (TypeReference.GenericArguments): New public property.
-
-       * Mono.Cecil/TypeDefinition.cs
-       (TypeDefinition.GenericParameters): New public property.
-       (TypeDefinition.OnGenericParameterAdded): If a generic parameter
-       is added, also add it to the `GenericArguments'.
-
-       * Mono.Cecil/MethodReference.cs
-       (MethodReference.GenericParameters): Removed.
-       (MethodReference.GenericArguments): New public property.
-
-       * Mono.Cecil/MethodDefinition.cs
-       (MethodDefinition.GenericParameters): New public property.
-       (MethodDefinition.OnGenericParameterAdded): If a generic parameter
-       is added, also add it to the `GenericArguments'.
-
-       * Mono.Cecil/GenericInstanceType.cs
-       (GenericInstanceType): Removed the `m_arguments' field; we now
-       inherit the `GenericArguments' property from `TypeReference'.
-
-       * Mono.Cecil/GenericInstanceMethod.cs
-       (GenericInstanceMethod): Removed the `m_arguments' field; we now
-       inherit the `GenericArguments' property from `MethodReference'.
-
-       * Mono.Cecil/GenericContext.cs
-       (GenericContext): We now operate on type/method references and not
-       definitions.
-       (GenericContext.Type): Changed type to `TypeReference'.
-       (GenericContext.Method): Changed type to `MethodReference'.
-
-2005-11-23  Martin Baulig  <martin@ximian.com>
-
-       * Mono.Cecil.Metadata/TokenType.cs: Added `GenericParam'.
-
-       * Mono.Cecil.Metadata/Utilities.cs
-       (GetMetadataToken): In `case CodedIndex.HasCustomAttribute', add
-       `TokenType.GenericParam'.
-
-2005-11-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethodDefinitionCollection.cs
-         Mono.Cecil/MethodDefinitionCollection.cs
-         CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/IIndexedCollection.cs:
-               Add a new search method.
-       * CodeGen/templates/NamedCollectionImplem.cs
-         Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/TypeDefinitionCollection.cs:
-               Style.
-
-2005-11-13     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-       * Mono.Cecil/ReflectionReader.cs
-               Fix for NRE when reading assemblies with a field initializer
-               pointing to a data section
-               (TestCases/Regression/OddInt64Initializer.dll).
-
-2005-11-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs
-               Add support for different strongname key size (between 384
-               and 16384 bits) as now supported in fx 2.0. Default is still
-               1024 bits.
-
-2005-11-10     Rodrigo B. de Oliveira <rodrigobamboo@gmail.com>
-       * Mono.Cecil/CompactFrameworkCompatibility.cs
-         Mono.Cecil/SecurityDeclarationReader.cs
-         Mono.Cecil/TypeReferenceCollection.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/AssemblyName.cs
-         Mono.Cecil/ExternTypeCollection.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/TypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/CultureUtils.cs
-         Mono.Xml/SecurityParser.cs
-         Mono.Xml/SmallXmlParser.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         cecil.build
-               Implement support for compiling on the CompactFramework
-
-2005-11-08  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/GenericInstanceType.cs
-         Mono.Cecil/TypeReference.cs:
-               Fix a regression with 2.0 assemblies.
-
-2005-11-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/CallSite.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/ICallSite.cs
-         Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.dll.sources:
-               Implement support for calli opcodes reading.
-
-2005-11-01  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/FunctionPointerType.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Work on function pointers.
-
-       * Mono.Cecil/AssemblyInfo.cs:
-               Increase Cecil SVN version.
-
-       * Mono.Cecil/ArrayType.cs
-         Mono.Cecil/MethodSpecification.cs
-         Mono.Cecil/TypeSpecification.cs
-         Mono.Cecil/IMethodSpecification.cs
-         Mono.Cecil/GenericInstanceType.cs
-         Mono.Cecil/IGenericInstanceType.cs
-         Mono.Cecil/GenericInstanceMethod.cs
-         Mono.Cecil/IModifierType.cs
-         Mono.Cecil/IPinnedType.cs
-         Mono.Cecil/ReferenceType.cs
-         Mono.Cecil/IGenericInstanceMethod.cs
-         Mono.Cecil/PinnedType.cs
-         Mono.Cecil/PointerType.cs
-         Mono.Cecil/IPointerType.cs
-         Mono.Cecil/IReferenceType.cs
-         Mono.Cecil/IArrayType.cs
-         Mono.Cecil/ITypeSpecification.cs
-         Mono.Cecil/Modifiers.cs
-         Mono.Cecil.dll.sources:
-               Uniformize the specification model.
-
-2005-10-31  Jb Evain  <jbevain@gmail.com>
-
-       * AUTHORS,
-         NEWS,
-         README,
-         TODO,
-         Mono.Cecil/AssemblyInfo.cs:
-               Cecil 0.1 release.
-
-       * Mono.Cecil/ReflectionReader.cs:
-               Force value type property on known core types.
-
-2005-10-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeReference.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Uniformize the API.
-
-       * Mono.Cecil.Signatures/SignatureWriter.cs:
-               Correct a bug in strings encoding in custom attributes.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Implement a big of public key management,
-               here we reserve space for the strong name
-               signature if needed.
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/StructureReader.cs:
-               Disable public key writing until
-               it is implemented.
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/TypeReference.cs
-         Mono.Cecil/MethodReference.cs:
-               Work on generics writing api.
-       * Mono.Cecil/ReflectionReader.cs:
-               Fix a bug when defining a fresh assembly.
-
-       * Mono.Cecil/GenericInstanceType.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/IGenericParameterProvider.cs
-         Mono.Cecil.Signatures/Var.cs
-         Mono.Cecil.Signatures/MVar.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs
-         Mono.Cecil.Cil/CodeWriter.cs:
-               Work on generics writing.
-
-2005-10-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CilWorker.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Cil/OpCode.cs:
-               Override op == and != on opcodes.
-
-       * Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/PropertyDefinition.cs:
-               Fix setters working on attributes.
-
-       * Mono.Cecil.Cil/CodeWriter.cs:
-               Compute max stack before writing method.
-
-       * Mono.Cecil/GenericContext.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Work on generics support.
-
-       * CodeGen/cecil.xml
-         Mono.Cecil/ISecurityDeclarationCollection.cs
-         Mono.Cecil/SecurityDeclarationCollection.cs:
-               Remove the security declaration from the codegen.
-
-2005-10-27  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil\SecurityDeclaration.cs
-               Copy the permission set when cloning.
-       * Mono.Cecil\SecurityDeclarationCollection.cs
-               Ajusted to use an Hashtable, to Union permission sets on
-               the same action and to set/unset HasSecurity when needed.
-       * Mono.Cecil\ModuleDefinition.cs:
-               Added TODO (remainder) for complete 2.0 format support.
-       * Mono.Cecil\ReflectionWriter.cs:
-               Move MetadataToken finding outside the loop.
-       * Mono.Cecil\ISecurityDeclarationCollection.cs:
-               Adjust interface.
-
-2005-10-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/MethodDefinition.cs:
-               Add generics parameters in visitor path.
-
-       * Mono.Cecil/GenericParamAttributes.cs:
-               Add new constraints flags.
-
-2005-10-22  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/IGenericParameter.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil/GenericContext.cs:
-               Support generic parameters constraints.
-
-2005-10-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil/PropertyDefinition.cs:
-               Implement ICloneable.
-
-       * Mono.Cecil/IAssemblyDefinition.cs:
-               Mirror changes on asm kind.
-       * Mono.Cecil/StructureReader.cs:
-               Fix asm kind detection.
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Fix regressions.
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fix method cloning.
-
-       * CodeGen/templates/MetadataTableReader.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/MetadataReader.cs:
-               Add helpers for reading.
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil/GenericContext.cs:
-               Working on generic parameters reading.
-               Still have troubles reading a 2.0 corlib.
-
-       * Mono.Cecil/IHasMarshalSpec.cs:
-               API fix.
-
-       * Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil.Cil/VariableDefinition.cs:
-               Override ToString.
-
-2005-10-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/CodeReader.cs
-         Mono.Cecil.Cil/CodeWriter.cs
-         Mono.Cecil.Cil/ICilWorker.cs
-         Mono.Cecil.Cil/CilWorker.cs:
-               ShortInlineI operands are signed.
-               Spotted by Rodrigo B. de Oliveira.
-
-       * CodeGen/templates/OpCodes.cs
-         Mono.Cecil.Cil/OpCodes.cs:
-               Add 2.0 opcodes.
-
-       * Mono.Cecil/StructureWriter.cs
-         Mono.Cecil/AssemblyDefinition.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/ReflectionWriter.cs:
-               Handle the assembly kind in a smoothie way.
-
-2005-10-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Mono.Cecil/AssemblyDefinition.cs: Added an override for ToString to
-       ease debugging.
-       * Mono.Cecil/ModuleDefinition.cs: Make SecurityDeclaration works with
-       2.0 assemblies.
-       * Mono.Cecil/ReflectionReader.cs: Modified BuildSecurityDeclaration
-       to use the new SecurityDeclarationReader (supporting both formats).
-       * Mono.Cecil/SecurityAction.cs: Removed actions that were "cutted" out
-       of 2.0 final.
-       * Mono.Cecil/SecurityDeclarationReader.cs: New. Handle both the 1.x
-       and 2.0 formats for reading declarative security.
-
-2005-10-18  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/GenericParameter.cs:
-               A little change before the fix.
-
-       * Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil.Cil/MethodBody.cs:
-               Implement method cloning.
-
-       * Mono.Cecil/ModuleReference.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/TypeReference.cs
-         Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/FieldReference.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/PropertyDefinition.cs
-         Mono.Cecil/AssemblyFactory.cs:
-               Small API change.
-
-       * Mono.Cecil.Cil/CodeReader.cs:
-               Fix variables names.
-
-       TODO before 0.1:
-               Fix generic parameters,
-               generic writing,
-               constructor changes (with S.Type and SR.*Info)
-
-2005-10-14  Jb Evain  <jbevain@gmail.com>
-
-       Work on generics support.
-
-       * CodeGen/cecil.xml: new collections, coded indexes, opcodes.
-
-       * Mono.Cecil/IGenericParameterCollection.cs
-         Mono.Cecil/GenericParameterCollection.cs
-         Mono.Cecil/IGenericArgumentCollection.cs
-         Mono.Cecil/GenericArgumentCollection.cs:
-               Added new collections.
-
-       * Mono.Cecil.Metadata/Utilities.cs: updated.
-       * Mono.Cecil.Metadata/TokenType.cs: added MethodSpec.
-
-       * Mono.Cecil/IGenericParameter.cs
-         Mono.Cecil/GenericParameter.cs
-         Mono.Cecil/IGenericParameterConstraints.cs
-         Mono.Cecil/GenericParameterConstraints.cs
-         Mono.Cecil/IGenericParameterProvider.cs
-         Mono.Cecil/IGenericInstance.cs
-         Mono.Cecil/IGenericInstanceType.cs
-         Mono.Cecil/GenericInstanceType.cs
-         Mono.Cecil/IGenericInstanceMethod.cs
-         Mono.Cecil/GenericInstanceMethod.cs:
-               Generics API elements.
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil/MethodReference.cs
-         Mono.Cecil/ITypeReference.cs
-         Mono.Cecil/TypeReference.cs:
-               Implement IGenericParameterProvider
-
-       * Mono.Cecil/ReflectionReader.cs
-         Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/StructureReader.cs
-         Mono.Cecil/AggressiveReflectionReader.cs
-         Mono.Cecil/MemberReference.cs:
-               Support for the new generics elements.
-
-       * Mono.Cecil.Signatures/Var.cs
-         Mono.Cecil.Signatures/MVar.cs
-         Mono.Cecil.Signatures/GenericInstSignature.cs
-         Mono.Cecil.Signatures/GenericInst.cs:
-               Added file header.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/GenericInstSignature.cs
-         Mono.Cecil.Signatures/MethodDefSig.cs
-         Mono.Cecil.Signatures/GenericInst.cs
-         Mono.Cecil.Signatures/MethodSpec.cs
-         Mono.Cecil/MethodCallingConvention.cs
-         Mono.Cecil.Cil/CodeReader.cs:
-               Added support for generic signatures.
-
-       * Mono.Cecil.Cil/OpCodes.cs:
-               Add consrained. opcode.
-
-       * Mono.Cecil.dll.sources:
-               Updated.
-
-       Known problems: !!parameters
-
-2005-10-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/FieldDefinition.cs
-         Mono.Cecil/CustomAttribute.cs
-         Mono.Cecil/MethodReturnType.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/SecurityDeclaration.cs
-         Mono.Cecil/MethodDefinition.cs
-         Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ParameterDefinition.cs
-         Mono.Cecil/IMethodReturnType.cs
-         Mono.Cecil/PropertyDefinition.cs
-         Mono.Cecil.Cil/MethodBody.cs:
-               Work on the import.
-       * Mono.Cecil/ITypeParameterType.cs
-         Mono.Cecil/TypeParameterType.cs:
-               Correct the interface.
-
-2005-10-12  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/EventDefinition.cs
-         Mono.Cecil/TypeDefinition.cs
-         Mono.Cecil/ModuleDefinition.cs
-         Mono.Cecil/ReflectionWriter.cs
-         Mono.Cecil/PropertyDefinition.cs:
-               Small fixes.
-
-2005-09-16  Martin Baulig  <martin@ximian.com>
-
-       Added generics support to Cecil.
-
-       * Mono.Cecil/IGenericInstType.cs: New file.
-       * Mono.Cecil/ITypeParameterType.cs: New file.
-       * Mono.Cecil/IMethodTypeParameterType.cs: New file.
-
-       * Mono.Cecil.Metadata/ElementType.cs
-       (ElementType): Added `Var', `MVar' and `GenericInst'.
-
-       * Mono.Cecil.Metadata/Utilities.cs
-       (Utilities.GetMetadataToken): .NET 2.0 also uses TypeDef's in the
-       MemberRefParent.
-
-       * Mono.Cecil/GenericInstType.cs: New file.
-       * Mono.Cecil/MethodTypeParameterType.cs: New file.
-       * Mono.Cecil/TypeParameterType.cs: New file.
-
-       * Mono.Cecil.Signatures/Var.cs: New file.
-       * Mono.Cecil.Signatures/MVar.cs: New file.
-       * Mono.Cecil.Signatures/GenericInst.cs: New file.
-       * Mono.Cecil.Signatures/GenericInstSignature.cs: New file.
-
-       * Mono.Cecil/ReflectionReader.cs
-       (ReflectionReader.GetTypeRefFromSig): Add the new types.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs
-       (SignatureReader.ReadType): Add the new types.
-
-2005-10-06  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ReflectionHelper.cs
-         Mono.Cecil/ModuleDefinition.cs:
-               Fix a bug in type importing.
-
-2005-10-06  Jb Evain  <jbevain@gmail.com>
-
-       * Hopefully, this is the last API change before the release of Cecil 0.1.
-         Mono.Cecil.Implem has been moved to Mono.Cecil. The interfaces where
-         very convenient for a reading API, it was far less convenient for a
-         modification and writing one. The modification API still needs some work,
-         but this should be easier this way.
-
-2005-09-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataReader.cs:
-               Fix resources reading.
-
-       * Mono.Cecil.Implem/StructureWriter.cs:
-               Correctly set the offset of resources in the manifest.
-       * Mono.Cecil.Implem/StructureFactories.cs:
-               Use correct overrides when creating assembly references.
-       * Mono.Cecil.Implem/ReflectionFactories:
-               Correctly create type references.
-
-2005-09-06  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IReflectionFactories.cs
-         Mono.Cecil.Implem/ReflectionFactories.cs:
-               Allow the creation of reference types for methods
-               parameters and return types.
-       * Mono.Cecil.Cil/ICilWorker.cs
-         Mono.Cecil.Implem/CilWorker.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs:
-               Global fix on the handling of parameters in instructions.
-       * Mono.Cecil.Implem/AssemblyName.cs:
-               Correcty write the version of an assembly fullname.
-               Spotted by Bruno Cabral.
-       * Mono.Cecil.Implem/TypeDefinition.cs:
-               Set the declaring type of a nested type on add.
-       * Mono.Cecil.Implem/CustomAttribute.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Signatures/CustomAttrib.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Global fix on custom attribute handling. Some
-               custom attribute (containing enums) blobs can not be
-               decoded.
-
-2005-09-04  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/Instruction.cs:
-               Add the setter for IInstruction::OpCode.
-
-2005-09-02  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ICustomAttribute.cs
-         Mono.Cecil.Implem/ReflectionFactories.cs
-         Mono.Cecil.Implem/CustomAttribute.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Prepare the work on custom attributes.
-       * Mono.Cecil.Cil/IInstruction.cs:
-               Let users modify the content of an instruction.
-       * Mono.Cecil.Implem/StructureReader.cs:
-               Do not try to read 2.0 assemblies.
-
-2005-08-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs:
-               Write the fields initial value back.
-               As of this revision, a round tripped mcs
-               can compile Cecil.
-
-       * Mono.Cecil.Implem/ReflectionWriter.cs:
-               Emit things in proper order.
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs:
-               Correct bug with InlineVar opcodes.
-               Emit fat body if maxstack is set.
-
-       * Mono.Cecil.Implem/CodeWriter.cs:
-               Handle null tokens.
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               Allow one empty string in the userstring heap.
-
-       * Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Strings constant are unicode.
-
-       * Mono.Cecil/LoadingType.cs
-         Mono.Cecil/AssemblyFactory.cs
-         CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/LzIndexedCollectionImplem.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Implem/InterfaceCollection.cs
-         Mono.Cecil.Implem/ILazyLoadable.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/OverrideCollection.cs
-         Mono.Cecil.Implem/EventDefinitionCollection.cs
-         Mono.Cecil.Implem/FieldDefinitionCollection.cs
-         Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-         Mono.Cecil.Implem/CustomAttributeCollection.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/ReflectionController.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/AssemblyDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/MethodDefinitionCollection.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Implem/ConstructorCollection.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Get rid of the complexity introduced by the
-               internal lazy loading.
-
-       * Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs:
-               Fix the behavior of .ToString ().
-
-2005-08-27  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionWriter.cs:
-               Write back custom attributes of modules and assemblies
-               as well as their security declaration.
-       * Mono.Cecil.Implem/CodeWriter.cs:
-               Fix branches computation.
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Disable custom attribute reading cache.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Compute relocations.
-       * Mono.Cecil.Implem/ReflectionFactories.cs:
-               Blah.
-
-       * Mono.Cecil.Implem/TablesComparer.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Sort all tables that need to be sorted.
-
-       * Mono.Cecil.Implem/CodeReader.cs:
-               Oops. Add fat exception handlers to the method body.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Correct a few bugs: relocations now works.
-               Encode enums in custom attributes.
-               Compute memberrefs tokens before visitings types.
-
-       * Mono.Cecil.Implem/FieldDefinition.cs:
-               Correct a bug that causes null ref due to
-               the new api.
-       * Mono.Cecil.Signatures/SignatureWriter.cs:
-               Implement a very little more custom attributes
-               writing.
-
-2005-08-26  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMemberReferenceCollection.cs
-         Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/IReflectionFactories.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/IModuleDefinition.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Implem/ReflectionFactories.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/MemberReferenceCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs:
-               Handle member references nicely.
-
-       * Mono.Cecil/ICustomAttributeProvider.cs
-         Mono.Cecil/IModuleDefinitionCollection.cs
-         Mono.Cecil/IReflectionStructureFactories.cs
-         Mono.Cecil/IInterfaceCollection.cs
-         Mono.Cecil/IMethod.cs
-         Mono.Cecil/IReflectionFactories.cs
-         Mono.Cecil/INestedTypeCollection.cs
-         Mono.Cecil/ITypeReferenceCollection.cs
-         Mono.Cecil/IExternTypeCollection.cs
-         Mono.Cecil/IAssemblyDefinition.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/ICustomAttribute.cs
-         Mono.Cecil/IArrayDimensionCollection.cs
-         Mono.Cecil/TypeFactory.cs
-         Mono.Cecil/IConstructorCollection.cs
-         Mono.Cecil/IHasSecurity.cs
-         Mono.Cecil/IMethodDefinitionCollection.cs
-         Mono.Cecil/IPropertyDefinitionCollection.cs
-         Mono.Cecil/IAssemblyNameReferenceCollection.cs
-         Mono.Cecil/IModuleReferenceCollection.cs
-         Mono.Cecil/IArrayType.cs
-         Mono.Cecil/ISecurityDeclarationCollection.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/IResourceCollection.cs
-         Mono.Cecil/IParameterDefinitionCollection.cs
-         Mono.Cecil/IEventDefinitionCollection.cs
-         Mono.Cecil/ITypeDefinitionCollection.cs
-         Mono.Cecil/IFieldDefinitionCollection.cs
-         Mono.Cecil/ICustomAttributeCollection.cs
-         Mono.Cecil/ISecurityDeclaration.cs
-         Mono.Cecil/IOverrideCollection.cs
-         Mono.Cecil/ITypeReference.cs
-         Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-         Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-         Mono.Cecil.Cil/IInstructionCollection.cs
-         Mono.Cecil.Cil/IMethodBody.cs
-         CodeGen/cecil-gen-types.rb
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/IIndexedCollection.cs
-         CodeGen/templates/LzIndexedCollectionImplem.cs
-         CodeGen/templates/INamedCollection.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         Mono.Cecil.Implem/InterfaceCollection.cs
-         Mono.Cecil.Implem/AssemblyLinkedResource.cs
-         Mono.Cecil.Implem/ModuleReferenceCollection.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-         Mono.Cecil.Implem/ReflectionFactories.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/OverrideCollection.cs
-         Mono.Cecil.Implem/ArrayDimensionCollection.cs
-         Mono.Cecil.Implem/EmbeddedResource.cs
-         Mono.Cecil.Implem/CilWorker.cs
-         Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-         Mono.Cecil.Implem/EventDefinitionCollection.cs
-         Mono.Cecil.Implem/FieldDefinitionCollection.cs
-         Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-         Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-         Mono.Cecil.Implem/CustomAttributeCollection.cs
-         Mono.Cecil.Implem/VariableDefinitionCollection.cs
-         Mono.Cecil.Implem/TypeReferenceCollection.cs
-         Mono.Cecil.Implem/MemberDefinition.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/FunctionPointerType.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/InstructionCollection.cs
-         Mono.Cecil.Implem/VariableDefinition.cs
-         Mono.Cecil.Implem/CustomAttribute.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/MethodReference.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/StructureFactories.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/MethodReturnType.cs
-         Mono.Cecil.Implem/MemberReference.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/Resource.cs
-         Mono.Cecil.Implem/AssemblyDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/FieldReference.cs
-         Mono.Cecil.Implem/MethodDefinitionCollection.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Implem/LinkedResource.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Implem/MethodBody.cs
-         Mono.Cecil.Implem/NestedTypeCollection.cs
-         Mono.Cecil.Implem/ConstructorCollection.cs
-         Mono.Cecil.Implem/ResourceCollection.cs
-         Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Fix the writing API before the API freeze. Few things
-               are not implemented, see todos.
-
-2005-08-20  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/ITypeReference.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs:
-               Add way to know if a type reference is a
-               value type or not. This hack saved my life.
-
-       * Mono.Cecil.Implem/CodeWriter.cs:
-               Fix typespec emitting.
-
-       * Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/IMethod.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/IConstructorCollection.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/ConstructorCollection.cs:
-               Support constructors decently.
-
-       * CodeGen/templates/Utilities.cs
-         Mono.Cecil.Metadata/Utilities.cs:
-               Return a null token if the rid of a md token
-               is 0. Fix the crash when Mono try to read
-               assemblies emitted by Cecil.
-
-2005-08-19  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionWriter.cs:
-               Set the RVA of a method only if it can
-               have a body.
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Remove debugging stuff.
-
-       * Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix custom marshaller reading.
-
-       * CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/TypeReferenceCollection.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TablesComparer.cs
-         Mono.Cecil.Implem/Constants.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Correct bugs in type* tables generations.
-
-       * Mono.Cecil/IModuleDefinitionCollection.cs
-         Mono.Cecil/IInterfaceCollection.cs
-         Mono.Cecil/INestedTypeCollection.cs
-         Mono.Cecil/ITypeReferenceCollection.cs
-         Mono.Cecil/IExternTypeCollection.cs
-         Mono.Cecil/IArrayDimensionCollection.cs
-         Mono.Cecil/IMethodDefinitionCollection.cs
-         Mono.Cecil/IPropertyDefinitionCollection.cs
-         Mono.Cecil/IAssemblyNameReferenceCollection.cs
-         Mono.Cecil/IModuleReferenceCollection.cs
-         Mono.Cecil/ISecurityDeclarationCollection.cs
-         Mono.Cecil/IResourceCollection.cs
-         Mono.Cecil/IParameterDefinitionCollection.cs
-         Mono.Cecil/IEventDefinitionCollection.cs
-         Mono.Cecil/ITypeDefinitionCollection.cs
-         Mono.Cecil/IFieldDefinitionCollection.cs
-         Mono.Cecil/ICustomAttributeCollection.cs
-         Mono.Cecil/IOverrideCollection.cs
-         Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-         Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-         Mono.Cecil.Cil/IInstructionCollection.cs
-         CodeGen/templates/IIndexedCollection.cs
-         CodeGen/templates/INamedCollection.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Binary/SubSystem.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               On going change to the writing api. Not setter allowed on
-               collections. Work on custom attribute encoding. Remove
-               the Flags on Subsystem.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/TablesComparer.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix the build.
-               Stop to prefix typeref by the scope.
-               Cecil will have buggy behaviour if it have to handle
-               two typeref with the same namespace+name, but for the
-               moment, let it like that.
-
-       * Mono.Cecil/INestedTypeCollection.cs
-         Mono.Cecil/IModuleReference.cs
-         Mono.Cecil/ITypeReferenceCollection.cs
-         Mono.Cecil/IAssemblyName.cs
-         Mono.Cecil/IExternTypeCollection.cs
-         Mono.Cecil/IMetadataScope.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/IResourceCollection.cs
-         Mono.Cecil/ITypeDefinitionCollection.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/INamedCollection.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Metadata/RowCollection.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataToken.cs
-         Mono.Cecil.Implem/TablesComparer.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/TypeReferenceCollection.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/Constants.cs
-         Mono.Cecil.Implem/NestedTypeCollection.cs
-         Mono.Cecil.Implem/ResourceCollection.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Correct some part of the API.
-               Correct tons of bugs in the writing layer.
-
-2005-08-17  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IField.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/BaseReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/IDetailReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Work on the working layer. Implement field initial
-               data. Bugs.
-
-2005-08-16  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Implement local var sig writing.
-
-       * Mono.Cecil.Implem/ArrayType.cs:
-               Style.
-         Mono.Cecil.Implem/ParameterDefinition.cs:
-               Correct a bug in module obtention.
-         Mono.Cecil.Signatures/SignatureReader.cs:
-               Correct a bug in arrays's signature reading.
-
-       * Mono.Cecil.dll.sources
-         Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/IModuleDefinitionCollection.cs
-         Mono.Cecil/IInterfaceCollection.cs
-         Mono.Cecil/IProperty.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/INestedTypeCollection.cs
-         Mono.Cecil/ITypeReferenceCollection.cs
-         Mono.Cecil/IParameter.cs
-         Mono.Cecil/IExternTypeCollection.cs
-         Mono.Cecil/IField.cs
-         Mono.Cecil/IArrayDimensionCollection.cs
-         Mono.Cecil/IMethodDefinitionCollection.cs
-         Mono.Cecil/IPropertyDefinitionCollection.cs
-         Mono.Cecil/IAssemblyNameReferenceCollection.cs
-         Mono.Cecil/IModuleReferenceCollection.cs
-         Mono.Cecil/IHasConstant.cs
-         Mono.Cecil/ISecurityDeclarationCollection.cs
-         Mono.Cecil/IMetadataTokenProvider.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/BaseStructureVisitor.cs
-         Mono.Cecil/IResourceCollection.cs
-         Mono.Cecil/IParameterDefinitionCollection.cs
-         Mono.Cecil/IEventDefinitionCollection.cs
-         Mono.Cecil/ITypeDefinitionCollection.cs
-         Mono.Cecil/IFieldDefinitionCollection.cs
-         Mono.Cecil/ICustomAttributeCollection.cs
-         Mono.Cecil/IOverrideCollection.cs
-         Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-         Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-         Mono.Cecil.Cil/IInstructionCollection.cs
-         CodeGen/cecil-gen.rb
-         CodeGen/cecil-gen-types.rb
-         CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/IIndexedCollection.cs
-         CodeGen/templates/LzIndexedCollectionImplem.cs
-         CodeGen/templates/INamedCollection.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/InterfaceCollection.cs
-         Mono.Cecil.Implem/ModuleReferenceCollection.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-         Mono.Cecil.Implem/OverrideCollection.cs
-         Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-         Mono.Cecil.Implem/EventDefinitionCollection.cs
-         Mono.Cecil.Implem/FieldDefinitionCollection.cs
-         Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-         Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-         Mono.Cecil.Implem/CustomAttributeCollection.cs
-         Mono.Cecil.Implem/VariableDefinitionCollection.cs
-         Mono.Cecil.Implem/TypeReferenceCollection.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/InstructionCollection.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/MethodReference.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/MethodReturnType.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/AssemblyDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/MethodDefinitionCollection.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Implem/NestedTypeCollection.cs
-         Mono.Cecil.Implem/ResourceCollection.cs
-         Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Working on the writing layer.
-               Begin to fix brokens part of the API.
-
-2005-08-15  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/ITypeDefinition.cs
-         CodeGen/templates/MetadataTableReader.cs
-         CodeGen/templates/PEFileHeader.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/CLIHeader.cs
-         CodeGen/templates/PEOptionalHeader.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/Table.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/BaseMetadataVisitor.cs
-         CodeGen/templates/Section.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         CodeGen/templates/ImageReader.cs
-         CodeGen/templates/IMetadataVisitor.cs
-         Mono.Cecil.Metadata/Assembly.cs
-         Mono.Cecil.Metadata/PropertyMap.cs
-         Mono.Cecil.Metadata/InterfaceImpl.cs
-         Mono.Cecil.Metadata/MetadataInitializer.cs
-         Mono.Cecil.Metadata/Constant.cs
-         Mono.Cecil.Metadata/MethodSpec.cs
-         Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-         Mono.Cecil.Metadata/DeclSecurity.cs
-         Mono.Cecil.Metadata/TypeDef.cs
-         Mono.Cecil.Metadata/MethodImpl.cs
-         Mono.Cecil.Metadata/GenericParamConstraint.cs
-         Mono.Cecil.Metadata/NestedClass.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-         Mono.Cecil.Metadata/AssemblyRef.cs
-         Mono.Cecil.Metadata/AssemblyRefOS.cs
-         Mono.Cecil.Metadata/Method.cs
-         Mono.Cecil.Metadata/RowCollection.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/StringsHeap.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/ExportedType.cs
-         Mono.Cecil.Metadata/CustomAttribute.cs
-         Mono.Cecil.Metadata/Param.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/ClassLayout.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/BlobHeap.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/AssemblyOS.cs
-         Mono.Cecil.Metadata/ModuleRef.cs
-         Mono.Cecil.Metadata/MetadataRoot.cs
-         Mono.Cecil.Metadata/UserStringsHeap.cs
-         Mono.Cecil.Metadata/FieldMarshal.cs
-         Mono.Cecil.Metadata/GenericParam.cs
-         Mono.Cecil.Metadata/ImplMap.cs
-         Mono.Cecil.Metadata/TableCollection.cs
-         Mono.Cecil.Metadata/TablesHeap.cs
-         Mono.Cecil.Metadata/MetadataStreamCollection.cs
-         Mono.Cecil.Metadata/ManifestResource.cs
-         Mono.Cecil.Metadata/TypeRef.cs
-         Mono.Cecil.Metadata/AssemblyProcessor.cs
-         Mono.Cecil.Metadata/EventMap.cs
-         Mono.Cecil.Metadata/File.cs
-         Mono.Cecil.Metadata/Event.cs
-         Mono.Cecil.Metadata/FieldLayout.cs
-         Mono.Cecil.Metadata/Field.cs
-         Mono.Cecil.Metadata/Property.cs
-         Mono.Cecil.Metadata/Module.cs
-         Mono.Cecil.Metadata/GuidHeap.cs
-         Mono.Cecil.Metadata/MethodSemantics.cs
-         Mono.Cecil.Metadata/StandAloneSig.cs
-         Mono.Cecil.Metadata/MetadataStream.cs
-         Mono.Cecil.Metadata/FieldRVA.cs
-         Mono.Cecil.Metadata/TypeSpec.cs
-         Mono.Cecil.Metadata/MemberRef.cs
-         Mono.Cecil.Metadata/IMetadataVisitor.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Signatures/MethodRefSig.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/FieldSig.cs
-         Mono.Cecil.Signatures/PropertySig.cs
-         Mono.Cecil.Signatures/ISignatureVisitor.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs
-         Mono.Cecil.Signatures/MethodDefSig.cs
-         Mono.Cecil.Signatures/LocalVarSig.cs
-         Mono.Cecil.Binary/PEFileHeader.cs
-         Mono.Cecil.Binary/IBinaryVisitor.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/CLIHeader.cs
-         Mono.Cecil.Binary/SectionCollection.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/PEOptionalHeader.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/Imports.cs
-         Mono.Cecil.Binary/BaseImageVisitor.cs
-         Mono.Cecil.Binary/DOSHeader.cs
-         Mono.Cecil.Binary/Section.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Apply the new visitor model to the rest of Cecil.
-
-       * Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/IReflectionStructureVisitor.cs
-         Mono.Cecil/BaseStructureVisitor.cs
-         Mono.Cecil.Cil/BaseCodeVisitor.cs
-         Mono.Cecil.Cil/ICodeVisitor.cs
-         CodeGen/cecil-gen.rb
-         CodeGen/cecil-gen-types.rb
-         CodeGen/templates/IndexedCollectionImplem.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/LzIndexedCollectionImplem.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Implem/InterfaceCollection.cs
-         Mono.Cecil.Implem/AssemblyLinkedResource.cs
-         Mono.Cecil.Implem/ModuleReferenceCollection.cs
-         Mono.Cecil.Implem/AssemblyName.cs
-         Mono.Cecil.Implem/Instruction.cs
-         Mono.Cecil.Implem/ExternTypeCollection.cs
-         Mono.Cecil.Implem/MarshalDesc.cs
-         Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-         Mono.Cecil.Implem/OverrideCollection.cs
-         Mono.Cecil.Implem/ExceptionHandler.cs
-         Mono.Cecil.Implem/EmbeddedResource.cs
-         Mono.Cecil.Implem/ModuleReference.cs
-         Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-         Mono.Cecil.Implem/EventDefinitionCollection.cs
-         Mono.Cecil.Implem/FieldDefinitionCollection.cs
-         Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-         Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-         Mono.Cecil.Implem/CustomAttributeCollection.cs
-         Mono.Cecil.Implem/VariableDefinitionCollection.cs
-         Mono.Cecil.Implem/TypeReferenceCollection.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/InstructionCollection.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/CustomAttribute.cs
-         Mono.Cecil.Implem/VariableDefinition.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/PInvokeInfo.cs
-         Mono.Cecil.Implem/AssemblyDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/MethodDefinitionCollection.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/SecurityDeclaration.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Implem/LinkedResource.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Implem/MethodBody.cs
-         Mono.Cecil.Implem/NestedTypeCollection.cs
-         Mono.Cecil.Implem/ResourceCollection.cs
-         Mono.Cecil.Implem/ExceptionHandlerCollection.cs:
-               BIG changes in the visitor object model. Last one
-               was causing ambiguous calls, and does not provides
-               differences between an interface and a typedef for
-               instance. This is corrected by suffixing the visit
-               method by the name of what it is visiting, and by
-               configuring some collection to stop the propagation
-               of the visitor.
-
-       * Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/IArrayType.cs
-         CodeGen/templates/Utilities.cs
-         Mono.Cecil.Metadata/Utilities.cs
-         Mono.Cecil.Implem/ArrayType.cs
-         Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/Constants.cs
-         Mono.Cecil.Signatures/MarshalSig.cs:
-               Work on the writing layer goes on.
-
-2005-08-14  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/NativeType.cs
-         Mono.Cecil.Signatures/MarshalSig.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs
-         Mono.Cecil.Signatures/Signature.cs:
-               Work on signature writing.
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs:
-               Correct bugs in setting the hasThis field.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/templates/ImageWriter.cs
-         Mono.Cecil/AssemblyKind.cs:
-               Make assemblies executable on win32.
-         Mono.Cecil.Implem/TypeDefinition.cs:
-               Mark new fields as loaded.
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Correct the style to patch provided by
-               Sebastien Ros  <s.ros@evaluant.com>
-
-2005-08-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil.Cil/OpCode.cs
-         Mono.Cecil.Cil/ICilWorker.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataRoot.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/CilWorker.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/MethodReference.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/Constants.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/MethodBody.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/MemoryBinaryWriter.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               On going work on the writing layer.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix a bug when reading chars inside a custom
-               attribute signature.
-
-2005-08-12  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-               Use a custom binary writer instead of the old one.
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil.Cil/BaseCodeVisitor.cs
-         Mono.Cecil.Cil/MethodHeader.cs
-         Mono.Cecil.Cil/ICodeVisitor.cs
-         Mono.Cecil.Implem/Instruction.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Implem/MethodBody.cs:
-               Ongoing work on the writing layer.
-
-       * CodeGen/templates/Utilities.cs
-         CodeGen/templates/NamedCollectionImplem.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         CodeGen/cecil.xml
-         Mono.Cecil/IMethod.cs
-         Mono.Cecil/IAssemblyName.cs
-         Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/Utilities.cs
-         Mono.Cecil.Implem/ReflectionHelper.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/MethodReference.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/TypeDefinition.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/Constants.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Ongoing work on the writing layer.
-               Some fixes to the reading layer as well.
-
-2005-08-11  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Read Array signatures correctly.
-
-       * Mono.Cecil/IMethodSignature.cs:
-               Remove the setted for the return type.
-       * Mono.Cecil.Implem/CilWorker.cs:
-               Fix the build. Me idiot!
-       * Mono.Cecil.Implem/Constants.cs:
-               Remove unexisting type Variant.
-       * Mono.Cecil.Implem/ReflectionHelper.cs:
-               Complete the helper.
-
-2005-08-10  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Cil/IMethodBody.cs
-         Mono.Cecil.Cil/ICilEmitter.cs
-         Mono.Cecil.Cil/ICilWorker.cs
-         Mono.Cecil.Implem/CilWorker.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/MethodBody.cs
-         Mono.Cecil.Implem/CilEmitter.cs
-         Mono.Cecil.Signatures/SignatureReader.cs
-         Mono.Cecil.Signatures/SignatureWriter.cs:
-               Prepare the api for the cil emitting.
-
-       * CodeGen/templates/Utilities.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/Utilities.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs:
-               Fix the build on .net, i was using a sugar
-               syntax for delegates that csc does not understand.
-               Remove the coded index cache from the static class
-               Utilities, and add one per row visitor.
-
-       * Mono.Cecil/IMethodReturnType.cs
-         Mono.Cecil.Implem/MethodReturnType.cs
-         Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs:
-               Make IMethodReturn type inherits IHasMarshalSpec so
-               that users can read marshaling info for return types,
-               and implement it.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Cecil now emits assemblies understood by the .net clr.
-
-2005-08-09  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyKind.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Lots of little fixes. Now dumpbin is coherent
-               compared with an assembly emitted with csc or mcs
-               but still not yet compatible with .net.
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix an array out of range while trying to read
-               fixed arrays signatures
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/AssemblyName.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Binary/ImageCharacteristics.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/Image.cs:
-               Cecil now emits assemblies that are understood
-               by Mono and Cecil itself. Still have troubles
-               with Msft CLR.
-
-2005-08-08  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen.rb
-         CodeGen/templates/MetadataTableReader.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/BaseMetadataVisitor.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         CodeGen/cecil.xml
-         Mono.Cecil.Metadata/MetadataInitializer.cs
-         Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-         Mono.Cecil.Metadata/MetadataTableReader.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/CLIHeader.cs
-         Mono.Cecil.Binary/ImageInitializer.cs:
-               The writing layer almost works.
-
-       * Mono.Cecil/AssemblyKind.cs
-         Mono.Cecil/TargetRuntime.cs
-         Mono.Cecil.dll.sources:
-               Add thoses enumes to control assembly writing.
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil/IReflectionVisitor.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil/IAssemblyDefinition.cs
-         Mono.Cecil/IReflectionStructureVisitor.cs
-         Mono.Cecil/BaseStructureVisitor.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         CodeGen/templates/LzNamedCollectionImplem.cs
-         Mono.Cecil.Metadata/MetadataInitializer.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataStreamCollection.cs
-         Mono.Cecil.Implem/AssemblyName.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/TypeDefinitionCollection.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/AssemblyDefinition.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/Imports.cs:
-               Things are now plugged. SaveAssembly will now emits
-               a binary file. A broken file, but heh, at least it does.
-
-2005-08-07  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/IMetadataVisitor.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Metadata/IMetadataVisitor.cs
-         Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataStreamCollection.cs:
-               Simplify IMetadataVisitor.
-               Work on the writing layer, closer to have something testable
-               than ever.
-
-       * CodeGen/cecil.xml
-         CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Binary/PEOptionalHeader.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/Imports.cs:
-               don't stop don't stop come ON!
-
-       * CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/ImageReader.cs
-         CodeGen/templates/Section.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/Section.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/CodeWriter.cs:
-               Some writing layer love.
-
-       * CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Binary/Imports.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Read an write correctly the Hint/Name table
-               at the end of the .text section.
-
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/ImageInitializer.cs:
-               More writing layer stuff.
-
-2005-08-06  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataInitializer.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/StringsHeap.cs
-         Mono.Cecil.Metadata/BlobHeap.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/UserStringsHeap.cs
-         Mono.Cecil.Metadata/TableCollection.cs
-         Mono.Cecil.Metadata/TablesHeap.cs
-         Mono.Cecil.Metadata/MetadataHeap.cs
-         Mono.Cecil.Metadata/GuidHeap.cs
-         Mono.Cecil.Metadata/MetadataStream.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/CodeWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Binary/ImageInitializer.cs:
-               Playing lego with bricks from the writing layer.
-
-       * Mono.Cecil.dll.sources:
-               Updated.
-       * CodeGen/templates/CLIHeader.cs
-         CodeGen/templates/PEOptionalHeader.cs
-               Blah.
-       * CodeGen/cecil.xml
-         Mono.Cecil.Binary/CLIHeader.cs
-         Mono.Cecil.Binary/PEOptionalHeader.cs:
-         Mono.Cecil.Binary/PEFileHeader.cs
-               On going work on the writing layer
-
-       * CodeGen/templates/ImageWriter.cs
-         CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Binary/BaseImageVisitor.cs
-         Mono.Cecil.Binary/ImageReader.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/ImageWriter.cs
-         Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/MetadataInitializer.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataStream.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/CodeWriter.cs:
-               Add helpers visitor.
-               On going work on the writing layer.
-
-       * CodeGen/templates/Utilities.cs
-         CodeGen/templates/MetadataRowReader.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/StringsHeap.cs
-         Mono.Cecil.Metadata/MetadataRowReader.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataReader.cs
-         Mono.Cecil.Metadata/Utilities.cs
-         Mono.Cecil.Metadata/BlobHeap.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/MetadataHeap.cd
-         Mono.Cecil.Metadata/GuidHeap.cs:
-               On going work on the writing layer.
-
-       * CodeGen/templates/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               On going work on the writing layer.
-       * Mono.Cecil.Implem/StructureWriter.cs:
-               Correctly override methods
-       * CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Fix build warnings.
-
-       * Mono.Cecil/IResource.cs
-         Mono.Cecil.Implem/AssemblyLinkedResource.cs
-         Mono.Cecil.Implem/EmbeddedResource.cs
-         Mono.Cecil.Implem/LinkedResource.cs
-         Mono.Cecil.Implem/Resource.cs:
-               Rename field Attributes to Flags for the sake of consistency.
-       * Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs
-         Mono.Cecil.Implem/StructureWriter.cs:
-               On going work on the writing layer.
-       * Mono.Cecil.Implem/StructureReader.cs:
-               Style.
-
-       * Mono.Cecil/IAssemblyName.cs
-         Mono.Cecil.Implem/AssemblyName.cs
-         Mono.Cecil.Implem/StructureReader.cs:
-               Add an AssemblyFlag property to an IAssemblyNameReference,
-               implement it, and read it.
-
-2005-08-04  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionReader.cs:
-               set a correct name to nameless parameters
-
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               don't crash on null custom attributes
-
-2005-08-03  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/OpCodes.cs
-         Mono.Cecil.Cil/OpCodes.cs
-         Mono.Cecil.Cil/OpCode.cs:
-               Revert modifications to reduce code. OpCodes::.ctors were
-               not called.
-
-       * Mono.Cecil.Implem/ReflectionReader.cs:
-               Make sure parameters are read even if there is no
-               corresponding Param row. Thanks Cesar for the hint.
-
-       * Mono.Cecil.Metadata/MetadataWriter.cs
-         Mono.Cecil.Metadata/UserStringsHeap.cs
-         Mono.Cecil.Metadata/GuidHeap.cs
-         Mono.Cecil.Implem/CodeReader.cs:
-               On going work on the writing layer
-
-       * CodeGen/cecil-gen.rb
-         CodeGen/cecil-gen-sources.rb
-               make executable
-       * *.*: set svn:eol-style to native
-
-       * Mono.Cecil/BaseStructureVisitor.cs
-         Mono.Cecil/BaseReflectionVisitor.cs
-         Mono.Cecil.Implem/BaseReflectionReader.cs:
-               Add empty visitors for the sake of simplicity
-       * Mono.Cecil.Implem/StructureReader.cs
-         Mono.Cecil.Implem/ReflectionReader.cs:
-               Inherit new visitors
-
-2005-08-03  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs
-         Mono.Cecil.Implem/CodeReader.cs:
-               Modify and add helpers to avoid lots of casts.
-               Correct a bug in custom attributes attribution.
-
-2005-08-02  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Signatures/TypeSpec.cs:
-               Don't restrain the SigType
-       * Mono.Cecil.Implem/AggressiveReflectionReader.cs:
-               Set PInvokeInfos on the correct method
-
-2005-07-30  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen.rb
-         CodeGen/cecil-gen-sources.rb:
-               make them executable
-       * CodeGen/cecil-gen-types: style
-       * CodeGen/templates/ImageWriter.cs
-         Mono.Cecil.Binary/ImageWriter.cs:
-               Prelimimary work on assembly writing
-
-2005-07-29  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen-types.rb
-         CodeGen/templates/MetadataTableWriter.cs
-         CodeGen/templates/MetadataRowWriter.cs
-         Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Metadata/MetadataTableWriter.cs
-         Mono.Cecil.Metadata/MetadataRowWriter.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Preliminary work on assembly writing
-
-2005-07-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/AssemblyFactory.cs
-         Mono.Cecil.Implem/StructureWriter.cs
-               Preliminary work on assembly writing
-
-       * Mono.Cecil/IMetadataTokenProvider.cs
-         Mono.Cecil/IMember.cs
-         Mono.Cecil/IParameter.cs:
-               Add a MetadataToken property on searchable items
-       * Mono.Cecil.Metadata/MetadataToken.cs:
-               Add a factory method to create token from row number
-       * Mono.Cecil.Implem/TypeReference.cs
-         Mono.Cecil.Implem/MemberReference.cs
-         Mono.Cecil.Implem/ParameterDefinition.cs:
-               Implement the token property
-       * Mono.Cecil.Implem/ReflectionReader.cs
-         Mono.Cecil.Implem/AggressiveReflectionReader.cs
-         Mono.Cecil.Implem/LazyReflectionReader.cs:
-               Set the token property on reading
-       * Mono.Cecil/IModuleDefinition.cs
-         Mono.Cecil.Implem/ModuleDefinition.cs
-         Mono.Cecil.Implem/ReflectionReader.cs:
-               Add methods to lookup items from their tokens
-
-2005-07-27  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/OpCodes.cs
-         Mono.Cecil.Cil/OpCodes.cs
-         Mono.Cecil.Cil/OpCode.cs:
-               Changes to reduce the size of the cache ctor
-
-2005-07-22  Raja R Harinath  <rharinath@novell.com>
-
-       * Makefile (MCS): Allow compiler to be overriden.
-
-2005-07-21  Todd Berman  <tberman@off.net>
-
-       * configure: Add a small stub configure (stolen from mcs) to set the
-       prefix.
-       * mono-cecil.pc.in: Add a mono-cecil.pc.in to allow for installation
-       according to the new "Libraries with Unstable API" Wiki documentation.
-       * Makefile: Add an install an a mono-cecil.pc target to allow for
-       installation and creation of the pc file.
-
-2005-07-14  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/templates/ImageReader.cs
-         Mono.Cecil.Binary/IBinaryVisitor.cs
-         Mono.Cecil.Binary/Image.cs
-         Mono.Cecil.Binary/ImageInitializer.cs
-         Mono.Cecil.Binary/Imports.cs
-         Mono.Cecil.Binary/ImageReader.cs:
-               Read Imports Tables
-
-2005-07-14  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen.rb:
-               make codegen works on ruby 1.8.2
-       * CodeGen/templates/*.cs
-         Mono.Cecil.Metadata/*.cs:
-               style
-
-2005-07-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/VariableDefinition.cs:
-               set the index field
-
-2005-07-13  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.dll.sources: regenerated
-       * Mono.Cecil.Signatures/SignatureReader.cs:
-               Fix compilation warnings
-       * Mono.Cecil/IArrayType.cs
-         Mono.Cecil.Implem/ArrayType.cs:
-               Add Rank helper property
-       * Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs:
-               Add Constructors helper property
-
-2005-07-11  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil.Implem/Instruction.cs
-         Mono.Cecil.Implem/ExceptionHandler.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/Label.cs
-         Mono.Cecil.Implem/CodeReader.cs
-         Mono.Cecil.Implem/MethodBody.cs
-         Mono.Cecil.Implem/CilEmitter.cs
-         Mono.Cecil.Cil/ILabel.cs
-         Mono.Cecil.Cil/IInstruction.cs
-         Mono.Cecil.Cil/IExceptionHandler.cs
-         Mono.Cecil.Cil/IMethodBody.cs
-         Mono.Cecil.Cil/ICilEmitter.cs:
-               Preliminary changes on the instruction model before
-               changing of latptop
-
-2005-07-08  Jb Evain  <jbevain@gmail.com>
-
-   * Every generated files: use \n instead of \r\n
-
-2005-07-07  Jb Evain  <jbevain@gmail.com>
-
-       * *.*: use Mono coding conventions
-       * Mono.Xml/*.*: update Mono.Xml from corlib
-       * Mono.Cecil.Metadata/CultureUtils.cs:
-               Ensure that Cecil works under Mono
-
-2005-07-02  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil/IMethod.cs
-         Mono.Cecil/IProperty.cs
-         Mono.Cecil/IEvent.cs
-         Mono.Cecil/IField.cs
-         Mono.Cecil/ITypeDefinition.cs
-         Mono.Cecil.Implem/MethodDefinition.cs
-         Mono.Cecil.Implem/PropertyDefinition.cs
-         Mono.Cecil.Implem/EventDefinition.cs
-         Mono.Cecil.Implem/FieldDefinition.cs
-         Mono.Cecil.Implem/TypeDefinition.cs:
-               Add some funky sugar attributes,
-               more to come
-
-2005-07-01  Jb Evain  <jbevain@gmail.com>
-
-       * CodeGen/cecil-gen.rb,
-         CodeGen/templates/MetadataTableWriter.cs,
-         CodeGen/templates/MetadataRowWriter.cs,
-         Mono.Cecil.Metadata/MetadataTableWriter.cs,
-         Mono.Cecil.Metadata/MetadataRowWriter.cs,
-         Mono.Cecil.Metadata/MetadataWriter.cs:
-               Add metadata writing visitors
-       * Mono.Cecil.Metadata/CultureUtils.cs:
-               Be sure to use every possible culture infos.
-       * Mono.Cecil.Cil/IVariable.cs,
-         Mono.Cecil.Implem/VariableDefinition.cs,
-         Mono.Cecil.Implem/CodeReader.cs,
-         Mono.Cecil.Implem/CilEmitter.cs:
-               Add an index property to local variables
-       * Mono.Cecil.Metadata/MetadataReader.cs,
-         Mono.Cecil.Metadata/MetadataRowReader.cs,
-         CodeGen/templates/MetadataRowReader.cs,
-         Mono.Cecil.Metadata/TablesHeap.cs:
-               Handles null heaps
-       * Mono.Cecil.Implem/StructureWriter.cs,
-         Mono.Cecil.Implem/ReflectionController.cs,
-         Mono.Cecil.Implem/ReflectionWriter.cs:
-               Assemble writing classes
-
-2005-06-28  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionReader.cs: style
-       * Mono.Cecil.Implem/LazyReflectionReader.cs:
-               read the last property as well.
-
-2005-06-21  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/ReflectionReader.cs: Correct a bug that prevents
-               assemblies to be readed if they have an entrypoint. Suggestion by
-               Mario Sopena
-       * Mono.Cecil.Implem/CodeReader.cs: Use sbyte not to lose negatives
-               offsets. Suggestion by Vladislav Spivak
-       * CodeGen/cecil.xml,
-         Mono.Cecil.Cil/OpCodes.cs,
-         Mono.Cecil.Cil/StackBehaviour.cs: Add an PopAll enumeration value
-               for StackBehaviour, and set the StackBehaviourPop property for
-               leave and leave.s opcodes to it. Suggested by Vladislav Spivak
-
-2005-06-12  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.Implem/TypeDefinition.cs: Set the declaring type
-               to this when defining a nested type.
-
-2005-06-07  Jb Evain  <jbevain@gmail.com>
-
-       * Mono.Cecil.dll.sources,
-       * CodeGen/cecil.xml,
-       * Mono.Cecil/IReflectionVisitor.cs,
-       * Mono.Cecil/INestedTypeCollection.cs,
-       * Mono.Cecil/ITypeDefinition,
-       * Mono.Cecil.Implem/ReflectionReader.cs,
-       * Mono.Cecil.Implem/ReflectionWriter.cs,
-       * Mono.Cecil.Implem/TypeDefinition.cs,
-       * Mono.Cecil.Implem/NestedTypeCollection:
-               Add a collection of nested types for type definition
-
-       * Mono.Cecil.Implem/ModuleDefinition.cs: simplify type creation
-
-2005-06-07  Jb Evain  <jbevain@gmail.com>
-
-       * ChangeLog: Cecil has now ChangeLogs. Let use them.
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-gen-attributes.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-gen-attributes.rb
deleted file mode 100755 (executable)
index 4158155..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/usr/bin/env ruby
-
-$providers = []
-
-$mapping = {
-       "Assem" => "IsAssembly",
-       "FamORAssem" => "IsFamilyOrAssembly",
-       "FamANDAssem" => "IsFamilyAndAssembly",
-       "NestedFamORAssem" => "IsNestedFamilyOrAssembly",
-       "NestedFamANDAssem" => "IsNestedFamilyAndAssembly",
-       "RTSpecialName" => "IsRuntimeSpecialName",
-       "Compilercontrolled" => "IsCompilerControlled",
-       "NotNullableValueTypeConstraint" => "HasNotNullableValueTypeConstraint",
-       "ReferenceTypeConstraint" => "HasReferenceTypeConstraint",
-       "DefaultConstructorConstraint" => "HasDefaultConstructorConstraint",
-       "SupportsLastError" => "SupportsLastError",
-       "NoInlining" => "NoInlining",
-}
-
-$black_list = [
-       "None", "Unused", "RequireSecObject",
-       "HasFieldMarshal", "HasFieldRVA",
-       "OPTIL", "MaxMethodImplVal"
-]
-
-class Attribute
-
-       attr_accessor(:name)
-       attr_accessor(:type)
-
-       def initialize(name, type)
-               @name = name
-               @type = type
-       end
-
-       def full_name
-               "#{@type}.#{@name}"
-       end
-
-       def to_csharp
-"""            public bool #{get_name()} {
-#{getter()}#{setter()}         }
-"""
-       end
-
-       def to_s
-               "Attribute #{full_name}"
-       end
-
-       protected
-       def getter
-"""                    get { return (m_attributes & #{full_name()}) != 0; }
-"""
-       end
-
-       def setter
-"""                    set {
-                               if (value)
-                                       m_attributes |= #{full_name()};
-                               else
-                                       m_attributes &= ~#{full_name()};
-                       }
-"""
-       end
-
-       private
-       def get_name
-               name = @name
-               return $mapping[name] if $mapping.include?(name)
-               return name if name.rindex("Has") == 0
-               "Is#{name}"
-       end
-end
-
-class MaskedAttribute < Attribute
-
-       attr_accessor(:mask)
-
-       def initialize(name, type, mask)
-               super(name, type)
-               @mask = mask
-       end
-
-       def     mask_full_name
-               "#{@type}.#{@mask}"
-       end
-
-       def to_s
-               "MaskedAttribute #{full_name()}, masked by #{mask_full_name()}"
-       end
-
-       protected
-       def getter
-"""                    get { return (m_attributes & #{mask_full_name()}) == #{full_name()}; }
-"""
-       end
-
-       def setter
-"""                    set {
-                               if (value) {
-                                       m_attributes &= ~#{mask_full_name()};
-                                       m_attributes |= #{full_name()};
-                               } else
-                                       m_attributes &= ~(#{mask_full_name()} & #{full_name()});
-                       }
-"""
-       end
-end
-
-class Provider
-
-       attr_accessor(:type)
-       attr_accessor(:attributes_file)
-       attr_accessor(:target_file)
-       attr_accessor(:attributes)
-
-       def initialize(type, attributes_file, target_file)
-               @type = type
-               @attributes_file = attributes_file
-               @target_file = target_file
-               @attributes = []
-       end
-
-       def parse
-               f = File.open(@attributes_file, File::RDONLY)
-               have_mask = false
-               mask = ""
-               f.readlines.each { |line|
-                       if line.chomp().length == 0
-                               have_mask = false
-                       else
-                               name = get_name(line)
-                               if not name.nil? and name.index("Mask")
-                                       mask = name
-                                       have_mask = true
-                               elsif not name.nil?
-                                       attr = nil
-                                       if (have_mask)
-                                               attr = MaskedAttribute.new(name, @type, mask)
-                                       else
-                                               attr = Attribute.new(name, @type)
-                                       end
-                                       @attributes << attr
-                               end
-                       end
-               }
-               f.close
-       end
-
-       def patch
-               buffer = read_target_content()
-               buffer = patch_buffer(buffer)
-               if buffer != read_target_content()
-                       puts("#{@target_file} patched")
-                       write_target_content (buffer)
-               end
-       end
-
-       private
-       def patch_buffer(buffer)
-               region = "#region " + @type
-               endregion = "#endregion"
-
-               endpart = buffer[(buffer.index(endregion) - 3)..buffer.length]
-
-               rep = buffer[0..(buffer.index(region) + region.length)]
-
-               rep += "\n"
-
-               @attributes.each { |attr|
-                       rep += attr.to_csharp
-                       rep += "\n" if attr != @attributes.last
-               }
-
-               rep += endpart
-
-               rep
-       end
-
-       def read_target_content
-               f = File.new(@target_file, File::RDONLY)
-               content = f.readlines.join
-               f.close
-               content
-       end
-
-       def write_target_content(content)
-               File.open(@target_file, File::WRONLY | File::TRUNC) { |f|
-                       f.write(content)
-               }
-       end
-
-       def get_name(line)
-               pos = line.index("=")
-               return nil if not pos
-               name = line[0..(pos - 1)].strip
-
-               return nil if $black_list.include?(name)
-               name
-       end
-end
-
-def to_cecil_file(file)
-       "../Mono.Cecil/#{file}.cs"
-end
-
-[ "Event", "Field", "Method", "Parameter", "Property", "Type" ].each { |name|
-       attributes = "#{name}Attributes"
-       definition = "#{name}Definition"
-       $providers << Provider.new(attributes, to_cecil_file(attributes), to_cecil_file(definition))
-}
-
-{ "GenericParameter" => "GenericParameter",
-  "ManifestResource" => "Resource",
-  "PInvoke" => "PInvokeInfo",
-#  "MethodImpl" => "MethodDefinition",
-#  "MethodSemantics" => "MethodDefinition",
-}.each { |k, v|
-       attributes = "#{k}Attributes"
-       $providers << Provider.new(attributes, to_cecil_file(attributes), to_cecil_file(v))
-}
-
-$providers.each { |p|
-       p.parse
-       p.patch
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-gen-sources.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-gen-sources.rb
deleted file mode 100755 (executable)
index e93b195..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-
-f = File.new("../Mono.Cecil.dll.sources", File::CREAT | File::WRONLY | File::TRUNC)
-
-[ "Mono.Cecil", "Mono.Cecil.Binary",
-       "Mono.Cecil.Metadata", "Mono.Cecil.Cil",
-       "Mono.Cecil.Signatures", "Mono.Xml" ].each { |dir|
-
-       Dir.foreach("../" + dir) { |file|
-               f.print("./#{dir}/#{file}\n") if file[(file.length - 3)..file.length] == ".cs"
-       }
-}
-
-f.close
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-gen-tests.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-gen-tests.rb
deleted file mode 100755 (executable)
index b2ab8ef..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'erb'
-
-class Language
-
-       attr_reader(:name)
-       attr_reader(:compiler)
-       attr_reader(:ext)
-       attr_reader(:command)
-
-       def initialize(name, compiler, ext, command)
-               @name = name
-               @compiler = compiler
-               @ext = ext
-               @command = command
-       end
-end
-
-class TestCase
-
-       attr_reader(:lang)
-       attr_reader(:file)
-
-       def initialize(lang, file)
-               @lang = lang
-               @file = file
-       end
-
-       def method()
-               meth = @file.gsub(/[^a-zA-Z1-9]/, "_")
-               return meth[1..meth.length] if (meth[0].chr == "_")
-               return meth
-       end
-end
-
-$languages = [
-       Language.new("cil", "ilasm", ".il", "{0} /exe /output:{2} {1}"),
-       Language.new("csharp", "mcs", ".cs", "{0} /t:exe /o:{2} {1}")
-]
-
-$tests = [
-]
-
-def analyze(dir)
-       $languages.each { |l|
-               pattern = File.join(dir, "**", "*" + l.ext)
-               Dir[pattern].each { |file|
-                       $tests.push(TestCase.new(l, File.expand_path(file)))
-               }
-       }
-end
-
-ARGV.each { |dir|
-       analyze(dir)
-}
-
-if $tests.length > 0
-       erb = ERB.new(IO.read("./templates/Tests.cs"))
-       print(erb.result)
-end
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-gen-types.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-gen-types.rb
deleted file mode 100644 (file)
index 2c0e629..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-
-# types used in templates
-
-module Cecil
-
-       class Evolutive # abstract
-
-               attr_reader(:requ)
-
-               def initialize(requ)
-                       @requ = requ
-               end
-       end
-
-       class FieldWorker # abstract
-
-               attr_reader(:field_name)
-               attr_reader(:property_name)
-               attr_reader(:type)
-               attr_reader(:ns)
-               attr_reader(:size)
-               attr_reader(:target)
-
-               def initialize(name, type, target)
-                       @property_name = name
-                       @target = target
-                       @field_name = to_field(name)
-
-                       @objtype = type
-
-                       ar = type.name.split(".")
-                       @type = ar.pop()
-                       @ns = ar.join(".")
-
-                       @size = type.size
-               end
-
-               def to_field(name)
-                       name = String.new(name)
-                       name[0] = name[0].chr.downcase
-                       return "m_" + name
-               end
-
-               def write_binary(inst, writer)
-                       pre = writer + ".Write ("
-                       prp = inst + "." + @property_name
-                       suf = ")"
-                       return case @type
-                               when "byte", "ushort", "short", "uint", "int"
-                                       pre + prp + suf
-                               when "RVA"
-                                       pre + prp + ".Value" + suf
-                               when "DataDirectory"
-                                       pre + prp + ".VirtualAddress" + suf + ";\n\t\t\t" + pre + prp + ".Size" + suf
-                               else
-                                       pre + "(" + @objtype.underlying + ") " + prp + suf
-                       end
-               end
-
-               def read_binary(inst)
-                       return case @type
-                               when "byte"
-                                       inst + ".ReadByte ()"
-                               when "ushort"
-                                       inst + ".ReadUInt16 ()";
-                               when "short"
-                                       inst + ".ReadInt16 ()";
-                               when "uint"
-                                       inst + ".ReadUInt32 ()";
-                               when "int"
-                                       inst + ".ReadInt32 ()";
-                               when "RVA"
-                                       "new RVA (" + inst + ".ReadUInt32 ())"
-                               when "DataDirectory"
-                                       "new DataDirectory (\n                          new RVA (" + inst + ".ReadUInt32 ()),\n                         " + inst + ".ReadUInt32 ())"
-                               else
-                                       "(" + @objtype.name + ") " + case @objtype.underlying
-                                               when "int"
-                                                       inst + ".ReadInt32 ()";
-                                               when "short"
-                                                       inst + ".ReadInt16 ()";
-                                               when "ushort"
-                                                       inst + ".ReadUInt16 ()";
-                                               when "uint"
-                                                       inst + ".ReadUInt32 ()";
-                                       end
-                       end
-               end
-       end
-
-       class Type
-
-               attr_reader(:name)
-               attr_reader(:size)
-               attr_reader(:underlying)
-
-               def initialize(name, size, underlying = nil)
-                       @name = name
-                       @size = size
-                       @underlying = underlying
-               end
-       end
-
-       class Table < Evolutive
-
-               attr_reader(:ref_ns)
-               attr_reader(:rid)
-               attr_reader(:name)
-               attr_reader(:table_name)
-               attr_reader(:row_name)
-               attr_reader(:columns)
-
-               def initialize(name, rid, requ)
-                       super(requ)
-                       @name = name
-                       @table_name = name + "Table"
-                       @row_name = name + "Row"
-                       @rid = rid
-                       @ref_ns = Array.new
-                       @columns = Array.new
-               end
-
-               def add_column(col)
-                       if (!@ref_ns.include?(col.ns) && col.ns.length != 0 && col.ns != "Mono.Cecil.Metadata") then
-                               @ref_ns.push(col.ns)
-                               @ref_ns.sort!()
-                       end
-                       @columns.push(col)
-               end
-
-               def row_size()
-                       size = 0
-                       @columns.each { |col|
-                               size += col.size
-                       }
-                       return size
-               end
-       end
-
-       class Column < FieldWorker
-
-               def initialize(name, type, target)
-                       super(name, type, target)
-               end
-
-       end
-
-       class Collection
-
-               attr_reader(:type)
-               attr_reader(:intf)
-               attr_reader(:name)
-               attr_reader(:container)
-               attr_reader(:container_impl)
-               attr_reader(:item_name)
-               attr_reader(:visitable)
-               attr_reader(:visitor)
-               attr_reader(:visitThis)
-               attr_reader(:visitItem)
-               attr_reader(:lazyload)
-               attr_reader(:pathtoloader)
-               attr_reader(:target)
-               attr_reader(:indexed)
-
-               def initialize(type, container, visit, name, lazyload, pathtoloader, target, indexed = false, usecntintf = false)
-                       @type = type
-                       basename = (name.nil? ? type : name)
-                       @intf = "I" + basename + "Collection"
-                       @name = @intf[1..@intf.length]
-                       @item_name = basename[0..basename.length]
-                       @container = container
-                       @container_impl = usecntintf ? @container : @container[0..@container.length]
-                       if (!visit.nil?) then
-                               @visitable = visit + "Visitable"
-                               @visitor = visit + "Visitor"
-                               @visitThis = "Visit" + @name
-                               @visitItem = "Visit" + @item_name
-                       end
-                       @lazyload = lazyload
-                       @pathtoloader = pathtoloader
-                       @target = target
-                       @indexed = indexed
-               end
-       end
-
-       class OpCode < Evolutive
-
-               attr_reader(:name)
-               attr_reader(:field_name)
-               attr_reader(:op1)
-               attr_reader(:op2)
-               attr_reader(:size)
-               attr_reader(:flowcontrol)
-               attr_reader(:opcodetype)
-               attr_reader(:operandtype)
-               attr_reader(:stackbehaviourpop)
-               attr_reader(:stackbehaviourpush)
-
-               def initialize(name, op1, op2, flowcontrol, opcodetype, operandtype, stackbehaviourpop, stackbehaviourpush, requ)
-                       super(requ)
-                       @name = name
-                       @field_name = name_to_prop(name)
-                       @op1 = op1 ; @op2 = op2
-                       @size = @op1 == "0xff" ? 1 : 2
-                       @flowcontrol = "FlowControl." + flowcontrol
-                       @opcodetype = "OpCodeType." + opcodetype
-                       @operandtype = "OperandType." + operandtype
-                       @stackbehaviourpop = "StackBehaviour." + stackbehaviourpop
-                       @stackbehaviourpush = "StackBehaviour." + stackbehaviourpush
-               end
-
-               def name_to_prop(name)
-                       field = ""
-                       ar = name.split(".")
-                       ar.each { |part|
-                               field += part.capitalize()
-                               field += "_" unless ar.last == part
-                       }
-                       return field
-               end
-       end
-
-       class Field < FieldWorker
-
-               attr_reader(:default)
-
-               def initialize(name, type, default)
-                       super(name, type, nil)
-                       @default = default
-               end
-       end
-
-       class CodedIndexTable
-
-               attr_reader(:name)
-               attr_reader(:tag)
-
-               def initialize(name, tag)
-                       @name = name
-                       @tag = tag
-               end
-       end
-
-       class CodedIndex < Evolutive
-
-               attr_reader(:name)
-               attr_reader(:size)
-               attr_reader(:tables)
-
-               def initialize(name, size, requ)
-                       super(requ)
-                       @name = name
-                       @size = size
-                       @tables = Array.new
-               end
-
-               def add_table(name, tag)
-                       @tables.push(CodedIndexTable.new(name, tag))
-               end
-       end
-
-end
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-gen.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-gen.rb
deleted file mode 100755 (executable)
index dec7a1f..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env ruby
-# extern libraries used by code generator
-
-require 'erb'
-require 'rexml/document'
-
-# our library
-
-require 'cecil-gen-types'
-
-# time to generate code now
-
-$types = Hash.new
-$tables = Array.new
-$colls = Array.new
-$coded_indexes = Array.new
-$ops = Array.new
-
-doc = REXML::Document.new(File.open("cecil.xml"))
-
-doc.root.each_element("/cecil/types//type") { |node|
-       type = Cecil::Type.new(
-               node.attribute("name").value,
-               node.attribute("size").value.to_i,
-               (node.attribute("underlying").nil? ? nil : node.attribute("underlying").value))
-       $types[type.name] = type
-}
-
-doc.root.each_element("/cecil/metadata/tables//table") { |node|
-       table = Cecil::Table.new(node.attribute("name").value,
-               node.attribute("rid").value,
-               node.attribute("requires").nil? ? nil : node.attribute("requires").value)
-       node.each_element("column") { |col|
-               column = Cecil::Column.new(col.attribute("name").value,
-                       $types[col.attribute("type").value],
-                       col.attribute("target").nil? ? nil : col.attribute("target").value)
-               table.add_column(column)
-       }
-       $tables.push(table)
-}
-
-$tables.sort!() { |a, b|
-       a.name <=> b.name
-}
-
-$stables = $tables.sort { |a, b|
-       eval(a.rid) <=> eval(b.rid)
-}
-
-doc.root.each_element("/cecil/metadata/codedindexes//codedindex") { |node|
-       ci = Cecil::CodedIndex.new(node.attribute("name").value,
-               node.attribute("size").value,
-               node.attribute("requires").nil? ? nil : node.attribute("requires").value)
-       node.each_element("table") { |table|
-               ci.add_table(table.attribute("name").value, table.attribute("tag").value)
-       }
-       $coded_indexes.push(ci)
-}
-
-doc.root.each_element("/cecil/metadata/opcodes//opcode") { |node|
-       $ops.push(Cecil::OpCode.new(node.attribute("name").value, node.attribute("op1").value,
-               node.attribute("op2").value, node.attribute("flowcontrol").value,
-               node.attribute("opcodetype").value, node.attribute("operandtype").value,
-               node.attribute("stackbehaviourpop").value, node.attribute("stackbehaviourpush").value,
-               node.attribute("requires").nil? ? nil : node.attribute("requires").value))
-}
-
-$ops.sort!() { |a, b|
-       if a.op1 == b.op1
-               eval(a.op2) <=> eval(b.op2)
-       elsif a.op1 == "0xff"
-               -1
-       else
-               1
-       end
-}
-
-doc.root.each_element("/cecil/collections//collection") { |node|
-       $colls.push(Cecil::Collection.new(node.attribute("type").value, node.attribute("container").value,
-               (node.attribute("visit").nil? ? nil : node.attribute("visit").value),
-               (node.attribute("name").nil? ? nil : node.attribute("name").value),
-               (node.attribute("lazyload").nil? ? false : node.attribute("lazyload").value == "true"),
-               (node.attribute("pathtoloader").nil? ? nil : node.attribute("pathtoloader").value),
-               node.attribute("target").value,
-               (node.attribute("indexed").nil? ? false : node.attribute("indexed").value == "true"),
-               (node.attribute("usecontainerinterface").nil? ? false : node.attribute("usecontainerinterface").value == "true")))
-}
-
-def cecil_compile(file, template)
-
-       erb = ERB.new(IO.read(template))
-       res = erb.result
-
-       if (!File.exists?(file))
-
-               File.open(file, File::CREAT|File::WRONLY|File::TRUNC) { |cur_file|
-                       cur_file.write(res)
-               }
-
-               puts("#Created: #{file}")
-
-       else
-
-               ext = ".tmp"
-
-               File.open(file + ext, File::CREAT|File::WRONLY|File::TRUNC) { |temp_file|
-                       temp_file.write(res)
-               }
-
-               save = Array.new
-
-               [file, file + ext].each { |fileloc|
-                       File.open(fileloc, File::RDONLY) { |f|
-                               buf = f.readlines
-                               buf.each { |line|
-                                       line.chomp!()
-                               }
-                               buf = buf.join
-                               buf = buf[buf.index("SOFTWARE."), buf.length]
-                               save.push(buf)
-                       }
-               }
-
-               if (save[0] != save[1]) then
-                       File.delete(file) if File.exists?(file)
-                       File.rename(file + ext, file)
-                       puts("#Modified: #{file}")
-               else
-                       File.delete(file + ext)
-               end
-       end
-end
-
-$tables.each { |table|
-       $cur_table = table
-       filename = "../Mono.Cecil.Metadata/" + table.name + ".cs"
-       cecil_compile(filename, "./templates/Table.cs")
-}
-$cur_table = nil
-
-[ "MetadataTableReader.cs", "MetadataRowReader.cs",
-  "MetadataTableWriter.cs", "MetadataRowWriter.cs", "BaseMetadataVisitor.cs",
-  "CodedIndex.cs", "Utilities.cs" ].each { |file|
-       cecil_compile("../Mono.Cecil.Metadata/" + file, "./templates/" + file)
-}
-
-cecil_compile("../Mono.Cecil.Metadata/IMetadataVisitor.cs", "./templates/IMetadataVisitor.cs")
-
-cecil_compile("../Mono.Cecil.Cil/OpCodes.cs", "./templates/OpCodes.cs")
-cecil_compile("../Mono.Cecil.Cil/Code.cs", "./templates/Code.cs")
-
-$colls.each { |coll|
-       $cur_coll = coll
-       file = "../#{coll.target}/" + coll.name + ".cs"
-       type = coll.indexed ? "Indexed" : "Named"
-       template = "./templates/#{type}Collection.cs"
-
-       cecil_compile(file, template)
-}
-$cur_coll = nil
-
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-mig.rb b/mcs/class/Mono.Cecil/CodeGen/cecil-mig.rb
deleted file mode 100755 (executable)
index a5104fb..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env ruby
-
-#
-# usage cecil-mig.rb directory
-#
-
-dir = ARGV.length > 0 ? ARGV[0] : "."
-
-$replaces = {
-       "GenericParamAttributes" => "GenericParameterAttributes",
-       "ParamAttributes" => "ParameterAttributes",
-       "IParameterReference" => "ParameterDefinition",
-       "IPropertyReference" => "PropertyDefinition",
-       "IEventReference" => "EventDefinition",
-       "IVariableReference" => "VariableDefinition",
-       "IMarshalDesc" => "MarshalSpec",
-       "MarshalDesc" => "MarshalSpec",
-       "IArrayMarshalDesc" => "ArrayMarshalSpec",
-       "ArrayMarshalDesc" => "ArrayMarshalSpec",
-       "ICustomMarshalerDesc" => "CustomMarshalerSpec",
-       "CustomMarshalerDesc" => "CustomMarshalerSpec",
-       "ISafeArrayDesc" => "SafeArraySpec",
-       "SafeArrayDesc" => "SafeArraySpec",
-       "IFixedArrayDesc" => "FixedArraySpec",
-       "FixedArrayDesc" => "FixedArraySpec",
-       "IFixedSysStringDesc" => "FixedSysStringSpec",
-       "FixedSysStringDesc" => "FixedSysStringSpec",
-       "IModifierType" => "ModType"
-}
-
-$collections = [
-       "AssemblyNameReferenceCollection",
-       "ModuleReferenceCollection",
-       "ModuleDefinitionCollection",
-       "ResourceCollection",
-       "TypeDefinitionCollection",
-       "TypeReferenceCollection",
-       "InterfaceCollection",
-       "ParameterDefinitionCollection",
-       "OverrideCollection",
-       "MethodDefinitionCollection",
-       "ConstructorCollection",
-       "EventDefinitionCollection",
-       "FieldDefinitionCollection",
-       "PropertyDefinitionCollection",
-       "InstructionCollection",
-       "ExceptionHandlerCollection",
-       "VariableDefinitionCollection",
-       "ArrayDimensionCollection",
-       "CustomAttributeCollection",
-       "ExternTypeCollection",
-       "NestedTypeCollection",
-       "SecurityDeclarationCollection",
-       "MemberReferenceCollection",
-       "GenericParameterCollection",
-       "GenericArgumentCollection",
-       "ConstraintCollection"
-]
-
-$types = [
-       "AssemblyDefinition",
-       "ArrayDimension",
-       "ArrayType",
-       "AssemblyLinkedResource",
-       "AssemblyNameReference",
-       "AssemblyNameDefinition",
-       "CallSite",
-       "CustomAttribute",
-       "EmbeddedResource",
-       "EventDefinition",
-       "EventReference",
-       "FieldDefinition",
-       "FieldReference",
-       "FunctionPointerType",
-       "GenericInstanceMethod",
-       "GenericInstanceType",
-       "GenericParameter",
-       "LinkedResource",
-       "MethodDefinition",
-       "MethodReference",
-       "MethodReturnType",
-       "ModifierOptional",
-       "ModifierRequired",
-       "ModuleDefinition",
-       "ModuleReference",
-       "ParameterDefinition",
-       "ParameterReference",
-       "PinnedType",
-       "PInvokeInfo",
-       "PropertyDefinition",
-       "PropertyReference",
-       "ReferenceType",
-       "Resource",
-       "SecurityDeclaration",
-       "TypeDefinition",
-       "TypeReference",
-       "TypeSpecification",
-
-       "Instruction",
-       "ExceptionHandler",
-       "MethodBody",
-       "VariableDefinition",
-       "VariableReference"
-]
-
-def iface(name)
-       return "I" + name
-end
-
-def bang(buffer, re, str)
-       nl = "([\\W])"
-       buffer.gsub!(Regexp.new("#{nl}(#{re})#{nl}"), "\\1" + str + "\\3")
-end
-
-def process_replaces(buffer)
-       $replaces.each_key { |key|
-               bang(buffer, key, $replaces[key])
-       }
-end
-
-def process_collections(buffer)
-       $collections.each { |name|
-               bang(buffer, iface(name), name)
-       }
-end
-
-def process_types(buffer)
-       $types.each { |name|
-               bang(buffer, iface(name), name)
-       }
-end
-
-def process_unbreak(buffer)
-       $unbreak.each { |name|
-               bang(buffer, name, iface(name))
-       }
-end
-
-def process(file)
-       buffer = ""
-       original = ""
-       File.open(file, File::RDONLY) { |f|
-               original = f.read()
-               buffer = original.clone
-               process_replaces(buffer)
-               process_collections(buffer)
-               process_types(buffer)
-       }
-
-       File.open(file, File::WRONLY | File::TRUNC) { |f|
-               f.write(buffer)
-               puts("#{file} processed")
-       } if (original != buffer)
-
-end
-
-Dir[File.join(dir, "**", "*.*")].each { |file|
-       process(file) if not File.directory?(file)
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil-update-rev b/mcs/class/Mono.Cecil/CodeGen/cecil-update-rev
deleted file mode 100755 (executable)
index c1c1f91..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env ruby
-
-svn = "svn+ssh://mono-cvs.ximian.com/source/"
-info = "Mono.Cecil/AssemblyInfo.cs"
-
-$rev = 0
-
-IO::popen("svn info #{svn}").each { |line|
-       $rev = $1.to_i if line =~ /^Revision: ([0-9]+)/
-}
-
-if $rev == 0
-       puts "Cannot get last revision"
-       exit(1)
-end
-
-def read_file(file)
-       content = ""
-       f = File.new(file, File::CREAT | File::RDONLY)
-       content << f.readlines.join
-       f.close
-
-       return content
-end
-
-def write_file(file, content)
-       File.open(file, File::CREAT | File::WRONLY) { |f|
-               f.write(content)
-       }
-end
-
-def patch_info(content)
-       patched = ""
-       content.each_line { |line|
-               if not line =~ /AssemblyVersion/
-                       patched << line
-               else
-                       patched << line.gsub(/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/) {
-                               next_rev = $rev.next
-                               cut = 10000
-                               build_rev = (next_rev / cut).ceil
-                               revision = next_rev - (build_rev * cut)
-                               build = (($3.to_i / 100).ceil * 100) + build_rev
-                               "#{$1.to_s}.#{$2.to_s}.#{build.to_s}.#{(revision).to_s}"
-                       }
-               end
-       }
-       return patched
-end
-
-write_file(info, patch_info(read_file(info)))
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil.xml b/mcs/class/Mono.Cecil/CodeGen/cecil.xml
deleted file mode 100644 (file)
index 0fded33..0000000
+++ /dev/null
@@ -1,608 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<cecil>
-
-       <types>
-               <type name="byte" size="1" />
-               <type name="ushort" size="2" />
-               <type name="short" size="2" />
-               <type name="uint" size="4" />
-               <type name="int" size="4" />
-               <type name="Mono.Cecil.Binary.DataDirectory" size="8" />
-               <type name="Mono.Cecil.Binary.ImageCharacteristics" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.Binary.DebugStoreType" underlying="uint" size="4" />
-               <type name="Mono.Cecil.Binary.SubSystem" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.Binary.SectionCharacteristics" underlying="uint" size="4" />
-               <type name="Mono.Cecil.Binary.RVA" size="4" />
-               <type name="Mono.Cecil.Binary.RuntimeImage" underlying="uint" size="4" />
-               <type name="Mono.Cecil.AssemblyHashAlgorithm" underlying="uint" size="4" />
-               <type name="Mono.Cecil.AssemblyFlags" underlying="uint" size="4" />
-               <type name="Mono.Cecil.EventAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.TypeAttributes" underlying="uint" size="4" />
-               <type name="Mono.Cecil.FieldAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.FileAttributes" underlying="uint" size="4" />
-               <type name="Mono.Cecil.GenericParameterAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.PInvokeAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.ParameterAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.PropertyAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.ManifestResourceAttributes" underlying="uint" size="4" />
-               <type name="Mono.Cecil.MethodAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.MethodImplAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.MethodSemanticsAttributes" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.SecurityAction" underlying="short" size="2" />
-               <type name="Mono.Cecil.Metadata.ElementType" underlying="ushort" size="2" />
-               <type name="Mono.Cecil.Metadata.MetadataToken" underlying="uint" size="4" />
-       </types>
-
-       <!--
-               All details about the Metadata
-               reader and writer of Cecil
-       -->
-       <metadata>
-
-               <!--
-                       This part contains ECMA spec
-                       about CIL tables and rows positions
-                       in a valid CLI image
-               -->
-               <tables>
-                       <table name="Assembly" rid="0x20">
-                               <column name="HashAlgId" type="Mono.Cecil.AssemblyHashAlgorithm" />
-                               <column name="MajorVersion" type="ushort" />
-                               <column name="MinorVersion" type="ushort" />
-                               <column name="BuildNumber" type="ushort" />
-                               <column name="RevisionNumber" type="ushort" />
-                               <column name="Flags" type="Mono.Cecil.AssemblyFlags" />
-                               <column name="PublicKey" type="uint" target="BlobHeap" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Culture" type="uint" target="StringsHeap" />
-                       </table>
-                       <table name="AssemblyOS" rid="0x22">
-                               <column name="OSPlatformID" type="uint" />
-                               <column name="OSMajorVersion" type="uint" />
-                               <column name="OSMinorVersion" type="uint" />
-                       </table>
-                       <table name="AssemblyProcessor" rid="0x21">
-                               <column name="Processor" type="uint" />
-                       </table>
-                       <table name="AssemblyRef" rid="0x23">
-                               <column name="MajorVersion" type="ushort" />
-                               <column name="MinorVersion" type="ushort" />
-                               <column name="BuildNumber" type="ushort" />
-                               <column name="RevisionNumber" type="ushort" />
-                               <column name="Flags" type="Mono.Cecil.AssemblyFlags" />
-                               <column name="PublicKeyOrToken" type="uint" target="BlobHeap" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Culture" type="uint" target="StringsHeap" />
-                               <column name="HashValue" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="AssemblyRefOS" rid="0x25">
-                               <column name="OSPlatformID" type="uint" />
-                               <column name="OSMajorVersion" type="uint" />
-                               <column name="OSMinorVersion" type="uint" />
-                               <column name="AssemblyRef" type="uint" target="AssemblyRef" />
-                       </table>
-                       <table name="AssemblyRefProcessor" rid="0x24">
-                               <column name="Processor" type="uint" />
-                               <column name="AssemblyRef" type="uint" target="AssemblyRef" />
-                       </table>
-                       <table name="ClassLayout" rid="0x0f">
-                               <column name="PackingSize" type="ushort" />
-                               <column name="ClassSize" type="uint" />
-                               <column name="Parent" type="uint" target="TypeDef" />
-                       </table>
-                       <table name="Constant" rid="0x0b">
-                               <column name="Type" type="Mono.Cecil.Metadata.ElementType" />
-                               <column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasConstant" />
-                               <column name="Value" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="CustomAttribute" rid="0x0c">
-                               <column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasCustomAttribute" />
-                               <column name="Type" type="Mono.Cecil.Metadata.MetadataToken" target="CustomAttributeType" />
-                               <column name="Value" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="DeclSecurity" rid="0x0e">
-                               <column name="Action" type="Mono.Cecil.SecurityAction" />
-                               <column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasDeclSecurity" />
-                               <column name="PermissionSet" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="EventMap" rid="0x12">
-                               <column name="Parent" type="uint" target="TypeDef" />
-                               <column name="EventList" type="uint" target="Event" />
-                       </table>
-                       <table name="Event" rid="0x14">
-                               <column name="EventFlags" type="Mono.Cecil.EventAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="EventType" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-                       </table>
-                       <table name="EventPtr" rid="0x13">
-                               <column name="Event" type="uint" target="Event" />
-                       </table>
-                       <table name="ExportedType" rid="0x27">
-                               <column name="Flags" type="Mono.Cecil.TypeAttributes" />
-                               <column name="TypeDefId" type="uint" />
-                               <column name="TypeName" type="uint" target="StringsHeap" />
-                               <column name="TypeNamespace" type="uint" target="StringsHeap" />
-                               <column name="Implementation" type="Mono.Cecil.Metadata.MetadataToken" target="Implementation" />
-                       </table>
-                       <table name="Field" rid="0x04">
-                               <column name="Flags" type="Mono.Cecil.FieldAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Signature" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="FieldLayout" rid="0x10">
-                               <column name="Offset" type="uint" />
-                               <column name="Field" type="uint" target="Field" />
-                       </table>
-                       <table name="FieldMarshal" rid="0x0d">
-                               <column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasFieldMarshal" />
-                               <column name="NativeType" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="FieldPtr" rid="0x03">
-                               <column name="Field" type="uint" target="Field" />
-                       </table>
-                       <table name="FieldRVA" rid="0x1d">
-                               <column name="RVA" type="Mono.Cecil.Binary.RVA" />
-                               <column name="Field" type="uint" target="Field" />
-                       </table>
-                       <table name="File" rid="0x26">
-                               <column name="Flags" type="Mono.Cecil.FileAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="HashValue" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="GenericParam" rid="0x2a" requires="NET_2_0">
-                               <column name="Number" type="ushort" />
-                               <column name="Flags" type="Mono.Cecil.GenericParameterAttributes" />
-                               <column name="Owner" type="Mono.Cecil.Metadata.MetadataToken" target="TypeOrMethodDef" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                       </table>
-                       <table name="GenericParamConstraint" rid="0x2c" requires="NET_2_0">
-                               <column name="Owner" type="uint" target="GenericParam" />
-                               <column name="Constraint" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-                       </table>
-                       <table name="ImplMap" rid="0x1c">
-                               <column name="MappingFlags" type="Mono.Cecil.PInvokeAttributes" />
-                               <column name="MemberForwarded" type="Mono.Cecil.Metadata.MetadataToken" target="MemberForwarded" />
-                               <column name="ImportName" type="uint" target="StringsHeap" />
-                               <column name="ImportScope" type="uint" target="ModuleRef" />
-                       </table>
-                       <table name="InterfaceImpl" rid="0x09">
-                               <column name="Class" type="uint" target="TypeDef" />
-                               <column name="Interface" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-                       </table>
-                       <table name="ManifestResource" rid="0x28">
-                               <column name="Offset" type="uint" />
-                               <column name="Flags" type="Mono.Cecil.ManifestResourceAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Implementation" type="Mono.Cecil.Metadata.MetadataToken" target="Implementation" />
-                       </table>
-                       <table name="MemberRef" rid="0x0a">
-                               <column name="Class" type="Mono.Cecil.Metadata.MetadataToken" target="MemberRefParent" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Signature" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="Method" rid="0x06">
-                               <column name="RVA" type="Mono.Cecil.Binary.RVA" />
-                               <column name="ImplFlags" type="Mono.Cecil.MethodImplAttributes" />
-                               <column name="Flags" type="Mono.Cecil.MethodAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Signature" type="uint" target="BlobHeap" />
-                               <column name="ParamList" type="uint" target="Param" />
-                       </table>
-                       <table name="MethodImpl" rid="0x19">
-                               <column name="Class" type="uint" target="TypeDef" />
-                               <column name="MethodBody" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-                               <column name="MethodDeclaration" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-                       </table>
-                       <table name="MethodPtr" rid="0x05">
-                               <column name="Method" type="uint" target="Method" />
-                       </table>
-                       <table name="MethodSemantics" rid="0x18">
-                               <column name="Semantics" type="Mono.Cecil.MethodSemanticsAttributes" />
-                               <column name="Method" type="uint" target="Method" />
-                               <column name="Association" type="Mono.Cecil.Metadata.MetadataToken" target="HasSemantics" />
-                       </table>
-                       <table name="MethodSpec" rid="0x2b" requires="NET_2_0">
-                               <column name="Method" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-                               <column name="Instantiation" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="Module" rid="0x00">
-                               <column name="Generation" type="ushort" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Mvid" type="uint" target="GuidHeap" />
-                               <column name="EncId" type="uint" target="GuidHeap" />
-                               <column name="EncBaseId" type="uint" target="GuidHeap" />
-                       </table>
-                       <table name="ModuleRef" rid="0x1a">
-                               <column name="Name" type="uint" target="StringsHeap" />
-                       </table>
-                       <table name="NestedClass" rid="0x29">
-                               <column name="NestedClass" type="uint" target="TypeDef" />
-                               <column name="EnclosingClass" type="uint" target="TypeDef" />
-                       </table>
-                       <table name="Param" rid="0x08">
-                               <column name="Flags" type="Mono.Cecil.ParameterAttributes" />
-                               <column name="Sequence" type="ushort" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                       </table>
-                       <table name="ParamPtr" rid="0x07">
-                               <column name="Param" type="uint" target="Param" />
-                       </table>
-                       <table name="Property" rid="0x17">
-                               <column name="Flags" type="Mono.Cecil.PropertyAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Type" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="PropertyMap" rid="0x15">
-                               <column name="Parent" type="uint" target="TypeDef" />
-                               <column name="PropertyList" type="uint" target="Property" />
-                       </table>
-                       <table name="PropertyPtr" rid="0x16">
-                               <column name="Property" type="uint" target="Property" />
-                       </table>
-                       <table name="StandAloneSig" rid="0x11">
-                               <column name="Signature" type="uint" target="BlobHeap" />
-                       </table>
-                       <table name="TypeDef" rid="0x02">
-                               <column name="Flags" type="Mono.Cecil.TypeAttributes" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Namespace" type="uint" target="StringsHeap" />
-                               <column name="Extends" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-                               <column name="FieldList" type="uint" target="Field" />
-                               <column name="MethodList" type="uint" target="Method" />
-                       </table>
-                       <table name="TypeRef" rid="0x01">
-                               <column name="ResolutionScope" type="Mono.Cecil.Metadata.MetadataToken" target="ResolutionScope" />
-                               <column name="Name" type="uint" target="StringsHeap" />
-                               <column name="Namespace" type="uint" target="StringsHeap" />
-                       </table>
-                       <table name="TypeSpec" rid="0x1b">
-                               <column name="Signature" type="uint" target="BlobHeap" />
-                       </table>
-               </tables>
-
-               <codedindexes>
-                       <codedindex name="TypeDefOrRef" size="2">
-                               <table name="TypeDef" tag="0" />
-                               <table name="TypeRef" tag="1" />
-                               <table name="TypeSpec" tag="2" />
-                       </codedindex>
-                       <codedindex name="HasConstant" size="2">
-                               <table name="Field" tag="0" />
-                               <table name="Param" tag="1" />
-                               <table name="Property" tag="2" />
-                       </codedindex>
-                       <codedindex name="HasCustomAttribute" size="5">
-                               <table name="Method" tag="0" />
-                               <table name="Field" tag="1" />
-                               <table name="TypeRef" tag="2" />
-                               <table name="TypeDef" tag="3" />
-                               <table name="Param" tag="4" />
-                               <table name="InterfaceImpl" tag="5" />
-                               <table name="MemberRef" tag="6" />
-                               <table name="Module" tag="7" />
-                               <table name="DeclSecurity" tag="8" />
-                               <table name="Property" tag="9" />
-                               <table name="Event" tag="10" />
-                               <table name="StandAloneSig" tag="11" />
-                               <table name="ModuleRef" tag="12" />
-                               <table name="TypeSpec" tag="13" />
-                               <table name="Assembly" tag="14" />
-                               <table name="AssemblyRef" tag="15" />
-                               <table name="File" tag="16" />
-                               <table name="ExportedType" tag="17" />
-                               <table name="ManifestResource" tag="18" />
-                               <table name="GenericParam" tag="19" />
-                       </codedindex>
-                       <codedindex name="HasFieldMarshal" size="1">
-                               <table name="Field" tag="0" />
-                               <table name="Param" tag="1" />
-                       </codedindex>
-                       <codedindex name="HasDeclSecurity" size="2">
-                               <table name="TypeDef" tag="0" />
-                               <table name="Method" tag="1" />
-                               <table name="Assembly" tag="2" />
-                       </codedindex>
-                       <codedindex name="MemberRefParent" size="3">
-                               <table name="TypeDef" tag="0" />
-                               <table name="TypeRef" tag="1" />
-                               <table name="ModuleRef" tag="2" />
-                               <table name="Method" tag="3" />
-                               <table name="TypeSpec" tag="4" />
-                       </codedindex>
-                       <codedindex name="HasSemantics" size="1">
-                               <table name="Event" tag="0" />
-                               <table name="Property" tag="1" />
-                       </codedindex>
-                       <codedindex name="MethodDefOrRef" size="1">
-                               <table name="Method" tag="0" />
-                               <table name="MemberRef" tag="1" />
-                       </codedindex>
-                       <codedindex name="MemberForwarded" size="1">
-                               <table name="Field" tag="0" />
-                               <table name="Method" tag="1" />
-                       </codedindex>
-                       <codedindex name="Implementation" size="2">
-                               <table name="File" tag="0" />
-                               <table name="AssemblyRef" tag="1" />
-                               <table name="ExportedType" tag="2" />
-                       </codedindex>
-                       <codedindex name="CustomAttributeType" size="3">
-                               <table name="Method" tag="2" />
-                               <table name="MemberRef" tag="3" />
-                       </codedindex>
-                       <codedindex name="ResolutionScope" size="2">
-                               <table name="Module" tag="0" />
-                               <table name="ModuleRef" tag="1" />
-                               <table name="AssemblyRef" tag="2" />
-                               <table name="TypeRef" tag="3" />
-                       </codedindex>
-                       <codedindex name="TypeOrMethodDef" size="1" requires="NET_2_0">
-                               <table name="TypeDef" tag="0" />
-                               <table name="Method" tag="1" />
-                       </codedindex>
-               </codedindexes>
-
-               <!--
-                       This part contains all the standards opcodes
-               -->
-               <opcodes>
-                       <opcode name="nop" op1="0xff" op2="0x00" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="break" op1="0xff" op2="0x01" flowcontrol="Break" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="ldarg.0" op1="0xff" op2="0x02" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldarg.1" op1="0xff" op2="0x03" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldarg.2" op1="0xff" op2="0x04" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldarg.3" op1="0xff" op2="0x05" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloc.0" op1="0xff" op2="0x06" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloc.1" op1="0xff" op2="0x07" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloc.2" op1="0xff" op2="0x08" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloc.3" op1="0xff" op2="0x09" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="stloc.0" op1="0xff" op2="0x0a" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="stloc.1" op1="0xff" op2="0x0b" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="stloc.2" op1="0xff" op2="0x0c" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="stloc.3" op1="0xff" op2="0x0d" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ldarg.s" op1="0xff" op2="0x0e" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldarga.s" op1="0xff" op2="0x0f" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="starg.s" op1="0xff" op2="0x10" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ldloc.s" op1="0xff" op2="0x11" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloca.s" op1="0xff" op2="0x12" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="stloc.s" op1="0xff" op2="0x13" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ldnull" op1="0xff" op2="0x14" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushref" />
-                       <opcode name="ldc.i4.m1" op1="0xff" op2="0x15" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.0" op1="0xff" op2="0x16" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.1" op1="0xff" op2="0x17" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.2" op1="0xff" op2="0x18" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.3" op1="0xff" op2="0x19" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.4" op1="0xff" op2="0x1a" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.5" op1="0xff" op2="0x1b" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.6" op1="0xff" op2="0x1c" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.7" op1="0xff" op2="0x1d" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.8" op1="0xff" op2="0x1e" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4.s" op1="0xff" op2="0x1f" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i4" op1="0xff" op2="0x20" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldc.i8" op1="0xff" op2="0x21" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineI8" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi8" />
-                       <opcode name="ldc.r4" op1="0xff" op2="0x22" flowcontrol="Next" opcodetype="Primitive" operandtype="ShortInlineR" stackbehaviourpop="Pop0" stackbehaviourpush="Pushr4" />
-                       <opcode name="ldc.r8" op1="0xff" op2="0x23" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineR" stackbehaviourpop="Pop0" stackbehaviourpush="Pushr8" />
-                       <opcode name="dup" op1="0xff" op2="0x25" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1_push1" />
-                       <opcode name="pop" op1="0xff" op2="0x26" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="jmp" op1="0xff" op2="0x27" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="call" op1="0xff" op2="0x28" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-                       <opcode name="calli" op1="0xff" op2="0x29" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineSig" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-                       <opcode name="ret" op1="0xff" op2="0x2a" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Varpop" stackbehaviourpush="Push0" />
-                       <opcode name="br.s" op1="0xff" op2="0x2b" flowcontrol="Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="brfalse.s" op1="0xff" op2="0x2c" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="brtrue.s" op1="0xff" op2="0x2d" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="beq.s" op1="0xff" op2="0x2e" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bge.s" op1="0xff" op2="0x2f" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bgt.s" op1="0xff" op2="0x30" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ble.s" op1="0xff" op2="0x31" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="blt.s" op1="0xff" op2="0x32" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bne.un.s" op1="0xff" op2="0x33" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bge.un.s" op1="0xff" op2="0x34" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bgt.un.s" op1="0xff" op2="0x35" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ble.un.s" op1="0xff" op2="0x36" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="blt.un.s" op1="0xff" op2="0x37" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="br" op1="0xff" op2="0x38" flowcontrol="Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="brfalse" op1="0xff" op2="0x39" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="brtrue" op1="0xff" op2="0x3a" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="beq" op1="0xff" op2="0x3b" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bge" op1="0xff" op2="0x3c" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bgt" op1="0xff" op2="0x3d" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ble" op1="0xff" op2="0x3e" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="blt" op1="0xff" op2="0x3f" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bne.un" op1="0xff" op2="0x40" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bge.un" op1="0xff" op2="0x41" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="bgt.un" op1="0xff" op2="0x42" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ble.un" op1="0xff" op2="0x43" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="blt.un" op1="0xff" op2="0x44" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="switch" op1="0xff" op2="0x45" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineSwitch" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="ldind.i1" op1="0xff" op2="0x46" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.u1" op1="0xff" op2="0x47" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.i2" op1="0xff" op2="0x48" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.u2" op1="0xff" op2="0x49" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.i4" op1="0xff" op2="0x4a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.u4" op1="0xff" op2="0x4b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.i8" op1="0xff" op2="0x4c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi8" />
-                       <opcode name="ldind.i" op1="0xff" op2="0x4d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldind.r4" op1="0xff" op2="0x4e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushr4" />
-                       <opcode name="ldind.r8" op1="0xff" op2="0x4f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushr8" />
-                       <opcode name="ldind.ref" op1="0xff" op2="0x50" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushref" />
-                       <opcode name="stind.ref" op1="0xff" op2="0x51" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stind.i1" op1="0xff" op2="0x52" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stind.i2" op1="0xff" op2="0x53" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stind.i4" op1="0xff" op2="0x54" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stind.i8" op1="0xff" op2="0x55" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi8" stackbehaviourpush="Push0" />
-                       <opcode name="stind.r4" op1="0xff" op2="0x56" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popr4" stackbehaviourpush="Push0" />
-                       <opcode name="stind.r8" op1="0xff" op2="0x57" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popr8" stackbehaviourpush="Push0" />
-                       <opcode name="add" op1="0xff" op2="0x58" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="sub" op1="0xff" op2="0x59" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="mul" op1="0xff" op2="0x5a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="div" op1="0xff" op2="0x5b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="div.un" op1="0xff" op2="0x5c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="rem" op1="0xff" op2="0x5d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="rem.un" op1="0xff" op2="0x5e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="and" op1="0xff" op2="0x5f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="or" op1="0xff" op2="0x60" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="xor" op1="0xff" op2="0x61" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="shl" op1="0xff" op2="0x62" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="shr" op1="0xff" op2="0x63" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="shr.un" op1="0xff" op2="0x64" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="neg" op1="0xff" op2="0x65" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1" />
-                       <opcode name="not" op1="0xff" op2="0x66" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1" />
-                       <opcode name="conv.i1" op1="0xff" op2="0x67" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.i2" op1="0xff" op2="0x68" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.i4" op1="0xff" op2="0x69" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.i8" op1="0xff" op2="0x6a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="conv.r4" op1="0xff" op2="0x6b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr4" />
-                       <opcode name="conv.r8" op1="0xff" op2="0x6c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-                       <opcode name="conv.u4" op1="0xff" op2="0x6d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.u8" op1="0xff" op2="0x6e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="callvirt" op1="0xff" op2="0x6f" flowcontrol="Call" opcodetype="Objmodel" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-                       <opcode name="cpobj" op1="0xff" op2="0x70" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="ldobj" op1="0xff" op2="0x71" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push1" />
-                       <opcode name="ldstr" op1="0xff" op2="0x72" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineString" stackbehaviourpop="Pop0" stackbehaviourpush="Pushref" />
-                       <opcode name="newobj" op1="0xff" op2="0x73" flowcontrol="Call" opcodetype="Objmodel" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Pushref" />
-                       <opcode name="castclass" op1="0xff" op2="0x74" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushref" />
-                       <opcode name="isinst" op1="0xff" op2="0x75" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.r.un" op1="0xff" op2="0x76" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-                       <opcode name="unbox" op1="0xff" op2="0x79" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-                       <opcode name="throw" op1="0xff" op2="0x7a" flowcontrol="Throw" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref" stackbehaviourpush="Push0" />
-                       <opcode name="ldfld" op1="0xff" op2="0x7b" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref" stackbehaviourpush="Push1" />
-                       <opcode name="ldflda" op1="0xff" op2="0x7c" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-                       <opcode name="stfld" op1="0xff" op2="0x7d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ldsfld" op1="0xff" op2="0x7e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldsflda" op1="0xff" op2="0x7f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="stsfld" op1="0xff" op2="0x80" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="stobj" op1="0xff" op2="0x81" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi_pop1" stackbehaviourpush="Push0" />
-                       <opcode name="conv.ovf.i1.un" op1="0xff" op2="0x82" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i2.un" op1="0xff" op2="0x83" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i4.un" op1="0xff" op2="0x84" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i8.un" op1="0xff" op2="0x85" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="conv.ovf.u1.un" op1="0xff" op2="0x86" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u2.un" op1="0xff" op2="0x87" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u4.un" op1="0xff" op2="0x88" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u8.un" op1="0xff" op2="0x89" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="conv.ovf.i.un" op1="0xff" op2="0x8a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u.un" op1="0xff" op2="0x8b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="box" op1="0xff" op2="0x8c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop1" stackbehaviourpush="Pushref" />
-                       <opcode name="newarr" op1="0xff" op2="0x8d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Pushref" />
-                       <opcode name="ldlen" op1="0xff" op2="0x8e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelema" op1="0xff" op2="0x8f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.i1" op1="0xff" op2="0x90" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.u1" op1="0xff" op2="0x91" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.i2" op1="0xff" op2="0x92" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.u2" op1="0xff" op2="0x93" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.i4" op1="0xff" op2="0x94" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.u4" op1="0xff" op2="0x95" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.i8" op1="0xff" op2="0x96" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi8" />
-                       <opcode name="ldelem.i" op1="0xff" op2="0x97" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-                       <opcode name="ldelem.r4" op1="0xff" op2="0x98" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushr4" />
-                       <opcode name="ldelem.r8" op1="0xff" op2="0x99" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushr8" />
-                       <opcode name="ldelem.ref" op1="0xff" op2="0x9a" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushref" />
-                       <opcode name="stelem.i" op1="0xff" op2="0x9b" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.i1" op1="0xff" op2="0x9c" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.i2" op1="0xff" op2="0x9d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.i4" op1="0xff" op2="0x9e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.i8" op1="0xff" op2="0x9f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi8" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.r4" op1="0xff" op2="0xa0" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popr4" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.r8" op1="0xff" op2="0xa1" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popr8" stackbehaviourpush="Push0" />
-                       <opcode name="stelem.ref" op1="0xff" op2="0xa2" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popref" stackbehaviourpush="Push0" />
-                       <opcode name="ldelem.any" op1="0xff" op2="0xa3" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi" stackbehaviourpush="Push1" requires="NET_2_0" />
-                       <opcode name="stelem.any" op1="0xff" op2="0xa4" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi_popref" stackbehaviourpush="Push0" requires="NET_2_0" />
-                       <opcode name="unbox.any" op1="0xff" op2="0xa5" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Push1" requires="NET_2_0" />
-                       <opcode name="conv.ovf.i1" op1="0xff" op2="0xb3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u1" op1="0xff" op2="0xb4" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i2" op1="0xff" op2="0xb5" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u2" op1="0xff" op2="0xb6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i4" op1="0xff" op2="0xb7" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u4" op1="0xff" op2="0xb8" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i8" op1="0xff" op2="0xb9" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="conv.ovf.u8" op1="0xff" op2="0xba" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-                       <opcode name="refanyval" op1="0xff" op2="0xc2" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="ckfinite" op1="0xff" op2="0xc3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-                       <opcode name="mkrefany" op1="0xff" op2="0xc6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push1" />
-                       <opcode name="ldtoken" op1="0xff" op2="0xd0" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineTok" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.u2" op1="0xff" op2="0xd1" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.u1" op1="0xff" op2="0xd2" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.i" op1="0xff" op2="0xd3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.i" op1="0xff" op2="0xd4" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="conv.ovf.u" op1="0xff" op2="0xd5" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="add.ovf" op1="0xff" op2="0xd6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="add.ovf.un" op1="0xff" op2="0xd7" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="mul.ovf" op1="0xff" op2="0xd8" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="mul.ovf.un" op1="0xff" op2="0xd9" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="sub.ovf" op1="0xff" op2="0xda" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="sub.ovf.un" op1="0xff" op2="0xdb" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-                       <opcode name="endfinally" op1="0xff" op2="0xdc" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="leave" op1="0xff" op2="0xdd" flowcontrol="Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="PopAll" stackbehaviourpush="Push0" />
-                       <opcode name="leave.s" op1="0xff" op2="0xde" flowcontrol="Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="PopAll" stackbehaviourpush="Push0" />
-                       <opcode name="stind.i" op1="0xff" op2="0xdf" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="conv.u" op1="0xff" op2="0xe0" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="arglist" op1="0xfe" op2="0x00" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ceq" op1="0xfe" op2="0x01" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="cgt" op1="0xfe" op2="0x02" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="cgt.un" op1="0xfe" op2="0x03" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="clt" op1="0xfe" op2="0x04" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="clt.un" op1="0xfe" op2="0x05" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="ldftn" op1="0xfe" op2="0x06" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="ldvirtftn" op1="0xfe" op2="0x07" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-                       <opcode name="ldarg" op1="0xfe" op2="0x09" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldarga" op1="0xfe" op2="0x0a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="starg" op1="0xfe" op2="0x0b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="ldloc" op1="0xfe" op2="0x0c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-                       <opcode name="ldloca" op1="0xfe" op2="0x0d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="stloc" op1="0xfe" op2="0x0e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-                       <opcode name="localloc" op1="0xfe" op2="0x0f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-                       <opcode name="endfilter" op1="0xfe" op2="0x11" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="unaligned." op1="0xfe" op2="0x12" flowcontrol="Meta" opcodetype="Prefix" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="volatile." op1="0xfe" op2="0x13" flowcontrol="Meta" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="tail." op1="0xfe" op2="0x14" flowcontrol="Meta" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="initobj" op1="0xfe" op2="0x15" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-                       <opcode name="constrained." op1="0xfe" op2="0x16" flowcontrol="Next" opcodetype="Prefix" operandtype="InlineType" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="cpblk" op1="0xfe" op2="0x17" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="initblk" op1="0xfe" op2="0x18" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi_popi" stackbehaviourpush="Push0" />
-                       <opcode name="no." op1="0xfe" op2="0x19" flowcontrol="Next" opcodetype="Prefix" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="rethrow" op1="0xfe" op2="0x1a" flowcontrol="Throw" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-                       <opcode name="sizeof" op1="0xfe" op2="0x1c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-                       <opcode name="refanytype" op1="0xfe" op2="0x1d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-                       <opcode name="readonly." op1="0xfe" op2="0x1e" flowcontrol="Next" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-               </opcodes>
-
-       </metadata>
-
-       <!--
-               This part contains all the collections
-               that will be used in the Reflection ns
-       -->
-       <collections>
-               <collection type="AssemblyNameReference" container="ModuleDefinition" visit="IReflectionStructure" target="Mono.Cecil" indexed="true" />
-               <collection type="ModuleReference" container="ModuleDefinition" visit="IReflectionStructure" indexed="true" target="Mono.Cecil" />
-               <collection type="ModuleDefinition" container="AssemblyDefinition" visit="IReflectionStructure" indexed="true" target="Mono.Cecil" />
-               <collection type="Resource" container="ModuleDefinition" visit="IReflectionStructure" target="Mono.Cecil" indexed="true" />
-               <collection type="TypeDefinition" container="ModuleDefinition" visit="IReflection" target="Mono.Cecil" />
-               <collection type="TypeReference" container="ModuleDefinition" visit="IReflection" target="Mono.Cecil" />
-               <collection type="TypeReference" container="TypeDefinition" visit="IReflection" name="Interface" indexed="true" target="Mono.Cecil" />
-               <collection type="ParameterDefinition" container="IMemberReference" visit="IReflection" indexed="true" target="Mono.Cecil" />
-               <collection type="MethodReference" container="MethodDefinition" visit="IReflection" name="Override" indexed="true" target="Mono.Cecil" />
-               <collection type="MethodDefinition" container="TypeDefinition" visit="IReflection" indexed="true" target="Mono.Cecil" />
-               <collection type="MethodDefinition" container="TypeDefinition" visit="IReflection" name="Constructor" indexed="true" target="Mono.Cecil" />
-               <collection type="EventDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-               <collection type="FieldDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-               <collection type="PropertyDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-               <collection type="Instruction" container="MethodBody" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-               <collection type="ExceptionHandler" container="MethodBody" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-               <collection type="VariableDefinition" container="IVariableDefinitionProvider" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-               <collection type="ArrayDimension" container="ArrayType" target="Mono.Cecil" indexed="true" />
-               <!-- modified behaviour
-               <collection type="SecurityDeclaration" container="IHasSecurity" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-               -->
-               <collection type="CustomAttribute" container="ICustomAttributeProvider" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-               <collection type="TypeReference" container="ModuleDefinition" target="Mono.Cecil" visit="IReflection" name="ExternType" />
-               <collection type="TypeDefinition" container="TypeDefinition" target="Mono.Cecil" visit="IReflection" name="NestedType" indexed="true" />
-               <collection type="MemberReference" container="ModuleDefinition" target="Mono.Cecil" visit="IReflection" indexed="true" />
-               <collection type="GenericParameter" container="IGenericParameterProvider" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-               <collection type="TypeReference" name="GenericArgument" container="IGenericInstance" target="Mono.Cecil" indexed="true" />
-               <collection type="TypeReference" name="Constraint" container="GenericParameter" target="Mono.Cecil" indexed="true" />
-               <collection type="Scope" container="IScopeProvider" visit="ICode" target="Mono.Cecil.Cil" indexed="true" />
-       </collections>
-
-</cecil>
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/BaseMetadataVisitor.cs b/mcs/class/Mono.Cecil/CodeGen/templates/BaseMetadataVisitor.cs
deleted file mode 100644 (file)
index c77583f..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-// BaseMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public abstract class BaseMetadataVisitor : IMetadataVisitor {
-
-               public virtual void VisitMetadataRoot (MetadataRoot root)
-               {
-               }
-
-               public virtual void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-               {
-               }
-
-               public virtual void VisitMetadataStreamCollection (MetadataStreamCollection streams)
-               {
-               }
-
-               public virtual void VisitMetadataStream (MetadataStream stream)
-               {
-               }
-
-               public virtual void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
-               {
-               }
-
-               public virtual void VisitGuidHeap (GuidHeap heap)
-               {
-               }
-
-               public virtual void VisitStringsHeap (StringsHeap heap)
-               {
-               }
-
-               public virtual void VisitTablesHeap (TablesHeap heap)
-               {
-               }
-
-               public virtual void VisitBlobHeap (BlobHeap heap)
-               {
-               }
-
-               public virtual void VisitUserStringsHeap (UserStringsHeap heap)
-               {
-               }
-
-               public virtual void TerminateMetadataRoot (MetadataRoot root)
-               {
-               }
-       }
-
-       public abstract class BaseMetadataTableVisitor : IMetadataTableVisitor {
-
-               public virtual void VisitTableCollection (TableCollection coll)
-               {
-               }
-
-<% $tables.each { |table| %>           public virtual void Visit<%=table.table_name%> (<%=table.table_name%> table)
-               {
-               }
-
-<% } %>                public virtual void TerminateTableCollection (TableCollection coll)
-               {
-               }
-
-               public abstract IMetadataRowVisitor GetRowVisitor();
-       }
-
-       public abstract class BaseMetadataRowVisitor : IMetadataRowVisitor {
-
-               public virtual void VisitRowCollection (RowCollection coll)
-               {
-               }
-
-<% $tables.each { |table| %>           public virtual void Visit<%=table.row_name%> (<%=table.row_name%> row)
-               {
-               }
-
-<% } %>                public virtual void TerminateRowCollection (RowCollection coll)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/Code.cs b/mcs/class/Mono.Cecil/CodeGen/templates/Code.cs
deleted file mode 100644 (file)
index 7274f8c..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// Code.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum Code {
-<% $ops.each { |op| %>         <%=op.field_name%>,
-<% } %>        }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/CodedIndex.cs b/mcs/class/Mono.Cecil/CodeGen/templates/CodedIndex.cs
deleted file mode 100644 (file)
index 9f6a9d8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// CodedIndex.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public enum CodedIndex {
-<% $coded_indexes.each { |ci| %>               <%=ci.name%><% if ci != $coded_indexes.last %>,<% end %>
-<% }
-%>     }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/IMetadataVisitor.cs b/mcs/class/Mono.Cecil/CodeGen/templates/IMetadataVisitor.cs
deleted file mode 100644 (file)
index 421f8cc..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// IMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public interface IMetadataVisitor {
-               void VisitMetadataRoot (MetadataRoot root);
-               void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header);
-               void VisitMetadataStreamCollection (MetadataStreamCollection streams);
-               void VisitMetadataStream (MetadataStream stream);
-               void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header);
-               void VisitGuidHeap (GuidHeap heap);
-               void VisitStringsHeap (StringsHeap heap);
-               void VisitTablesHeap (TablesHeap heap);
-               void VisitBlobHeap (BlobHeap heap);
-               void VisitUserStringsHeap (UserStringsHeap heap);
-
-               void TerminateMetadataRoot (MetadataRoot root);
-       }
-
-       public interface IMetadataTableVisitor {
-               void VisitTableCollection (TableCollection coll);
-
-<% $tables.each { |table| %>           void Visit<%=table.table_name%> (<%=table.table_name%> table);
-<% } %>
-               void TerminateTableCollection (TableCollection coll);
-               IMetadataRowVisitor GetRowVisitor();
-}
-
-       public interface IMetadataRowVisitor {
-               void VisitRowCollection (RowCollection coll);
-
-<% $tables.each { |table| %>           void Visit<%=table.row_name%> (<%=table.row_name%> row);
-<% } %>
-               void TerminateRowCollection (RowCollection coll);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/IndexedCollection.cs b/mcs/class/Mono.Cecil/CodeGen/templates/IndexedCollection.cs
deleted file mode 100644 (file)
index e95e819..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-//
-// <%=$cur_coll.name%>.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-<%
-def member_visibility()
-       return $cur_coll.type == "Instruction" ? "internal" : "public"
-end
-
-def use_event?()
-       case $cur_coll.name
-               when "NestedTypeCollection", "MethodDefinitionCollection", "ConstructorCollection", "FieldDefinitionCollection", "EventDefinitionCollection", "PropertyDefinitionCollection"
-                       return true
-       end
-
-       return false
-end
-
-%>
-namespace <%=$cur_coll.target%> {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class <%=$cur_coll.name%> : CollectionBase<% if (!$cur_coll.visitable.nil?) then %>, <%=$cur_coll.visitable%><% end %> {
-
-               <%=$cur_coll.container_impl%> m_container;<%
-               if $cur_coll.type == "Instruction" %>
-               public readonly Instruction Outside = new Instruction (int.MaxValue, OpCodes.Nop);<% end %>
-
-               public <%=$cur_coll.type%> this [int index] {
-                       get { return List [index] as <%=$cur_coll.type%>; }
-                       set { List [index] = value; }
-               }
-
-               public <%=$cur_coll.container%> Container {
-                       get { return m_container; }
-               }
-
-               public <%=$cur_coll.name%> (<%=$cur_coll.container_impl%> container)
-               {
-                       m_container = container;
-               }
-
-               <%= member_visibility() %> void Add (<%=$cur_coll.type%> value)
-               {<%
-if use_event?() %>
-                       Attach (value);
-<% end %>
-                       List.Add (value);
-               }
-<%
-if use_event?() %>
-
-               public new void Clear ()
-               {
-                       foreach (<%=$cur_coll.type%> item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-<% end %>
-               public bool Contains (<%=$cur_coll.type%> value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (<%=$cur_coll.type%> value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               <%= member_visibility() %> void Insert (int index, <%=$cur_coll.type%> value)
-               {<%
-if use_event?() %>
-                       Attach (value);
-<% end %>
-                       List.Insert (index, value);
-               }
-
-               <%= member_visibility() %> void Remove (<%=$cur_coll.type%> value)
-               {
-                       List.Remove (value);
-<% if use_event?() %>
-                       Detach (value);
-<% end %>              }
-<%
-if use_event?() %>
-
-               <%= member_visibility() %> new void RemoveAt (int index)
-               {
-                       <%=$cur_coll.type%> item = this [index];
-                       Remove (item);
-               }
-<% end %>
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is <%=$cur_coll.type%>))
-                               throw new ArgumentException ("Must be of type " + typeof (<%=$cur_coll.type%>).FullName);
-               }
-<%
-       case $cur_coll.item_name
-               when "MethodDefinition"
-%>
-               public MethodDefinition [] GetMethod (string name)
-               {
-                       ArrayList ret = new ArrayList ();
-                       foreach (MethodDefinition meth in this)
-                               if (meth.Name == name)
-                                       ret.Add (meth);
-
-                       return ret.ToArray (typeof (MethodDefinition)) as MethodDefinition [];
-               }
-
-               internal MethodDefinition GetMethodInternal (string name, IList parameters)
-               {
-                       foreach (MethodDefinition meth in this) {
-                               if (meth.Name != name || meth.Parameters.Count != parameters.Count)
-                                       continue;
-
-                               bool match = true;
-                               for (int i = 0; i < parameters.Count; i++) {
-                                       string pname;
-                                       object param = parameters [i];
-                                       if (param is Type)
-                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
-                                       else if (param is TypeReference)
-                                               pname = (param as TypeReference).FullName;
-                                       else if (param is ParameterDefinition)
-                                               pname = (param as ParameterDefinition).ParameterType.FullName;
-                                       else
-                                               throw new NotSupportedException ();
-
-                                       if (meth.Parameters [i].ParameterType.FullName != pname) {
-                                               match = false;
-                                               break;
-                                       }
-                               }
-
-                               if (match)
-                                       return meth;
-                       }
-
-                       return null;
-               }
-
-               public MethodDefinition GetMethod (string name, Type [] parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-
-               public MethodDefinition GetMethod (string name, TypeReference [] parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-
-               public MethodDefinition GetMethod (string name, ParameterDefinitionCollection parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-<%
-               when "FieldDefinition"
-%>
-               public FieldDefinition GetField (string name)
-               {
-                       foreach (FieldDefinition field in this)
-                               if (field.Name == name)
-                                       return field;
-
-                       return null;
-               }
-<%
-               when "Constructor"
-%>
-               internal MethodDefinition GetConstructorInternal (bool isStatic, IList parameters)
-               {
-                       foreach (MethodDefinition ctor in this) {
-                               if (ctor.IsStatic != isStatic || ctor.Parameters.Count != parameters.Count)
-                                       continue;
-
-                               bool match = true;
-                               for (int i = 0; i < parameters.Count; i++) {
-                                       string pname;
-                                       object param = parameters [i];
-                                       if (param is Type)
-                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
-                                       else if (param is TypeReference)
-                                               pname = (param as TypeReference).FullName;
-                                       else if (param is ParameterDefinition)
-                                               pname = (param as ParameterDefinition).ParameterType.FullName;
-                                       else
-                                               throw new NotSupportedException ();
-
-                                       if (ctor.Parameters [i].ParameterType.FullName != pname) {
-                                               match = false;
-                                               break;
-                                       }
-                               }
-
-                               if (match)
-                                       return ctor;
-                       }
-
-                       return null;
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, Type [] parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, TypeReference [] parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, ParameterDefinitionCollection parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-<%
-               when "EventDefinition"
-%>
-               public EventDefinition GetEvent (string name)
-               {
-                       foreach (EventDefinition evt in this)
-                               if (evt.Name == name)
-                                       return evt;
-
-                       return null;
-               }
-<%
-               when "PropertyDefinition"
-%>
-               public PropertyDefinition [] GetProperties (string name)
-               {
-                       ArrayList ret = new ArrayList ();
-                       foreach (PropertyDefinition prop in this)
-                               if (prop.Name == name)
-                                       ret.Add (prop);
-
-                       return ret.ToArray (typeof (PropertyDefinition)) as PropertyDefinition [];
-               }
-<%
-       end
-
-       if use_event?()
-%>
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-<% end
-  if !$cur_coll.visitor.nil? then %>
-               public void Accept (<%=$cur_coll.visitor%> visitor)
-               {
-                       visitor.<%=$cur_coll.visitThis%> (this);
-               }
-<% end %>      }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowReader.cs b/mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowReader.cs
deleted file mode 100644 (file)
index af8ffab..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// MetadataRowReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-
-       using Mono.Cecil.Binary;
-
-       class MetadataRowReader : BaseMetadataRowVisitor {
-
-               MetadataTableReader m_mtrv;
-               BinaryReader m_binaryReader;
-               MetadataRoot m_metadataRoot;
-               int [] m_ciCache;
-
-               int m_blobHeapIdxSz;
-               int m_stringsHeapIdxSz;
-               int m_guidHeapIdxSz;
-
-               public MetadataRowReader (MetadataTableReader mtrv)
-               {
-                       m_mtrv = mtrv;
-                       m_binaryReader = mtrv.GetReader ();
-                       m_metadataRoot = mtrv.GetMetadataRoot ();
-                       m_ciCache = new int [<%= $coded_indexes.length %>];
-               }
-
-               int GetIndexSize (int rid)
-               {
-                       return m_mtrv.GetNumberOfRows (rid) < (1 << 16) ? 2 : 4;
-               }
-
-               int GetCodedIndexSize (CodedIndex ci)
-               {
-                       return Utilities.GetCodedIndexSize (ci,
-                               new Utilities.TableRowCounter (m_mtrv.GetNumberOfRows), m_ciCache);
-               }
-
-               uint ReadByIndexSize (int size)
-               {
-                       if (size == 2) {
-                               return (uint) m_binaryReader.ReadUInt16 ();
-                       } else if (size == 4) {
-                               return m_binaryReader.ReadUInt32 ();
-                       } else {
-                               throw new MetadataFormatException ("Non valid size for indexing");
-                       }
-               }
-
-               public override void VisitRowCollection (RowCollection coll)
-               {
-                       m_blobHeapIdxSz = m_metadataRoot.Streams.BlobHeap != null ?
-                               m_metadataRoot.Streams.BlobHeap.IndexSize : 2;
-                       m_stringsHeapIdxSz = m_metadataRoot.Streams.StringsHeap != null ?
-                               m_metadataRoot.Streams.StringsHeap.IndexSize : 2;
-                       m_guidHeapIdxSz = m_metadataRoot.Streams.GuidHeap != null ?
-                               m_metadataRoot.Streams.GuidHeap.IndexSize : 2;
-               }
-
-<% $tables.each { |table| %>           public override void Visit<%=table.row_name%> (<%=table.row_name%> row)
-               {
-<% table.columns.each { |col|
- if (col.target.nil?)
-%>                     row.<%=col.property_name%> = <%=col.read_binary("m_binaryReader")%>;
-<% elsif (col.target == "BlobHeap")
-%>                     row.<%=col.property_name%> = ReadByIndexSize (m_blobHeapIdxSz);
-<% elsif (col.target == "StringsHeap")
-%>                     row.<%=col.property_name%> = ReadByIndexSize (m_stringsHeapIdxSz);
-<% elsif (col.target == "GuidHeap")
-%>                     row.<%=col.property_name%> = ReadByIndexSize (m_guidHeapIdxSz);
-<% elsif (col.type == "MetadataToken")
-%>                     row.<%=col.property_name%> = Utilities.GetMetadataToken (CodedIndex.<%=col.target%>,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.<%=col.target%>)));
-<% else
-%>                     row.<%=col.property_name%> = ReadByIndexSize (GetIndexSize (<%=col.target%>Table.RId));
-<% end
-}%>            }
-<%  } %>       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowWriter.cs b/mcs/class/Mono.Cecil/CodeGen/templates/MetadataRowWriter.cs
deleted file mode 100644 (file)
index 7ace738..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// MetadataRowWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Binary;
-
-       class MetadataRowWriter : BaseMetadataRowVisitor {
-
-               MetadataRoot m_root;
-               MemoryBinaryWriter m_binaryWriter;
-               int [] m_ciCache;
-
-               int m_blobHeapIdxSz;
-               int m_stringsHeapIdxSz;
-               int m_guidHeapIdxSz;
-
-               public MetadataRowWriter (MetadataTableWriter mtwv)
-               {
-                       m_binaryWriter = mtwv.GetWriter ();
-                       m_root = mtwv.GetMetadataRoot ();
-                       m_ciCache = new int [<%= $coded_indexes.length %>];
-               }
-
-               void WriteBlobPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_blobHeapIdxSz);
-               }
-
-               void WriteStringPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_stringsHeapIdxSz);
-               }
-
-               void WriteGuidPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_guidHeapIdxSz);
-               }
-
-               void WriteTablePointer (uint pointer, int rid)
-               {
-                       WriteByIndexSize (pointer, GetNumberOfRows (rid) < (1 << 16) ? 2 : 4);
-               }
-
-               void WriteMetadataToken (MetadataToken token, CodedIndex ci)
-               {
-                       WriteByIndexSize (Utilities.CompressMetadataToken (ci, token),
-                               Utilities.GetCodedIndexSize (
-                                       ci, new Utilities.TableRowCounter (GetNumberOfRows), m_ciCache));
-               }
-
-               int GetNumberOfRows (int rid)
-               {
-                       IMetadataTable t = m_root.Streams.TablesHeap [rid];
-                       if (t == null || t.Rows == null)
-                               return 0;
-                       return t.Rows.Count;
-               }
-
-               void WriteByIndexSize (uint value, int size)
-               {
-                       if (size == 4)
-                               m_binaryWriter.Write (value);
-                       else if (size == 2)
-                               m_binaryWriter.Write ((ushort) value);
-                       else
-                               throw new MetadataFormatException ("Non valid size for indexing");
-               }
-
-<% $tables.each { |table|
-               parameters = ""
-               table.columns.each { |col|
-                       parameters += col.type
-                       parameters += " "
-                       parameters += col.field_name[1..col.field_name.length]
-                       parameters += ", " if (table.columns.last != col)
-               }
-%>             public <%=table.row_name%> Create<%=table.row_name%> (<%=parameters%>)
-               {
-                       <%=table.row_name%> row = new <%=table.row_name%> ();
-<% table.columns.each { |col| %>                       row.<%=col.property_name%> = <%=col.field_name[1..col.field_name.length]%>;
-<% } %>                        return row;
-               }
-
-<% } %>                public override void VisitRowCollection (RowCollection coll)
-               {
-                       m_blobHeapIdxSz = m_root.Streams.BlobHeap != null ?
-                               m_root.Streams.BlobHeap.IndexSize : 2;
-                       m_stringsHeapIdxSz = m_root.Streams.StringsHeap != null ?
-                               m_root.Streams.StringsHeap.IndexSize : 2;
-                       m_guidHeapIdxSz = m_root.Streams.GuidHeap != null ?
-                               m_root.Streams.GuidHeap.IndexSize : 2;
-               }
-
-<% $tables.each { |table| %>           public override void Visit<%=table.row_name%> (<%=table.row_name%> row)
-               {
-<% table.columns.each { |col|
- if (col.target.nil?)
-%>                     <%=col.write_binary("row", "m_binaryWriter")%>;
-<% elsif (col.target == "BlobHeap")
-%>                     WriteBlobPointer (row.<%=col.property_name%>);
-<% elsif (col.target == "StringsHeap")
-%>                     WriteStringPointer (row.<%=col.property_name%>);
-<% elsif (col.target == "GuidHeap")
-%>                     WriteGuidPointer (row.<%=col.property_name%>);
-<% elsif (col.type == "MetadataToken")
-%>                     WriteMetadataToken (row.<%=col.property_name%>, CodedIndex.<%=col.target%>);
-<% else
-%>                     WriteTablePointer (row.<%=col.property_name%>, <%=col.target%>Table.RId);
-<% end
-}%>            }
-
-<% } %>        }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableReader.cs b/mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableReader.cs
deleted file mode 100644 (file)
index 8f1effc..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// MetadataTableReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-
-       class MetadataTableReader : BaseMetadataTableVisitor {
-
-               MetadataRoot m_metadataRoot;
-               TablesHeap m_heap;
-               MetadataRowReader m_mrrv;
-               BinaryReader m_binaryReader;
-
-               int [] m_rows = new int [TablesHeap.MaxTableCount];
-
-               public MetadataTableReader (MetadataReader mrv)
-               {
-                       m_metadataRoot = mrv.GetMetadataRoot ();
-                       m_heap = m_metadataRoot.Streams.TablesHeap;
-                       m_binaryReader = new BinaryReader (new MemoryStream (m_heap.Data));
-                       m_binaryReader.BaseStream.Position = 24;
-                       m_mrrv = new MetadataRowReader (this);
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_metadataRoot;
-               }
-
-               public BinaryReader GetReader ()
-               {
-                       return m_binaryReader;
-               }
-
-               public override IMetadataRowVisitor GetRowVisitor ()
-               {
-                       return m_mrrv;
-               }
-
-               public int GetNumberOfRows (int rid)
-               {
-                       return m_rows [rid];
-               }
-<% $tables.each { |table|  %>
-               public <%=table.table_name%> Get<%=table.table_name%> ()
-               {
-                       return (<%=table.table_name%>) m_heap [<%=table.table_name%>.RId];
-               }
-<% } %>
-               public override void VisitTableCollection (TableCollection coll)
-               {
-<% $stables.each { |table|  %>                 if (m_heap.HasTable (<%=table.table_name%>.RId)) {
-                               coll.Add (new <%=table.table_name%> ());
-                               m_rows [<%=table.table_name%>.RId] = m_binaryReader.ReadInt32 ();
-                       }
-<% } %>                }
-
-<% $tables.each { |table| %>           public override void Visit<%=table.table_name%> (<%=table.table_name%> table)
-               {
-                       int number = m_rows [<%=table.table_name%>.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new <%=table.row_name%> ());
-               }
-<% } %>        }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableWriter.cs b/mcs/class/Mono.Cecil/CodeGen/templates/MetadataTableWriter.cs
deleted file mode 100644 (file)
index 8e03b27..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// MetadataTableWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Binary;
-
-       internal sealed class MetadataTableWriter : BaseMetadataTableVisitor {
-
-               MetadataRoot m_root;
-               TablesHeap m_heap;
-               MetadataRowWriter m_mrrw;
-               MemoryBinaryWriter m_binaryWriter;
-
-               public MetadataTableWriter (MetadataWriter mrv, MemoryBinaryWriter writer)
-               {
-                       m_root = mrv.GetMetadataRoot ();
-                       m_heap = m_root.Streams.TablesHeap;
-                       m_binaryWriter = writer;
-                       m_mrrw = new MetadataRowWriter (this);
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_root;
-               }
-
-               public override IMetadataRowVisitor GetRowVisitor ()
-               {
-                       return m_mrrw;
-               }
-
-               public MemoryBinaryWriter GetWriter ()
-               {
-                       return m_binaryWriter;
-               }
-
-               void InitializeTable (IMetadataTable table)
-               {
-                       table.Rows = new RowCollection ();
-                       m_heap.Valid |= 1L << table.Id;
-                       m_heap.Tables.Add (table);
-               }
-
-               void WriteCount (int rid)
-               {
-                       if (m_heap.HasTable (rid))
-                               m_binaryWriter.Write (m_heap [rid].Rows.Count);
-               }
-
-<% $tables.each { |table| %>           public <%=table.table_name%> Get<%=table.table_name%> ()
-               {
-                       <%=table.table_name%> table = m_heap [<%=table.table_name%>.RId] as <%=table.table_name%>;
-                       if (table != null)
-                               return table;
-
-                       table = new <%=table.table_name%> ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-<% } %>                public override void VisitTableCollection (TableCollection coll)
-               {
-<% $stables.each { |table|  %>                 WriteCount (<%=table.table_name%>.RId);
-<% } %>                }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/NamedCollection.cs b/mcs/class/Mono.Cecil/CodeGen/templates/NamedCollection.cs
deleted file mode 100644 (file)
index 64e48de..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// <%=$cur_coll.name%>.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-<%
-def use_event?()
-       case $cur_coll.name
-               when "TypeDefinitionCollection", "TypeReferenceCollection", "ExternTypeCollection"
-                       return true
-       end
-
-       return false
-end
-%>
-namespace <%=$cur_coll.target%> {
-
-       using System;
-       using System.Collections;
-       using System.Collections.Specialized;
-
-       using Mono.Cecil.Cil;
-
-       using Hcp = Mono.Cecil.HashCodeProvider;
-       using Cmp = System.Collections.Comparer;
-
-       public sealed class <%=$cur_coll.name%> : NameObjectCollectionBase, IList<% if (!$cur_coll.visitable.nil?) then %>, <%=$cur_coll.visitable%><% end %>  {
-
-               <%=$cur_coll.container%> m_container;
-
-               public <%=$cur_coll.type%> this [int index] {
-                       get { return this.BaseGet (index) as <%=$cur_coll.type%>; }
-                       set { this.BaseSet (index, value); }
-               }
-
-               public <%=$cur_coll.type%> this [string fullName] {
-                       get { return this.BaseGet (fullName) as <%=$cur_coll.type%>; }
-                       set { this.BaseSet (fullName, value); }
-               }
-
-               public <%=$cur_coll.container%> Container {
-                       get { return m_container; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               bool IList.IsReadOnly {
-                       get { return false; }
-               }
-
-               bool IList.IsFixedSize {
-                       get { return false; }
-               }
-
-               object IList.this [int index] {
-                       get { return BaseGet (index); }
-                       set {
-                               Check (value);
-                               BaseSet (index, value);
-                       }
-               }
-
-               public <%=$cur_coll.name%> (<%=$cur_coll.container%> container) :
-                       base (Hcp.Instance, Cmp.Default)
-               {
-                       m_container = container;
-               }
-
-               public void Add (<%=$cur_coll.type%> value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       <% if use_event?() %>Attach (value);<% end %>
-
-                       this.BaseAdd (value.FullName, value);
-               }
-
-               public void Clear ()
-               {<%
- if use_event?() %>
-                       foreach (<%=$cur_coll.type%> item in this)
-                               Detach (item);
-<% end %>
-                       this.BaseClear ();
-               }
-
-               public bool Contains (<%=$cur_coll.type%> value)
-               {
-                       return Contains (value.FullName);
-               }
-
-               public bool Contains (string fullName)
-               {
-                       return this.BaseGet (fullName) != null;
-               }
-
-               public int IndexOf (<%=$cur_coll.type%> value)
-               {
-                       string [] keys = this.BaseGetAllKeys ();
-                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
-               }
-
-               public void Remove (<%=$cur_coll.type%> value)
-               {
-                       this.BaseRemove (value.FullName);
-<% if use_event?() %>
-                       Detach (value);
-<% end %>              }
-
-               public void RemoveAt (int index)
-               {
-                       <%=$cur_coll.type%> item = this [index];
-                       Remove (item);
-<% if use_event?() %>
-                       Detach (item);
-<% end %>              }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       this.BaseGetAllValues ().CopyTo (ary, index);
-               }
-
-               public new IEnumerator GetEnumerator ()
-               {
-                       return this.BaseGetAllValues ().GetEnumerator ();
-               }
-<% if !$cur_coll.visitor.nil? then %>
-               public void Accept (<%=$cur_coll.visitor%> visitor)
-               {
-                       visitor.<%=$cur_coll.visitThis%> (this);
-               }
-<% end %>
-#if CF_1_0 || CF_2_0
-               internal object [] BaseGetAllValues ()
-               {
-                       object [] values = new object [this.Count];
-                       for (int i=0; i < values.Length; ++i) {
-                               values [i] = this.BaseGet (i);
-                       }
-                       return values;
-               }
-#endif
-
-               void Check (object value)
-               {
-                       if (!(value is <%=$cur_coll.type%>))
-                               throw new ArgumentException ();
-               }
-
-               int IList.Add (object value)
-               {
-                       Check (value);
-                       Add (value as <%=$cur_coll.type%>);
-                       return 0;
-               }
-
-               bool IList.Contains (object value)
-               {
-                       Check (value);
-                       return Contains (value as <%=$cur_coll.type%>);
-               }
-
-               int IList.IndexOf (object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Insert (int index, object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Remove (object value)
-               {
-                       Check (value);
-                       Remove (value as <%=$cur_coll.type%>);
-               }
-<%
-       if use_event?()
-%>
-               void Detach (TypeReference type)
-               {
-                       type.Module = null;
-               }
-
-               void Attach (TypeReference type)
-               {
-                       if (type.Module != null)
-                               throw new ReflectionException ("Type is already attached, clone it instead");
-
-                       type.Module = m_container;<%
-               if $cur_coll.type == "TypeDefinition" %>
-                       type.AttachToScope (m_container);
-<% end %>
-               }<%
-
-       end
-%>
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/OpCodes.cs b/mcs/class/Mono.Cecil/CodeGen/templates/OpCodes.cs
deleted file mode 100644 (file)
index 320ef2a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// OpCodes.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-<%
-       oboc = Array.new
-       tboc = Array.new
-       $ops.each { |op|
-               if op.op1 == "0xff"
-                       oboc.push(op)
-               else
-                       tboc.push(op)
-               end
-       }
-%>
-namespace Mono.Cecil.Cil {
-
-       public sealed class OpCodes {
-
-               internal static readonly OpCode [] OneByteOpCode = new OpCode [<%=oboc[oboc.length - 1].op2%> + 1];
-               internal static readonly OpCode [] TwoBytesOpCode = new OpCode [<%=tboc[tboc.length - 1].op2%> + 1];
-
-<% $ops.each { |op| %>         public static readonly OpCode <%=op.field_name%> = new OpCode (
-                       <%=op.op1%>, <%=op.op2%>,
-                       Code.<%=op.field_name%>, <%=op.flowcontrol%>,
-                       <%=op.opcodetype%>, <%=op.operandtype%>,
-                       <%=op.stackbehaviourpop%>, <%=op.stackbehaviourpush%>);
-
-<% } %>                OpCodes ()
-               {
-               }
-
-               public static OpCode GetOpCode (Code code)
-               {
-                       switch (code) {
-<% $ops.each { |op| %>                 case Code.<%=op.field_name%> : return OpCodes.<%=op.field_name%>;
-<% } %>                        default : return OpCodes.Nop;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/Table.cs b/mcs/class/Mono.Cecil/CodeGen/templates/Table.cs
deleted file mode 100644 (file)
index 17ea97b..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// <%=$cur_table.table_name%>.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-<% $cur_table.ref_ns.each { |ns| %>
-       using <%=ns%>;
-<% }
-%>
-       public sealed class <%=$cur_table.table_name%> : IMetadataTable {
-
-               public const int RId = <%=$cur_table.rid%>;
-
-               RowCollection m_rows;
-
-               public <%=$cur_table.row_name%> this [int index] {
-                       get { return m_rows [index] as <%=$cur_table.row_name%>; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal <%=$cur_table.table_name%> ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.Visit<%=$cur_table.table_name%> (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class <%=$cur_table.row_name%> : IMetadataRow {
-
-<% $cur_table.columns.each { |col| %>          public <%=col.type%> <%=col.property_name%>;
-<% } %>
-               internal <%=$cur_table.row_name%> ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.Visit<%=$cur_table.row_name%> (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/Tests.cs b/mcs/class/Mono.Cecil/CodeGen/templates/Tests.cs
deleted file mode 100644 (file)
index 0cd4e3c..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// Tests.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen-tests.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Tests {
-
-       using System;
-       using System.IO;
-       using System.Collections;
-
-       using NUnit.Framework;
-
-       using Mono.Cecil;
-
-       class Language {
-
-               string m_compiler;
-               string m_command;
-
-               public string Compiler {
-                       get { return m_compiler; }
-               }
-
-               public string Command {
-                       get { return m_command; }
-               }
-
-               public Language (string compiler, string command)
-               {
-                       m_compiler = compiler;
-                       m_command = command;
-               }
-
-               static IDictionary m_languages = new Hashtable ();
-
-               static Language ()
-               {
-<%
-       $languages.each { |l|
-%>
-                       m_languages.Add ("<%= l.name %>", new Language (
-                               "<%= l.compiler %>",
-                               "<%= l.command %>"
-                       ));
-<%
-       }
-%>
-               }
-
-               public static Language GetLanguage (string name)
-               {
-                       return (Language) m_languages [name];
-               }
-       }
-
-       class TestCase {
-
-               Language m_lang;
-               FileInfo m_file;
-
-               public TestCase (Language lang, string file)
-               {
-                       m_lang = lang;
-                       m_file = new FileInfo (file);
-               }
-       }
-
-       [TestFixture]
-       class GeneratedTests {
-
-               void Test (TestCase test)
-               {
-               }
-
-<%
-       $tests.each { |test|
-%>
-               [Test]
-               public void <%= test.method %> ()
-               {
-                       Test (new TestCase (
-                               Language.GetLanguage ("<%= test.lang.name %>"),
-                               @"<%= test.file %>"));
-               }
-<%
-       }
-%>
-       }
-}
diff --git a/mcs/class/Mono.Cecil/CodeGen/templates/Utilities.cs b/mcs/class/Mono.Cecil/CodeGen/templates/Utilities.cs
deleted file mode 100644 (file)
index ba22b4f..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-// Utilities.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// <%=Time.now%>
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-
-       class Utilities {
-
-               Utilities ()
-               {
-               }
-
-               public static int ReadCompressedInteger (byte [] data, int pos, out int start)
-               {
-                       int integer = 0;
-                       start = pos;
-                       if ((data [pos] & 0x80) == 0) {
-                               integer = data [pos];
-                               start++;
-                       } else if ((data [pos] & 0x40) == 0) {
-                               integer = (data [start] & ~0x80) << 8;
-                               integer |= data [pos + 1];
-                               start += 2;
-                       } else {
-                               integer = (data [start] & ~0xc0) << 24;
-                               integer |= data [pos + 1] << 16;
-                               integer |= data [pos + 2] << 8;
-                               integer |= data [pos + 3];
-                               start += 4;
-                       }
-                       return integer;
-               }
-
-               public static int WriteCompressedInteger (BinaryWriter writer, int value)
-               {
-                       if (value < 0x80)
-                               writer.Write ((byte) value);
-                       else if (value < 0x4000) {
-                               writer.Write ((byte) (0x80 | (value >> 8)));
-                               writer.Write ((byte) (value & 0xff));
-                       } else {
-                               writer.Write ((byte) ((value >> 24) | 0xc0));
-                               writer.Write ((byte) ((value >> 16) & 0xff));
-                               writer.Write ((byte) ((value >> 8) & 0xff));
-                               writer.Write ((byte) (value & 0xff));
-                       }
-                       return (int) writer.BaseStream.Position;
-               }
-
-               public static MetadataToken GetMetadataToken (CodedIndex cidx, uint data)
-               {
-                       uint rid = 0;
-                       switch (cidx) {
-<% $coded_indexes.each { |ci| %>                       case CodedIndex.<%=ci.name%> :
-                               rid = data >> <%=ci.size%>;
-                               switch (data & <%=(2 ** ci.size.to_i - 1).to_s%>) {
-<%     ci.tables.each { |tbl|
-               name = tbl.name
-               if (name == "DeclSecurity")
-                       name = "Permission"
-               elsif (name == "StandAloneSig")
-                       name = "Signature"
-               end
-%>                             case <%=tbl.tag%> :
-                                       return new MetadataToken (TokenType.<%=name%>, rid);
-<%     }
-%>                             default :
-                                       return MetadataToken.Zero;
-                               }
-<% } %>                        default :
-                               return MetadataToken.Zero;
-                       }
-               }
-
-               public static uint CompressMetadataToken (CodedIndex cidx, MetadataToken token)
-               {
-                       uint ret = 0;
-                       if (token.RID == 0)
-                               return ret;
-                       switch (cidx) {
-<% $coded_indexes.each { |ci| %>                       case CodedIndex.<%=ci.name%> :
-                               ret = token.RID << <%=ci.size%>;
-                               switch (token.TokenType) {
-<%     ci.tables.each { |tbl|
-               name = tbl.name
-               if (name == "DeclSecurity")
-                       name = "Permission"
-               elsif (name == "StandAloneSig")
-                       name = "Signature"
-               end
-%>                             case TokenType.<%=name%> :
-                                       return ret | <%=tbl.tag%>;
-<%     }
-%>                             default :
-                                       throw new MetadataFormatException("Non valid Token for <%=ci.name%>");
-                               }
-<% } %>                        default :
-                               throw new MetadataFormatException ("Non valid CodedIndex");
-                       }
-               }
-
-               internal static Type GetCorrespondingTable (TokenType t)
-               {
-                       switch (t) {
-                       case TokenType.Assembly :
-                               return typeof (AssemblyTable);
-                       case TokenType.AssemblyRef :
-                               return typeof (AssemblyRefTable);
-                       case TokenType.CustomAttribute :
-                               return typeof (CustomAttributeTable);
-                       case TokenType.Event :
-                               return typeof (EventTable);
-                       case TokenType.ExportedType :
-                               return typeof (ExportedTypeTable);
-                       case TokenType.Field :
-                               return typeof (FieldTable);
-                       case TokenType.File :
-                               return typeof (FileTable);
-                       case TokenType.InterfaceImpl :
-                               return typeof (InterfaceImplTable);
-                       case TokenType.MemberRef :
-                               return typeof (MemberRefTable);
-                       case TokenType.Method :
-                               return typeof (MethodTable);
-                       case TokenType.Module :
-                               return typeof (ModuleTable);
-                       case TokenType.ModuleRef :
-                               return typeof (ModuleRefTable);
-                       case TokenType.Param :
-                               return typeof (ParamTable);
-                       case TokenType.Permission :
-                               return typeof (DeclSecurityTable);
-                       case TokenType.Property :
-                               return typeof (PropertyTable);
-                       case TokenType.Signature :
-                               return typeof (StandAloneSigTable);
-                       case TokenType.TypeDef :
-                               return typeof (TypeDefTable);
-                       case TokenType.TypeRef :
-                               return typeof (TypeRefTable);
-                       case TokenType.TypeSpec :
-                               return typeof (TypeSpecTable);
-                       default :
-                               return null;
-                       }
-               }
-
-               internal delegate int TableRowCounter (int rid);
-
-               internal static int GetCodedIndexSize (CodedIndex ci, TableRowCounter rowCounter, int [] codedIndexCache)
-               {
-                       int bits = 0, max = 0, index = (int) ci;
-                       if (codedIndexCache [index] != 0)
-                               return codedIndexCache [index];
-
-                       int res = 0;
-                       int [] rids;
-                       switch (ci) {
-<% $coded_indexes.each { |ci| %>                       case CodedIndex.<%=ci.name%> :
-                               bits = <%=ci.size%>;
-                               rids = new int [<%=ci.tables.length%>];
-<%     ci.tables.each_with_index { |tbl, i|
-%>                             rids [<%=i%>] = <%=tbl.name%>Table.RId;
-<%     }
-%>                             break;
-<% } %>                        default :
-                               throw new MetadataFormatException ("Non valid CodedIndex");
-                       }
-
-                       for (int i = 0; i < rids.Length; i++) {
-                               int rows = rowCounter (rids [i]);
-                               if (rows > max) max = rows;
-                       }
-
-                       res = max < (1 << (16 - bits)) ? 2 : 4;
-                       codedIndexCache [index] = res;
-                       return res;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml
deleted file mode 100644 (file)
index 1570963..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-<Type Name="BaseImageVisitor" FullName="Mono.Cecil.Binary.BaseImageVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseImageVisitor : Mono.Cecil.Binary.IBinaryVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseImageVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateImage">
-      <MemberSignature Language="C#" Value="public virtual void TerminateImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCLIHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitCLIHeader (Mono.Cecil.Binary.CLIHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.CLIHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDataDirectoriesHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDataDirectoriesHeader (Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDebugHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDebugHeader (Mono.Cecil.Binary.DebugHeader dh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dh" Type="Mono.Cecil.Binary.DebugHeader" />
-      </Parameters>
-      <Docs>
-        <param name="dh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDOSHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDOSHeader (Mono.Cecil.Binary.DOSHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.DOSHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportTable (Mono.Cecil.Binary.ExportTable et);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="et" Type="Mono.Cecil.Binary.ExportTable" />
-      </Parameters>
-      <Docs>
-        <param name="et">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitHintNameTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitHintNameTable (Mono.Cecil.Binary.HintNameTable hnt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="hnt" Type="Mono.Cecil.Binary.HintNameTable" />
-      </Parameters>
-      <Docs>
-        <param name="hnt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImage">
-      <MemberSignature Language="C#" Value="public virtual void VisitImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportAddressTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportAddressTable (Mono.Cecil.Binary.ImportAddressTable iat);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="iat" Type="Mono.Cecil.Binary.ImportAddressTable" />
-      </Parameters>
-      <Docs>
-        <param name="iat">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportLookupTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportLookupTable (Mono.Cecil.Binary.ImportLookupTable ilt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ilt" Type="Mono.Cecil.Binary.ImportLookupTable" />
-      </Parameters>
-      <Docs>
-        <param name="ilt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportTable (Mono.Cecil.Binary.ImportTable it);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="it" Type="Mono.Cecil.Binary.ImportTable" />
-      </Parameters>
-      <Docs>
-        <param name="it">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNTSpecificFieldsHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitNTSpecificFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEFileHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitPEFileHeader (Mono.Cecil.Binary.PEFileHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEFileHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEOptionalHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitPEOptionalHeader (Mono.Cecil.Binary.PEOptionalHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSection (Mono.Cecil.Binary.Section section);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="section" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="section">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSectionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSectionCollection (Mono.Cecil.Binary.SectionCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Binary.SectionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandardFieldsHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandardFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml
deleted file mode 100644 (file)
index 32b68b1..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-<Type Name="CLIHeader" FullName="Mono.Cecil.Binary.CLIHeader">
-  <TypeSignature Language="C#" Value="public sealed class CLIHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cb">
-      <MemberSignature Language="C#" Value="public uint Cb;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeManagerTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CodeManagerTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPointToken">
-      <MemberSignature Language="C#" Value="public uint EntryPointToken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportAddressTableJumps">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExportAddressTableJumps;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RuntimeImage Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageHash">
-      <MemberSignature Language="C#" Value="public byte[] ImageHash;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorRuntimeVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorRuntimeVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedNativeHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ManagedNativeHeader;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Metadata">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Metadata;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorRuntimeVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorRuntimeVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Resources;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StrongNameSignature">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory StrongNameSignature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VTableFixups">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory VTableFixups;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml
deleted file mode 100644 (file)
index fc98837..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="DOSHeader" FullName="Mono.Cecil.Binary.DOSHeader">
-  <TypeSignature Language="C#" Value="public sealed class DOSHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="public byte[] End;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Lfanew">
-      <MemberSignature Language="C#" Value="public uint Lfanew;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Start">
-      <MemberSignature Language="C#" Value="public byte[] Start;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml
deleted file mode 100644 (file)
index e03ff33..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<Type Name="DataDirectory" FullName="Mono.Cecil.Binary.DataDirectory">
-  <TypeSignature Language="C#" Value="public struct DataDirectory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DataDirectory (Mono.Cecil.Binary.RVA virtualAddress, uint size);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="virtualAddress" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="size" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="virtualAddress">To be added.</param>
-        <param name="size">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Binary.DataDirectory one, Mono.Cecil.Binary.DataDirectory other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.DataDirectory" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.DataDirectory" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Binary.DataDirectory one, Mono.Cecil.Binary.DataDirectory other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.DataDirectory" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.DataDirectory" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualAddress">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA VirtualAddress { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Binary.DataDirectory Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml
deleted file mode 100644 (file)
index 2b321eb..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-<Type Name="DebugHeader" FullName="Mono.Cecil.Binary.DebugHeader">
-  <TypeSignature Language="C#" Value="public sealed class DebugHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfRawData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Age">
-      <MemberSignature Language="C#" Value="public uint Age;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileName">
-      <MemberSignature Language="C#" Value="public string FileName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSize">
-      <MemberSignature Language="C#" Value="public uint GetSize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Magic">
-      <MemberSignature Language="C#" Value="public uint Magic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRawData">
-      <MemberSignature Language="C#" Value="public uint PointerToRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public Guid Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SizeOfData">
-      <MemberSignature Language="C#" Value="public uint SizeOfData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DebugStoreType Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml
deleted file mode 100644 (file)
index 4f67b77..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<Type Name="DebugStoreType" FullName="Mono.Cecil.Binary.DebugStoreType">
-  <TypeSignature Language="C#" Value="public enum DebugStoreType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Borland">
-      <MemberSignature Language="C#" Value="Borland" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CLSID">
-      <MemberSignature Language="C#" Value="CLSID" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeView">
-      <MemberSignature Language="C#" Value="CodeView" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="COFF">
-      <MemberSignature Language="C#" Value="COFF" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Exception">
-      <MemberSignature Language="C#" Value="Exception" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fixup">
-      <MemberSignature Language="C#" Value="Fixup" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FPO">
-      <MemberSignature Language="C#" Value="FPO" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Misc">
-      <MemberSignature Language="C#" Value="Misc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OMAPFromSrc">
-      <MemberSignature Language="C#" Value="OMAPFromSrc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OMAPToSrc">
-      <MemberSignature Language="C#" Value="OMAPToSrc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved10">
-      <MemberSignature Language="C#" Value="Reserved10" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unknown">
-      <MemberSignature Language="C#" Value="Unknown" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml
deleted file mode 100644 (file)
index d199afe..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-<Type Name="ExportTable" FullName="Mono.Cecil.Binary.ExportTable">
-  <TypeSignature Language="C#" Value="public sealed class ExportTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressesOfFunctions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA[] AddressesOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressesOfNames">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA[] AddressesOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfFunctions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfNameOrdinals">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfNameOrdinals;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfNames">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Base">
-      <MemberSignature Language="C#" Value="public uint Base;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NameOrdinals">
-      <MemberSignature Language="C#" Value="public ushort[] NameOrdinals;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Names">
-      <MemberSignature Language="C#" Value="public string[] Names;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfFunctions">
-      <MemberSignature Language="C#" Value="public uint NumberOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfNames">
-      <MemberSignature Language="C#" Value="public uint NumberOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml
deleted file mode 100644 (file)
index 6857b82..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<Type Name="HintNameTable" FullName="Mono.Cecil.Binary.HintNameTable">
-  <TypeSignature Language="C#" Value="public sealed class HintNameTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public ushort EntryPoint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hint">
-      <MemberSignature Language="C#" Value="public ushort Hint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeCorEE">
-      <MemberSignature Language="C#" Value="public const string RuntimeCorEE;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeLibrary">
-      <MemberSignature Language="C#" Value="public string RuntimeLibrary;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMain">
-      <MemberSignature Language="C#" Value="public string RuntimeMain;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMainDll">
-      <MemberSignature Language="C#" Value="public const string RuntimeMainDll;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMainExe">
-      <MemberSignature Language="C#" Value="public const string RuntimeMainExe;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml
deleted file mode 100644 (file)
index f6c6cfa..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IBinaryVisitable" FullName="Mono.Cecil.Binary.IBinaryVisitable">
-  <TypeSignature Language="C#" Value="public interface IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml
deleted file mode 100644 (file)
index 4272eab..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-<Type Name="IBinaryVisitor" FullName="Mono.Cecil.Binary.IBinaryVisitor">
-  <TypeSignature Language="C#" Value="public interface IBinaryVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateImage">
-      <MemberSignature Language="C#" Value="public void TerminateImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCLIHeader">
-      <MemberSignature Language="C#" Value="public void VisitCLIHeader (Mono.Cecil.Binary.CLIHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.CLIHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDataDirectoriesHeader">
-      <MemberSignature Language="C#" Value="public void VisitDataDirectoriesHeader (Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDebugHeader">
-      <MemberSignature Language="C#" Value="public void VisitDebugHeader (Mono.Cecil.Binary.DebugHeader dh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dh" Type="Mono.Cecil.Binary.DebugHeader" />
-      </Parameters>
-      <Docs>
-        <param name="dh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDOSHeader">
-      <MemberSignature Language="C#" Value="public void VisitDOSHeader (Mono.Cecil.Binary.DOSHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.DOSHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportTable">
-      <MemberSignature Language="C#" Value="public void VisitExportTable (Mono.Cecil.Binary.ExportTable et);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="et" Type="Mono.Cecil.Binary.ExportTable" />
-      </Parameters>
-      <Docs>
-        <param name="et">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitHintNameTable">
-      <MemberSignature Language="C#" Value="public void VisitHintNameTable (Mono.Cecil.Binary.HintNameTable hnt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="hnt" Type="Mono.Cecil.Binary.HintNameTable" />
-      </Parameters>
-      <Docs>
-        <param name="hnt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImage">
-      <MemberSignature Language="C#" Value="public void VisitImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportAddressTable">
-      <MemberSignature Language="C#" Value="public void VisitImportAddressTable (Mono.Cecil.Binary.ImportAddressTable iat);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="iat" Type="Mono.Cecil.Binary.ImportAddressTable" />
-      </Parameters>
-      <Docs>
-        <param name="iat">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportLookupTable">
-      <MemberSignature Language="C#" Value="public void VisitImportLookupTable (Mono.Cecil.Binary.ImportLookupTable ilt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ilt" Type="Mono.Cecil.Binary.ImportLookupTable" />
-      </Parameters>
-      <Docs>
-        <param name="ilt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportTable">
-      <MemberSignature Language="C#" Value="public void VisitImportTable (Mono.Cecil.Binary.ImportTable it);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="it" Type="Mono.Cecil.Binary.ImportTable" />
-      </Parameters>
-      <Docs>
-        <param name="it">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNTSpecificFieldsHeader">
-      <MemberSignature Language="C#" Value="public void VisitNTSpecificFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEFileHeader">
-      <MemberSignature Language="C#" Value="public void VisitPEFileHeader (Mono.Cecil.Binary.PEFileHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEFileHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEOptionalHeader">
-      <MemberSignature Language="C#" Value="public void VisitPEOptionalHeader (Mono.Cecil.Binary.PEOptionalHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSection">
-      <MemberSignature Language="C#" Value="public void VisitSection (Mono.Cecil.Binary.Section section);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="section" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="section">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSectionCollection">
-      <MemberSignature Language="C#" Value="public void VisitSectionCollection (Mono.Cecil.Binary.SectionCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Binary.SectionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandardFieldsHeader">
-      <MemberSignature Language="C#" Value="public void VisitStandardFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml
deleted file mode 100644 (file)
index 4ee4b58..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-<Type Name="Image" FullName="Mono.Cecil.Binary.Image">
-  <TypeSignature Language="C#" Value="public sealed class Image : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddDebugHeader">
-      <MemberSignature Language="C#" Value="public void AddDebugHeader ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CLIHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.CLIHeader CLIHeader { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.CLIHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image CreateImage ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DebugHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DebugHeader DebugHeader { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DOSHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DOSHeader DOSHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DOSHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ExportTable ExportTable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ExportTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileInformation">
-      <MemberSignature Language="C#" Value="public System.IO.FileInfo FileInformation { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.FileInfo</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (byte[] image);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="image" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="image">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetReaderAtVirtualAddress">
-      <MemberSignature Language="C#" Value="public System.IO.BinaryReader GetReaderAtVirtualAddress (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.BinaryReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.HintNameTable HintNameTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.HintNameTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAddressTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportAddressTable ImportAddressTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportAddressTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportLookupTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportLookupTable ImportLookupTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportLookupTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportTable ImportTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataRoot">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataRoot MetadataRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataRoot</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PEFileHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEFileHeader PEFileHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEFileHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PEOptionalHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader PEOptionalHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolveVirtualAddress">
-      <MemberSignature Language="C#" Value="public long ResolveVirtualAddress (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sections">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SectionCollection Sections { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TextSection">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Section TextSection { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Section</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml
deleted file mode 100644 (file)
index 54ff6b2..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<Type Name="ImageCharacteristics" FullName="Mono.Cecil.Binary.ImageCharacteristics">
-  <TypeSignature Language="C#" Value="public enum ImageCharacteristics" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="__flags">
-      <MemberSignature Language="C#" Value="__flags" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="_32BitsMachine">
-      <MemberSignature Language="C#" Value="_32BitsMachine" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AggressiveWSTrim">
-      <MemberSignature Language="C#" Value="AggressiveWSTrim" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BytesReversedHI">
-      <MemberSignature Language="C#" Value="BytesReversedHI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BytesReversedLo">
-      <MemberSignature Language="C#" Value="BytesReversedLo" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CILOnlyDll">
-      <MemberSignature Language="C#" Value="CILOnlyDll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CILOnlyExe">
-      <MemberSignature Language="C#" Value="CILOnlyExe" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DebugStripped">
-      <MemberSignature Language="C#" Value="DebugStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dll">
-      <MemberSignature Language="C#" Value="Dll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExecutableImage">
-      <MemberSignature Language="C#" Value="ExecutableImage" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LargeAddressAware">
-      <MemberSignature Language="C#" Value="LargeAddressAware" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LineNumsStripped">
-      <MemberSignature Language="C#" Value="LineNumsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalSymsStripped">
-      <MemberSignature Language="C#" Value="LocalSymsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NetRunFromSwap">
-      <MemberSignature Language="C#" Value="NetRunFromSwap" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RelocsStripped">
-      <MemberSignature Language="C#" Value="RelocsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RemovableRunFromSwap">
-      <MemberSignature Language="C#" Value="RemovableRunFromSwap" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReservedForFutureUse">
-      <MemberSignature Language="C#" Value="ReservedForFutureUse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="System">
-      <MemberSignature Language="C#" Value="System" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UPSystemOnly">
-      <MemberSignature Language="C#" Value="UPSystemOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml
deleted file mode 100644 (file)
index 2b1c4b3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="ImageFormatException" FullName="Mono.Cecil.Binary.ImageFormatException">
-  <TypeSignature Language="C#" Value="public class ImageFormatException : Exception" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Exception</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml
deleted file mode 100644 (file)
index 53d3636..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ImportAddressTable" FullName="Mono.Cecil.Binary.ImportAddressTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportAddressTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameTableRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA HintNameTableRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml
deleted file mode 100644 (file)
index 37cbc59..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ImportLookupTable" FullName="Mono.Cecil.Binary.ImportLookupTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportLookupTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA HintNameRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml
deleted file mode 100644 (file)
index 9e43e30..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ImportTable" FullName="Mono.Cecil.Binary.ImportTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DateTimeStamp">
-      <MemberSignature Language="C#" Value="public uint DateTimeStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ForwardChain">
-      <MemberSignature Language="C#" Value="public uint ForwardChain;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAddressTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA ImportAddressTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportLookupTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA ImportLookupTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml
deleted file mode 100644 (file)
index 6c6b5bd..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-<Type Name="PEFileHeader" FullName="Mono.Cecil.Binary.PEFileHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEFileHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImageCharacteristics Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Machine">
-      <MemberSignature Language="C#" Value="public ushort Machine;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfSections">
-      <MemberSignature Language="C#" Value="public ushort NumberOfSections;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfSymbols">
-      <MemberSignature Language="C#" Value="public uint NumberOfSymbols;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OptionalHeaderSize">
-      <MemberSignature Language="C#" Value="public ushort OptionalHeaderSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToSymbolTable">
-      <MemberSignature Language="C#" Value="public uint PointerToSymbolTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml
deleted file mode 100644 (file)
index b44913e..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-<Type Name="PEOptionalHeader+DataDirectoriesHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.DataDirectoriesHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseRelocationTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory BaseRelocationTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BoundImport">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory BoundImport;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CertificateTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CertificateTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CLIHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CLIHeader;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Copyright">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Copyright;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Debug">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Debug;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DelayImportDescriptor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory DelayImportDescriptor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExceptionTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExceptionTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExportTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GlobalPtr">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory GlobalPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IAT">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory IAT;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ImportTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadConfigTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory LoadConfigTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResourceTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ResourceTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TLSTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory TLSTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml
deleted file mode 100644 (file)
index 7234439..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-<Type Name="PEOptionalHeader+NTSpecificFieldsHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.NTSpecificFieldsHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DLLFlags">
-      <MemberSignature Language="C#" Value="public ushort DLLFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileAlignment">
-      <MemberSignature Language="C#" Value="public uint FileAlignment;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileChecksum">
-      <MemberSignature Language="C#" Value="public uint FileChecksum;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeaderSize">
-      <MemberSignature Language="C#" Value="public uint HeaderSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapCommitSize">
-      <MemberSignature Language="C#" Value="public ulong HeapCommitSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapReserveSize">
-      <MemberSignature Language="C#" Value="public ulong HeapReserveSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageBase">
-      <MemberSignature Language="C#" Value="public ulong ImageBase;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageSize">
-      <MemberSignature Language="C#" Value="public uint ImageSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoaderFlags">
-      <MemberSignature Language="C#" Value="public uint LoaderFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfDataDir">
-      <MemberSignature Language="C#" Value="public uint NumberOfDataDir;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajor">
-      <MemberSignature Language="C#" Value="public ushort OSMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinor">
-      <MemberSignature Language="C#" Value="public ushort OSMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SectionAlignment">
-      <MemberSignature Language="C#" Value="public uint SectionAlignment;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackCommitSize">
-      <MemberSignature Language="C#" Value="public ulong StackCommitSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackReserveSize">
-      <MemberSignature Language="C#" Value="public ulong StackReserveSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSysMajor">
-      <MemberSignature Language="C#" Value="public ushort SubSysMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSysMinor">
-      <MemberSignature Language="C#" Value="public ushort SubSysMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSystem">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SubSystem SubSystem;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserMajor">
-      <MemberSignature Language="C#" Value="public ushort UserMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserMinor">
-      <MemberSignature Language="C#" Value="public ushort UserMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml
deleted file mode 100644 (file)
index b53fb33..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-<Type Name="PEOptionalHeader+StandardFieldsHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.StandardFieldsHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseOfCode">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA BaseOfCode;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseOfData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA BaseOfData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeSize">
-      <MemberSignature Language="C#" Value="public uint CodeSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPointRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA EntryPointRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitializedDataSize">
-      <MemberSignature Language="C#" Value="public uint InitializedDataSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPE64">
-      <MemberSignature Language="C#" Value="public bool IsPE64 { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LMajor">
-      <MemberSignature Language="C#" Value="public byte LMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LMinor">
-      <MemberSignature Language="C#" Value="public byte LMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Magic">
-      <MemberSignature Language="C#" Value="public ushort Magic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UninitializedDataSize">
-      <MemberSignature Language="C#" Value="public uint UninitializedDataSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml
deleted file mode 100644 (file)
index 0f7ef42..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="PEOptionalHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DataDirectories">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader DataDirectories;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NTSpecificFields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader NTSpecificFields;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StandardFields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader StandardFields;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml
deleted file mode 100644 (file)
index 422d104..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-<Type Name="RVA" FullName="Mono.Cecil.Binary.RVA">
-  <TypeSignature Language="C#" Value="public struct RVA" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RVA (uint rva);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="rva" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Addition">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Addition (Mono.Cecil.Binary.RVA rva, uint x);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="x" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <param name="x">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_GreaterThan">
-      <MemberSignature Language="C#" Value="public static bool op_GreaterThan (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_GreaterThanOrEqual">
-      <MemberSignature Language="C#" Value="public static bool op_GreaterThanOrEqual (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Implicit">
-      <MemberSignature Language="C#" Value="public static uint op_Implicit (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Implicit">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Implicit (uint val);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="val" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="val">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_LessThan">
-      <MemberSignature Language="C#" Value="public static bool op_LessThan (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_LessThanOrEqual">
-      <MemberSignature Language="C#" Value="public static bool op_LessThanOrEqual (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Subtraction">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Subtraction (Mono.Cecil.Binary.RVA rva, uint x);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="x" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <param name="x">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Binary.RVA Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml
deleted file mode 100644 (file)
index cb2233d..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<Type Name="ResourceDataEntry" FullName="Mono.Cecil.Binary.ResourceDataEntry">
-  <TypeSignature Language="C#" Value="public class ResourceDataEntry : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDataEntry ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDataEntry (int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Codepage">
-      <MemberSignature Language="C#" Value="public uint Codepage;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA Data;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResourceData">
-      <MemberSignature Language="C#" Value="public byte[] ResourceData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml
deleted file mode 100644 (file)
index 1e9531f..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="ResourceDirectoryEntry" FullName="Mono.Cecil.Binary.ResourceDirectoryEntry">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryEntry : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (Mono.Cecil.Binary.ResourceDirectoryString name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.Binary.ResourceDirectoryString" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (int id);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (Mono.Cecil.Binary.ResourceDirectoryString name, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.Binary.ResourceDirectoryString" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (int id, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Child">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ResourceNode Child;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ResourceNode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ID">
-      <MemberSignature Language="C#" Value="public int ID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IdentifiedByName">
-      <MemberSignature Language="C#" Value="public bool IdentifiedByName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ResourceDirectoryString Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ResourceDirectoryString</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml
deleted file mode 100644 (file)
index 6047a23..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<Type Name="ResourceDirectoryString" FullName="Mono.Cecil.Binary.ResourceDirectoryString">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryString : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryString (string str);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryString (string str, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="str" Type="System.String" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="str">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="public string String;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml
deleted file mode 100644 (file)
index de0c1de..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<Type Name="ResourceDirectoryTable" FullName="Mono.Cecil.Binary.ResourceDirectoryTable">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryTable : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryTable ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryTable (int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Entries">
-      <MemberSignature Language="C#" Value="public System.Collections.IList Entries { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml
deleted file mode 100644 (file)
index 31a32ef..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<Type Name="ResourceNode" FullName="Mono.Cecil.Binary.ResourceNode">
-  <TypeSignature Language="C#" Value="public abstract class ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public int Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml
deleted file mode 100644 (file)
index 56f47d9..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="RuntimeImage" FullName="Mono.Cecil.Binary.RuntimeImage">
-  <TypeSignature Language="C#" Value="public enum RuntimeImage" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="F32BitsRequired">
-      <MemberSignature Language="C#" Value="F32BitsRequired" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ILOnly">
-      <MemberSignature Language="C#" Value="ILOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StrongNameSigned">
-      <MemberSignature Language="C#" Value="StrongNameSigned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TrackDebugData">
-      <MemberSignature Language="C#" Value="TrackDebugData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml
deleted file mode 100644 (file)
index e88861d..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-<Type Name="Section" FullName="Mono.Cecil.Binary.Section">
-  <TypeSignature Language="C#" Value="public sealed class Section : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SectionCharacteristics Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfLineNumbers">
-      <MemberSignature Language="C#" Value="public ushort NumberOfLineNumbers;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfRelocations">
-      <MemberSignature Language="C#" Value="public ushort NumberOfRelocations;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToLineNumbers">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToLineNumbers;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRawData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRelocations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToRelocations;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Relocs">
-      <MemberSignature Language="C#" Value="public const string Relocs;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public const string Resources;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SData">
-      <MemberSignature Language="C#" Value="public const string SData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SizeOfRawData">
-      <MemberSignature Language="C#" Value="public uint SizeOfRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="public const string Text;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualAddress">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA VirtualAddress;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualSize">
-      <MemberSignature Language="C#" Value="public uint VirtualSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml
deleted file mode 100644 (file)
index e8ba933..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-<Type Name="SectionCharacteristics" FullName="Mono.Cecil.Binary.SectionCharacteristics">
-  <TypeSignature Language="C#" Value="public enum SectionCharacteristics" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Align1024Bytes">
-      <MemberSignature Language="C#" Value="Align1024Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align128Bytes">
-      <MemberSignature Language="C#" Value="Align128Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align16Bytes">
-      <MemberSignature Language="C#" Value="Align16Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align1Bytes">
-      <MemberSignature Language="C#" Value="Align1Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align2048Bytes">
-      <MemberSignature Language="C#" Value="Align2048Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align256Bytes">
-      <MemberSignature Language="C#" Value="Align256Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align2Bytes">
-      <MemberSignature Language="C#" Value="Align2Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align32Bytes">
-      <MemberSignature Language="C#" Value="Align32Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align4096Bytes">
-      <MemberSignature Language="C#" Value="Align4096Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align4Bytes">
-      <MemberSignature Language="C#" Value="Align4Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align512Bytes">
-      <MemberSignature Language="C#" Value="Align512Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align64Bytes">
-      <MemberSignature Language="C#" Value="Align64Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align8192Bytes">
-      <MemberSignature Language="C#" Value="Align8192Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align8Bytes">
-      <MemberSignature Language="C#" Value="Align8Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsCode">
-      <MemberSignature Language="C#" Value="ContainsCode" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsInitializedData">
-      <MemberSignature Language="C#" Value="ContainsInitializedData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsUninitializedData">
-      <MemberSignature Language="C#" Value="ContainsUninitializedData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GPRel">
-      <MemberSignature Language="C#" Value="GPRel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkCOMDAT">
-      <MemberSignature Language="C#" Value="LnkCOMDAT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkInfo">
-      <MemberSignature Language="C#" Value="LnkInfo" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkNRelocOvfl">
-      <MemberSignature Language="C#" Value="LnkNRelocOvfl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkOther">
-      <MemberSignature Language="C#" Value="LnkOther" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkRemove">
-      <MemberSignature Language="C#" Value="LnkRemove" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemDiscardable">
-      <MemberSignature Language="C#" Value="MemDiscardable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemExecute">
-      <MemberSignature Language="C#" Value="MemExecute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemLocked">
-      <MemberSignature Language="C#" Value="MemLocked" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemNotCached">
-      <MemberSignature Language="C#" Value="MemNotCached" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemNotPaged">
-      <MemberSignature Language="C#" Value="MemNotPaged" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemoryRead">
-      <MemberSignature Language="C#" Value="MemoryRead" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemoryWrite">
-      <MemberSignature Language="C#" Value="MemoryWrite" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemPreload">
-      <MemberSignature Language="C#" Value="MemPreload" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemPurgeable">
-      <MemberSignature Language="C#" Value="MemPurgeable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemShared">
-      <MemberSignature Language="C#" Value="MemShared" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeNoPad">
-      <MemberSignature Language="C#" Value="TypeNoPad" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml
deleted file mode 100644 (file)
index 2160efe..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<Type Name="SectionCollection" FullName="Mono.Cecil.Binary.SectionCollection">
-  <TypeSignature Language="C#" Value="public sealed class SectionCollection : Mono.Cecil.Binary.IBinaryVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Binary.Section value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Binary.Section value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Section this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Section</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml
deleted file mode 100644 (file)
index 80c8605..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<Type Name="SubSystem" FullName="Mono.Cecil.Binary.SubSystem">
-  <TypeSignature Language="C#" Value="public enum SubSystem" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="EfiApplication">
-      <MemberSignature Language="C#" Value="EfiApplication" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiBootServiceDriver">
-      <MemberSignature Language="C#" Value="EfiBootServiceDriver" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiRom">
-      <MemberSignature Language="C#" Value="EfiRom" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiRuntimeDriver">
-      <MemberSignature Language="C#" Value="EfiRuntimeDriver" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Native">
-      <MemberSignature Language="C#" Value="Native" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NexusAgent">
-      <MemberSignature Language="C#" Value="NexusAgent" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PosixCui">
-      <MemberSignature Language="C#" Value="PosixCui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unknown">
-      <MemberSignature Language="C#" Value="Unknown" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsCeGui">
-      <MemberSignature Language="C#" Value="WindowsCeGui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsCui">
-      <MemberSignature Language="C#" Value="WindowsCui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsGui">
-      <MemberSignature Language="C#" Value="WindowsGui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Xbox">
-      <MemberSignature Language="C#" Value="Xbox" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml
deleted file mode 100644 (file)
index 3f90573..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-<Type Name="BaseCodeVisitor" FullName="Mono.Cecil.Cil.BaseCodeVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseCodeVisitor : Mono.Cecil.Cil.ICodeVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseCodeVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateMethodBody">
-      <MemberSignature Language="C#" Value="public virtual void TerminateMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandler">
-      <MemberSignature Language="C#" Value="public virtual void VisitExceptionHandler (Mono.Cecil.Cil.ExceptionHandler eh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="eh" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="eh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandlerCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitExceptionHandlerCollection (Mono.Cecil.Cil.ExceptionHandlerCollection seh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="seh" Type="Mono.Cecil.Cil.ExceptionHandlerCollection" />
-      </Parameters>
-      <Docs>
-        <param name="seh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstruction">
-      <MemberSignature Language="C#" Value="public virtual void VisitInstruction (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstructionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitInstructionCollection (Mono.Cecil.Cil.InstructionCollection instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instructions" Type="Mono.Cecil.Cil.InstructionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodBody">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScope">
-      <MemberSignature Language="C#" Value="public virtual void VisitScope (Mono.Cecil.Cil.Scope s);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="s" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="s">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScopeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitScopeCollection (Mono.Cecil.Cil.ScopeCollection scopes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scopes" Type="Mono.Cecil.Cil.ScopeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="scopes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitVariableDefinition (Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitVariableDefinitionCollection (Mono.Cecil.Cil.VariableDefinitionCollection variables);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="variables" Type="Mono.Cecil.Cil.VariableDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="variables">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml
deleted file mode 100644 (file)
index 2bd4a82..0000000
+++ /dev/null
@@ -1,797 +0,0 @@
-<Type Name="CilWorker" FullName="Mono.Cecil.Cil.CilWorker">
-  <TypeSignature Language="C#" Value="public sealed class CilWorker" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Append">
-      <MemberSignature Language="C#" Value="public void Append (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.CallSite site);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="site" Type="Mono.Cecil.CallSite" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="site">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction label);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="label" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="label">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction[] labels);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="labels" Type="Mono.Cecil.Cil.Instruction[]" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="labels">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.MethodReference method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="method" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.ParameterDefinition param);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="param" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="param">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, byte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, double d);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="d" Type="System.Double" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="d">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, int i);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, long l);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="l" Type="System.Int64" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="l">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, sbyte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.SByte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, float f);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="f" Type="System.Single" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="f">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, string str);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.CallSite site);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="site" Type="Mono.Cecil.CallSite" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="site">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction target);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="target">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction[] targets);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="targets" Type="Mono.Cecil.Cil.Instruction[]" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="targets">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.ParameterDefinition param);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="param" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="param">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, byte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, double d);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="d" Type="System.Double" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="d">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, int i);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, long l);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="l" Type="System.Int64" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="l">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, sbyte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.SByte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, float f);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="f" Type="System.Single" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="f">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, string str);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetBody">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody GetBody ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InsertAfter">
-      <MemberSignature Language="C#" Value="public void InsertAfter (Mono.Cecil.Cil.Instruction target, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="target">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InsertBefore">
-      <MemberSignature Language="C#" Value="public void InsertBefore (Mono.Cecil.Cil.Instruction target, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="target">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Replace">
-      <MemberSignature Language="C#" Value="public void Replace (Mono.Cecil.Cil.Instruction old, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="old" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="old">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml
deleted file mode 100644 (file)
index d103943..0000000
+++ /dev/null
@@ -1,2863 +0,0 @@
-<Type Name="Code" FullName="Mono.Cecil.Cil.Code">
-  <TypeSignature Language="C#" Value="public enum Code" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="Add" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf">
-      <MemberSignature Language="C#" Value="Add_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf_Un">
-      <MemberSignature Language="C#" Value="Add_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="And">
-      <MemberSignature Language="C#" Value="And" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Arglist">
-      <MemberSignature Language="C#" Value="Arglist" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq">
-      <MemberSignature Language="C#" Value="Beq" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq_S">
-      <MemberSignature Language="C#" Value="Beq_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge">
-      <MemberSignature Language="C#" Value="Bge" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_S">
-      <MemberSignature Language="C#" Value="Bge_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un">
-      <MemberSignature Language="C#" Value="Bge_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un_S">
-      <MemberSignature Language="C#" Value="Bge_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt">
-      <MemberSignature Language="C#" Value="Bgt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_S">
-      <MemberSignature Language="C#" Value="Bgt_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un">
-      <MemberSignature Language="C#" Value="Bgt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un_S">
-      <MemberSignature Language="C#" Value="Bgt_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble">
-      <MemberSignature Language="C#" Value="Ble" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_S">
-      <MemberSignature Language="C#" Value="Ble_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un">
-      <MemberSignature Language="C#" Value="Ble_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un_S">
-      <MemberSignature Language="C#" Value="Ble_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt">
-      <MemberSignature Language="C#" Value="Blt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_S">
-      <MemberSignature Language="C#" Value="Blt_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un">
-      <MemberSignature Language="C#" Value="Blt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un_S">
-      <MemberSignature Language="C#" Value="Blt_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un">
-      <MemberSignature Language="C#" Value="Bne_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un_S">
-      <MemberSignature Language="C#" Value="Bne_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Box">
-      <MemberSignature Language="C#" Value="Box" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Br">
-      <MemberSignature Language="C#" Value="Br" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Br_S">
-      <MemberSignature Language="C#" Value="Br_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="Break" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse">
-      <MemberSignature Language="C#" Value="Brfalse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse_S">
-      <MemberSignature Language="C#" Value="Brfalse_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue">
-      <MemberSignature Language="C#" Value="Brtrue" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue_S">
-      <MemberSignature Language="C#" Value="Brtrue_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="Call" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Calli">
-      <MemberSignature Language="C#" Value="Calli" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Callvirt">
-      <MemberSignature Language="C#" Value="Callvirt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Castclass">
-      <MemberSignature Language="C#" Value="Castclass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ceq">
-      <MemberSignature Language="C#" Value="Ceq" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt">
-      <MemberSignature Language="C#" Value="Cgt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt_Un">
-      <MemberSignature Language="C#" Value="Cgt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ckfinite">
-      <MemberSignature Language="C#" Value="Ckfinite" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt">
-      <MemberSignature Language="C#" Value="Clt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt_Un">
-      <MemberSignature Language="C#" Value="Clt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Constrained">
-      <MemberSignature Language="C#" Value="Constrained" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I">
-      <MemberSignature Language="C#" Value="Conv_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I1">
-      <MemberSignature Language="C#" Value="Conv_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I2">
-      <MemberSignature Language="C#" Value="Conv_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I4">
-      <MemberSignature Language="C#" Value="Conv_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I8">
-      <MemberSignature Language="C#" Value="Conv_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I1_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I2_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I4_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I8_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U1_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U2_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U4_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U8_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R_Un">
-      <MemberSignature Language="C#" Value="Conv_R_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R4">
-      <MemberSignature Language="C#" Value="Conv_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R8">
-      <MemberSignature Language="C#" Value="Conv_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U">
-      <MemberSignature Language="C#" Value="Conv_U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U1">
-      <MemberSignature Language="C#" Value="Conv_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U2">
-      <MemberSignature Language="C#" Value="Conv_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U4">
-      <MemberSignature Language="C#" Value="Conv_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U8">
-      <MemberSignature Language="C#" Value="Conv_U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpblk">
-      <MemberSignature Language="C#" Value="Cpblk" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpobj">
-      <MemberSignature Language="C#" Value="Cpobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Div">
-      <MemberSignature Language="C#" Value="Div" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Div_Un">
-      <MemberSignature Language="C#" Value="Div_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dup">
-      <MemberSignature Language="C#" Value="Dup" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfilter">
-      <MemberSignature Language="C#" Value="Endfilter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfinally">
-      <MemberSignature Language="C#" Value="Endfinally" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Initblk">
-      <MemberSignature Language="C#" Value="Initblk" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Initobj">
-      <MemberSignature Language="C#" Value="Initobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Isinst">
-      <MemberSignature Language="C#" Value="Isinst" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Jmp">
-      <MemberSignature Language="C#" Value="Jmp" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg">
-      <MemberSignature Language="C#" Value="Ldarg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_0">
-      <MemberSignature Language="C#" Value="Ldarg_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_1">
-      <MemberSignature Language="C#" Value="Ldarg_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_2">
-      <MemberSignature Language="C#" Value="Ldarg_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_3">
-      <MemberSignature Language="C#" Value="Ldarg_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_S">
-      <MemberSignature Language="C#" Value="Ldarg_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga">
-      <MemberSignature Language="C#" Value="Ldarga" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga_S">
-      <MemberSignature Language="C#" Value="Ldarga_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4">
-      <MemberSignature Language="C#" Value="Ldc_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_0">
-      <MemberSignature Language="C#" Value="Ldc_I4_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_1">
-      <MemberSignature Language="C#" Value="Ldc_I4_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_2">
-      <MemberSignature Language="C#" Value="Ldc_I4_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_3">
-      <MemberSignature Language="C#" Value="Ldc_I4_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_4">
-      <MemberSignature Language="C#" Value="Ldc_I4_4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_5">
-      <MemberSignature Language="C#" Value="Ldc_I4_5" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_6">
-      <MemberSignature Language="C#" Value="Ldc_I4_6" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_7">
-      <MemberSignature Language="C#" Value="Ldc_I4_7" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_8">
-      <MemberSignature Language="C#" Value="Ldc_I4_8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_M1">
-      <MemberSignature Language="C#" Value="Ldc_I4_M1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_S">
-      <MemberSignature Language="C#" Value="Ldc_I4_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I8">
-      <MemberSignature Language="C#" Value="Ldc_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R4">
-      <MemberSignature Language="C#" Value="Ldc_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R8">
-      <MemberSignature Language="C#" Value="Ldc_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Any">
-      <MemberSignature Language="C#" Value="Ldelem_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I">
-      <MemberSignature Language="C#" Value="Ldelem_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I1">
-      <MemberSignature Language="C#" Value="Ldelem_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I2">
-      <MemberSignature Language="C#" Value="Ldelem_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I4">
-      <MemberSignature Language="C#" Value="Ldelem_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I8">
-      <MemberSignature Language="C#" Value="Ldelem_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R4">
-      <MemberSignature Language="C#" Value="Ldelem_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R8">
-      <MemberSignature Language="C#" Value="Ldelem_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Ref">
-      <MemberSignature Language="C#" Value="Ldelem_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U1">
-      <MemberSignature Language="C#" Value="Ldelem_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U2">
-      <MemberSignature Language="C#" Value="Ldelem_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U4">
-      <MemberSignature Language="C#" Value="Ldelem_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelema">
-      <MemberSignature Language="C#" Value="Ldelema" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldfld">
-      <MemberSignature Language="C#" Value="Ldfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldflda">
-      <MemberSignature Language="C#" Value="Ldflda" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldftn">
-      <MemberSignature Language="C#" Value="Ldftn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I">
-      <MemberSignature Language="C#" Value="Ldind_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I1">
-      <MemberSignature Language="C#" Value="Ldind_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I2">
-      <MemberSignature Language="C#" Value="Ldind_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I4">
-      <MemberSignature Language="C#" Value="Ldind_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I8">
-      <MemberSignature Language="C#" Value="Ldind_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R4">
-      <MemberSignature Language="C#" Value="Ldind_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R8">
-      <MemberSignature Language="C#" Value="Ldind_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_Ref">
-      <MemberSignature Language="C#" Value="Ldind_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U1">
-      <MemberSignature Language="C#" Value="Ldind_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U2">
-      <MemberSignature Language="C#" Value="Ldind_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U4">
-      <MemberSignature Language="C#" Value="Ldind_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldlen">
-      <MemberSignature Language="C#" Value="Ldlen" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc">
-      <MemberSignature Language="C#" Value="Ldloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_0">
-      <MemberSignature Language="C#" Value="Ldloc_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_1">
-      <MemberSignature Language="C#" Value="Ldloc_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_2">
-      <MemberSignature Language="C#" Value="Ldloc_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_3">
-      <MemberSignature Language="C#" Value="Ldloc_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_S">
-      <MemberSignature Language="C#" Value="Ldloc_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca">
-      <MemberSignature Language="C#" Value="Ldloca" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca_S">
-      <MemberSignature Language="C#" Value="Ldloca_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldnull">
-      <MemberSignature Language="C#" Value="Ldnull" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldobj">
-      <MemberSignature Language="C#" Value="Ldobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsfld">
-      <MemberSignature Language="C#" Value="Ldsfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsflda">
-      <MemberSignature Language="C#" Value="Ldsflda" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldstr">
-      <MemberSignature Language="C#" Value="Ldstr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldtoken">
-      <MemberSignature Language="C#" Value="Ldtoken" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldvirtftn">
-      <MemberSignature Language="C#" Value="Ldvirtftn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave">
-      <MemberSignature Language="C#" Value="Leave" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave_S">
-      <MemberSignature Language="C#" Value="Leave_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Localloc">
-      <MemberSignature Language="C#" Value="Localloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mkrefany">
-      <MemberSignature Language="C#" Value="Mkrefany" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul">
-      <MemberSignature Language="C#" Value="Mul" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf">
-      <MemberSignature Language="C#" Value="Mul_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf_Un">
-      <MemberSignature Language="C#" Value="Mul_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Neg">
-      <MemberSignature Language="C#" Value="Neg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Newarr">
-      <MemberSignature Language="C#" Value="Newarr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Newobj">
-      <MemberSignature Language="C#" Value="Newobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="No">
-      <MemberSignature Language="C#" Value="No" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Nop">
-      <MemberSignature Language="C#" Value="Nop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Not">
-      <MemberSignature Language="C#" Value="Not" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Or">
-      <MemberSignature Language="C#" Value="Or" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop">
-      <MemberSignature Language="C#" Value="Pop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Readonly">
-      <MemberSignature Language="C#" Value="Readonly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanytype">
-      <MemberSignature Language="C#" Value="Refanytype" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanyval">
-      <MemberSignature Language="C#" Value="Refanyval" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem">
-      <MemberSignature Language="C#" Value="Rem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem_Un">
-      <MemberSignature Language="C#" Value="Rem_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ret">
-      <MemberSignature Language="C#" Value="Ret" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rethrow">
-      <MemberSignature Language="C#" Value="Rethrow" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shl">
-      <MemberSignature Language="C#" Value="Shl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr">
-      <MemberSignature Language="C#" Value="Shr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr_Un">
-      <MemberSignature Language="C#" Value="Shr_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sizeof">
-      <MemberSignature Language="C#" Value="Sizeof" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg">
-      <MemberSignature Language="C#" Value="Starg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg_S">
-      <MemberSignature Language="C#" Value="Starg_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Any">
-      <MemberSignature Language="C#" Value="Stelem_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I">
-      <MemberSignature Language="C#" Value="Stelem_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I1">
-      <MemberSignature Language="C#" Value="Stelem_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I2">
-      <MemberSignature Language="C#" Value="Stelem_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I4">
-      <MemberSignature Language="C#" Value="Stelem_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I8">
-      <MemberSignature Language="C#" Value="Stelem_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R4">
-      <MemberSignature Language="C#" Value="Stelem_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R8">
-      <MemberSignature Language="C#" Value="Stelem_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Ref">
-      <MemberSignature Language="C#" Value="Stelem_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stfld">
-      <MemberSignature Language="C#" Value="Stfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I">
-      <MemberSignature Language="C#" Value="Stind_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I1">
-      <MemberSignature Language="C#" Value="Stind_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I2">
-      <MemberSignature Language="C#" Value="Stind_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I4">
-      <MemberSignature Language="C#" Value="Stind_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I8">
-      <MemberSignature Language="C#" Value="Stind_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R4">
-      <MemberSignature Language="C#" Value="Stind_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R8">
-      <MemberSignature Language="C#" Value="Stind_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_Ref">
-      <MemberSignature Language="C#" Value="Stind_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc">
-      <MemberSignature Language="C#" Value="Stloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_0">
-      <MemberSignature Language="C#" Value="Stloc_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_1">
-      <MemberSignature Language="C#" Value="Stloc_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_2">
-      <MemberSignature Language="C#" Value="Stloc_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_3">
-      <MemberSignature Language="C#" Value="Stloc_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_S">
-      <MemberSignature Language="C#" Value="Stloc_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stobj">
-      <MemberSignature Language="C#" Value="Stobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stsfld">
-      <MemberSignature Language="C#" Value="Stsfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub">
-      <MemberSignature Language="C#" Value="Sub" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf">
-      <MemberSignature Language="C#" Value="Sub_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf_Un">
-      <MemberSignature Language="C#" Value="Sub_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Switch">
-      <MemberSignature Language="C#" Value="Switch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Tail">
-      <MemberSignature Language="C#" Value="Tail" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="Throw" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unaligned">
-      <MemberSignature Language="C#" Value="Unaligned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox">
-      <MemberSignature Language="C#" Value="Unbox" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox_Any">
-      <MemberSignature Language="C#" Value="Unbox_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Volatile">
-      <MemberSignature Language="C#" Value="Volatile" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Xor">
-      <MemberSignature Language="C#" Value="Xor" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml
deleted file mode 100644 (file)
index cf00934..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<Type Name="Document" FullName="Mono.Cecil.Cil.Document">
-  <TypeSignature Language="C#" Value="public class Document" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public Document (string url);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="url" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="url">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgorithm">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.DocumentHashAlgorithm HashAlgorithm { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Language">
-      <MemberSignature Language="C#" Value="public Guid Language { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LanguageVendor">
-      <MemberSignature Language="C#" Value="public Guid LanguageVendor { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Guid Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Url">
-      <MemberSignature Language="C#" Value="public string Url { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml
deleted file mode 100644 (file)
index 6154401..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<Type Name="DocumentHashAlgorithm" FullName="Mono.Cecil.Cil.DocumentHashAlgorithm">
-  <TypeSignature Language="C#" Value="public enum DocumentHashAlgorithm" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MD5">
-      <MemberSignature Language="C#" Value="MD5" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(1080993376, 25807, 19586, 182, 240, 66, 212, 129, 114, 167, 153)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SHA1">
-      <MemberSignature Language="C#" Value="SHA1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(4279768812, 43614, 19728, 135, 247, 111, 73, 99, 131, 52, 96)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml
deleted file mode 100644 (file)
index 3e54ed2..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-<Type Name="DocumentLanguage" FullName="Mono.Cecil.Cil.DocumentLanguage">
-  <TypeSignature Language="C#" Value="public abstract class DocumentLanguage" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentLanguage ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Basic">
-      <MemberSignature Language="C#" Value="public static readonly Guid Basic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="C">
-      <MemberSignature Language="C#" Value="public static readonly Guid C;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CIL">
-      <MemberSignature Language="C#" Value="public static readonly Guid CIL;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cobol">
-      <MemberSignature Language="C#" Value="public static readonly Guid Cobol;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpp">
-      <MemberSignature Language="C#" Value="public static readonly Guid Cpp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CSharp">
-      <MemberSignature Language="C#" Value="public static readonly Guid CSharp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Java">
-      <MemberSignature Language="C#" Value="public static readonly Guid Java;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="JScript">
-      <MemberSignature Language="C#" Value="public static readonly Guid JScript;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MCpp">
-      <MemberSignature Language="C#" Value="public static readonly Guid MCpp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="public static readonly Guid None;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pascal">
-      <MemberSignature Language="C#" Value="public static readonly Guid Pascal;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SMC">
-      <MemberSignature Language="C#" Value="public static readonly Guid SMC;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml
deleted file mode 100644 (file)
index 0caae66..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<Type Name="DocumentLanguageVendor" FullName="Mono.Cecil.Cil.DocumentLanguageVendor">
-  <TypeSignature Language="C#" Value="public abstract class DocumentLanguageVendor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentLanguageVendor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Microsoft">
-      <MemberSignature Language="C#" Value="public static readonly Guid Microsoft;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="public static readonly Guid Other;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml
deleted file mode 100644 (file)
index 1b77d7f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<Type Name="DocumentType" FullName="Mono.Cecil.Cil.DocumentType">
-  <TypeSignature Language="C#" Value="public abstract class DocumentType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentType ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="public static readonly Guid Other;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="public static readonly Guid Text;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml
deleted file mode 100644 (file)
index 9d82625..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<Type Name="ExceptionHandler" FullName="Mono.Cecil.Cil.ExceptionHandler">
-  <TypeSignature Language="C#" Value="public sealed class ExceptionHandler : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExceptionHandler (Mono.Cecil.Cil.ExceptionHandlerType type);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.Cil.ExceptionHandlerType" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CatchType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference CatchType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FilterEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction FilterEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FilterStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction FilterStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HandlerEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction HandlerEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HandlerStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction HandlerStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TryEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction TryEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TryStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction TryStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandlerType Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml
deleted file mode 100644 (file)
index d96b2d4..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ExceptionHandlerCollection" FullName="Mono.Cecil.Cil.ExceptionHandlerCollection">
-  <TypeSignature Language="C#" Value="public sealed class ExceptionHandlerCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExceptionHandlerCollection (Mono.Cecil.Cil.MethodBody container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandler this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandler</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml
deleted file mode 100644 (file)
index b4b6d7d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<Type Name="ExceptionHandlerType" FullName="Mono.Cecil.Cil.ExceptionHandlerType">
-  <TypeSignature Language="C#" Value="public enum ExceptionHandlerType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Catch">
-      <MemberSignature Language="C#" Value="Catch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fault">
-      <MemberSignature Language="C#" Value="Fault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Filter">
-      <MemberSignature Language="C#" Value="Filter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Finally">
-      <MemberSignature Language="C#" Value="Finally" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml
deleted file mode 100644 (file)
index 1ad15f0..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-<Type Name="FlowControl" FullName="Mono.Cecil.Cil.FlowControl">
-  <TypeSignature Language="C#" Value="public enum FlowControl" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Branch">
-      <MemberSignature Language="C#" Value="Branch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="Break" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="Call" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cond_Branch">
-      <MemberSignature Language="C#" Value="Cond_Branch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Meta">
-      <MemberSignature Language="C#" Value="Meta" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Next">
-      <MemberSignature Language="C#" Value="Next" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Phi">
-      <MemberSignature Language="C#" Value="Phi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Return">
-      <MemberSignature Language="C#" Value="Return" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="Throw" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml
deleted file mode 100644 (file)
index 10e89ac..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<Type Name="GuidAttribute" FullName="Mono.Cecil.Cil.GuidAttribute">
-  <TypeSignature Language="C#" Value="public sealed class GuidAttribute : Attribute" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Attribute</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.AttributeUsage(System.AttributeTargets.Field)</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GuidAttribute (uint a, ushort b, ushort c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="a" Type="System.UInt32" />
-        <Parameter Name="b" Type="System.UInt16" />
-        <Parameter Name="c" Type="System.UInt16" />
-        <Parameter Name="d" Type="System.Byte" />
-        <Parameter Name="e" Type="System.Byte" />
-        <Parameter Name="f" Type="System.Byte" />
-        <Parameter Name="g" Type="System.Byte" />
-        <Parameter Name="h" Type="System.Byte" />
-        <Parameter Name="i" Type="System.Byte" />
-        <Parameter Name="j" Type="System.Byte" />
-        <Parameter Name="k" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="a">To be added.</param>
-        <param name="b">To be added.</param>
-        <param name="c">To be added.</param>
-        <param name="d">To be added.</param>
-        <param name="e">To be added.</param>
-        <param name="f">To be added.</param>
-        <param name="g">To be added.</param>
-        <param name="h">To be added.</param>
-        <param name="i">To be added.</param>
-        <param name="j">To be added.</param>
-        <param name="k">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetGuidFromValue">
-      <MemberSignature Language="C#" Value="public static Guid GetGuidFromValue (int value, Type enumeration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Int32" />
-        <Parameter Name="enumeration" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <param name="enumeration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetValueFromGuid">
-      <MemberSignature Language="C#" Value="public static int GetValueFromGuid (Guid id, Type enumeration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Guid" />
-        <Parameter Name="enumeration" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <param name="enumeration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guid">
-      <MemberSignature Language="C#" Value="public Guid Guid { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml
deleted file mode 100644 (file)
index 82d85bb..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="ICodeVisitable" FullName="Mono.Cecil.Cil.ICodeVisitable">
-  <TypeSignature Language="C#" Value="public interface ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml
deleted file mode 100644 (file)
index ec3e519..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<Type Name="ICodeVisitor" FullName="Mono.Cecil.Cil.ICodeVisitor">
-  <TypeSignature Language="C#" Value="public interface ICodeVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateMethodBody">
-      <MemberSignature Language="C#" Value="public void TerminateMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandler">
-      <MemberSignature Language="C#" Value="public void VisitExceptionHandler (Mono.Cecil.Cil.ExceptionHandler eh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="eh" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="eh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandlerCollection">
-      <MemberSignature Language="C#" Value="public void VisitExceptionHandlerCollection (Mono.Cecil.Cil.ExceptionHandlerCollection seh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="seh" Type="Mono.Cecil.Cil.ExceptionHandlerCollection" />
-      </Parameters>
-      <Docs>
-        <param name="seh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstruction">
-      <MemberSignature Language="C#" Value="public void VisitInstruction (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstructionCollection">
-      <MemberSignature Language="C#" Value="public void VisitInstructionCollection (Mono.Cecil.Cil.InstructionCollection instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instructions" Type="Mono.Cecil.Cil.InstructionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodBody">
-      <MemberSignature Language="C#" Value="public void VisitMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScope">
-      <MemberSignature Language="C#" Value="public void VisitScope (Mono.Cecil.Cil.Scope scope);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scope" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="scope">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScopeCollection">
-      <MemberSignature Language="C#" Value="public void VisitScopeCollection (Mono.Cecil.Cil.ScopeCollection scopes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scopes" Type="Mono.Cecil.Cil.ScopeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="scopes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinition">
-      <MemberSignature Language="C#" Value="public void VisitVariableDefinition (Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitVariableDefinitionCollection (Mono.Cecil.Cil.VariableDefinitionCollection variables);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="variables" Type="Mono.Cecil.Cil.VariableDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="variables">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml
deleted file mode 100644 (file)
index e2c7650..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IScopeProvider" FullName="Mono.Cecil.Cil.IScopeProvider">
-  <TypeSignature Language="C#" Value="public interface IScopeProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml
deleted file mode 100644 (file)
index 1444b9a..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<Type Name="ISymbolReader" FullName="Mono.Cecil.Cil.ISymbolReader">
-  <TypeSignature Language="C#" Value="public interface ISymbolReader : IDisposable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.IDisposable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public void Read (Mono.Cecil.Cil.MethodBody body, System.Collections.IDictionary instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-        <Parameter Name="instructions" Type="System.Collections.IDictionary" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml
deleted file mode 100644 (file)
index 286eecb..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<Type Name="ISymbolStoreFactory" FullName="Mono.Cecil.Cil.ISymbolStoreFactory">
-  <TypeSignature Language="C#" Value="public interface ISymbolStoreFactory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CreateReader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ISymbolReader CreateReader (Mono.Cecil.ModuleDefinition module, string assemblyFileName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ISymbolReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-        <Parameter Name="assemblyFileName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <param name="assemblyFileName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateWriter">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ISymbolWriter CreateWriter (Mono.Cecil.ModuleDefinition module, string assemblyFileName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ISymbolWriter</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-        <Parameter Name="assemblyFileName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <param name="assemblyFileName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml
deleted file mode 100644 (file)
index 834ddca..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<Type Name="ISymbolWriter" FullName="Mono.Cecil.Cil.ISymbolWriter">
-  <TypeSignature Language="C#" Value="public interface ISymbolWriter : IDisposable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.IDisposable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public void Write (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml
deleted file mode 100644 (file)
index 24fe7db..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IVariableDefinitionProvider" FullName="Mono.Cecil.Cil.IVariableDefinitionProvider">
-  <TypeSignature Language="C#" Value="public interface IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml
deleted file mode 100644 (file)
index f56cc9f..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-<Type Name="Instruction" FullName="Mono.Cecil.Cil.Instruction">
-  <TypeSignature Language="C#" Value="public sealed class Instruction : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSize">
-      <MemberSignature Language="C#" Value="public int GetSize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Next">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Next { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public int Offset { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OpCode">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OpCode OpCode { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Operand">
-      <MemberSignature Language="C#" Value="public object Operand { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Previous">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Previous { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SequencePoint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.SequencePoint SequencePoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.SequencePoint</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml
deleted file mode 100644 (file)
index 1096dd8..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-<Type Name="InstructionCollection" FullName="Mono.Cecil.Cil.InstructionCollection">
-  <TypeSignature Language="C#" Value="public sealed class InstructionCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public InstructionCollection (Mono.Cecil.Cil.MethodBody container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.Instruction value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.Instruction value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Outside">
-      <MemberSignature Language="C#" Value="public readonly Mono.Cecil.Cil.Instruction Outside;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml
deleted file mode 100644 (file)
index c86f954..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-<Type Name="MethodBody" FullName="Mono.Cecil.Cil.MethodBody">
-  <TypeSignature Language="C#" Value="public sealed class MethodBody : Mono.Cecil.Cil.ICodeVisitable, Mono.Cecil.Cil.IScopeProvider, Mono.Cecil.Cil.IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IScopeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IVariableDefinitionProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodBody (Mono.Cecil.MethodDefinition meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CilWorker">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.CilWorker CilWorker { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.CilWorker</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeSize">
-      <MemberSignature Language="C#" Value="public int CodeSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExceptionHandlers">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandlerCollection ExceptionHandlers { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasExceptionHandlers">
-      <MemberSignature Language="C#" Value="public bool HasExceptionHandlers { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasScopes">
-      <MemberSignature Language="C#" Value="public bool HasScopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasVariables">
-      <MemberSignature Language="C#" Value="public bool HasVariables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitLocals">
-      <MemberSignature Language="C#" Value="public bool InitLocals { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Instructions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.InstructionCollection Instructions { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.InstructionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalVarToken">
-      <MemberSignature Language="C#" Value="public int LocalVarToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxStack">
-      <MemberSignature Language="C#" Value="public int MaxStack { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Optimize">
-      <MemberSignature Language="C#" Value="public void Optimize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Simplify">
-      <MemberSignature Language="C#" Value="public void Simplify ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml
deleted file mode 100644 (file)
index ac78b99..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<Type Name="OpCode" FullName="Mono.Cecil.Cil.OpCode">
-  <TypeSignature Language="C#" Value="public struct OpCode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Code">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Code Code { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public bool Equals (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object obj);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="obj" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="obj">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FlowControl">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.FlowControl FlowControl { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Cil.OpCode one, Mono.Cecil.Cil.OpCode other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="other" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Cil.OpCode one, Mono.Cecil.Cil.OpCode other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="other" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Op1">
-      <MemberSignature Language="C#" Value="public byte Op1 { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Op2">
-      <MemberSignature Language="C#" Value="public byte Op2 { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OpCodeType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OpCodeType OpCodeType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OperandType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OperandType OperandType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public int Size { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackBehaviourPop">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.StackBehaviour StackBehaviourPop { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackBehaviourPush">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.StackBehaviour StackBehaviourPush { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public short Value { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml
deleted file mode 100644 (file)
index 4be9f71..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<Type Name="OpCodeType" FullName="Mono.Cecil.Cil.OpCodeType">
-  <TypeSignature Language="C#" Value="public enum OpCodeType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Annotation">
-      <MemberSignature Language="C#" Value="Annotation" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Macro">
-      <MemberSignature Language="C#" Value="Macro" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Nternal">
-      <MemberSignature Language="C#" Value="Nternal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Objmodel">
-      <MemberSignature Language="C#" Value="Objmodel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Prefix">
-      <MemberSignature Language="C#" Value="Prefix" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Primitive">
-      <MemberSignature Language="C#" Value="Primitive" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml
deleted file mode 100644 (file)
index 917429b..0000000
+++ /dev/null
@@ -1,3102 +0,0 @@
-<Type Name="OpCodes" FullName="Mono.Cecil.Cil.OpCodes">
-  <TypeSignature Language="C#" Value="public sealed class OpCodes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="And">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode And;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Arglist">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Arglist;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Beq;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Beq_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bne_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bne_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Box">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Box;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Br">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Br;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Br_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Br_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Break;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brfalse;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brfalse_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brtrue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brtrue_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Call;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Calli">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Calli;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Callvirt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Callvirt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Castclass">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Castclass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ceq">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ceq;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cgt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cgt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ckfinite">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ckfinite;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Clt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Clt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constrained">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Constrained;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I1_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I2_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I4_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I8_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U1_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U2_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U4_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U8_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpblk">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cpblk;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cpobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Div">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Div;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Div_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Div_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Dup">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Dup;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfilter">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Endfilter;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfinally">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Endfinally;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOpCode">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Cil.OpCode GetOpCode (Mono.Cecil.Cil.Code code);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="code" Type="Mono.Cecil.Cil.Code" />
-      </Parameters>
-      <Docs>
-        <param name="code">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Initblk">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Initblk;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Initobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Initobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Isinst">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Isinst;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Jmp">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Jmp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarga;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarga_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_5">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_5;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_6">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_6;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_7">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_7;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_M1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_M1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelema">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelema;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldflda">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldflda;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldftn">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldftn;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldlen">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldlen;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloca;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloca_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldnull">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldnull;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldsfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsflda">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldsflda;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldstr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldstr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldtoken">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldtoken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldvirtftn">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldvirtftn;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Leave;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Leave_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Localloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Localloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mkrefany">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mkrefany;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Neg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Neg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Newarr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Newarr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Newobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Newobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="No">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode No;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Nop">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Nop;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Not">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Not;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Or">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Or;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Pop;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Readonly">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Readonly;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanytype">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Refanytype;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanyval">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Refanyval;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rem;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rem_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ret">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ret;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rethrow">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rethrow;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shl">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shl;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shr_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sizeof">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sizeof;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Starg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Starg_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stsfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stsfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Switch">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Switch;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tail">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Tail;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Throw;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unaligned">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unaligned;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unbox;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unbox_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Volatile">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Volatile;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Xor">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Xor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml
deleted file mode 100644 (file)
index a7a7b22..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-<Type Name="OperandType" FullName="Mono.Cecil.Cil.OperandType">
-  <TypeSignature Language="C#" Value="public enum OperandType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="InlineBrTarget">
-      <MemberSignature Language="C#" Value="InlineBrTarget" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineField">
-      <MemberSignature Language="C#" Value="InlineField" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineI">
-      <MemberSignature Language="C#" Value="InlineI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineI8">
-      <MemberSignature Language="C#" Value="InlineI8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineMethod">
-      <MemberSignature Language="C#" Value="InlineMethod" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineNone">
-      <MemberSignature Language="C#" Value="InlineNone" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineParam">
-      <MemberSignature Language="C#" Value="InlineParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlinePhi">
-      <MemberSignature Language="C#" Value="InlinePhi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineR">
-      <MemberSignature Language="C#" Value="InlineR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineSig">
-      <MemberSignature Language="C#" Value="InlineSig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineString">
-      <MemberSignature Language="C#" Value="InlineString" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineSwitch">
-      <MemberSignature Language="C#" Value="InlineSwitch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineTok">
-      <MemberSignature Language="C#" Value="InlineTok" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineType">
-      <MemberSignature Language="C#" Value="InlineType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineVar">
-      <MemberSignature Language="C#" Value="InlineVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineBrTarget">
-      <MemberSignature Language="C#" Value="ShortInlineBrTarget" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineI">
-      <MemberSignature Language="C#" Value="ShortInlineI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineParam">
-      <MemberSignature Language="C#" Value="ShortInlineParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineR">
-      <MemberSignature Language="C#" Value="ShortInlineR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineVar">
-      <MemberSignature Language="C#" Value="ShortInlineVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml
deleted file mode 100644 (file)
index 0c97aa9..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<Type Name="Scope" FullName="Mono.Cecil.Cil.Scope">
-  <TypeSignature Language="C#" Value="public class Scope : Mono.Cecil.Cil.ICodeVisitable, Mono.Cecil.Cil.IScopeProvider, Mono.Cecil.Cil.IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IScopeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IVariableDefinitionProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public Scope ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction End { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Scope Parent { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Scope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Start">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Start { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml
deleted file mode 100644 (file)
index 14df934..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ScopeCollection" FullName="Mono.Cecil.Cil.ScopeCollection">
-  <TypeSignature Language="C#" Value="public sealed class ScopeCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ScopeCollection (Mono.Cecil.Cil.IScopeProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.IScopeProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.IScopeProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.IScopeProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Scope this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Scope</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml
deleted file mode 100644 (file)
index 8bf7ad7..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<Type Name="SequencePoint" FullName="Mono.Cecil.Cil.SequencePoint">
-  <TypeSignature Language="C#" Value="public class SequencePoint" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SequencePoint (Mono.Cecil.Cil.Document document);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="document" Type="Mono.Cecil.Cil.Document" />
-      </Parameters>
-      <Docs>
-        <param name="document">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SequencePoint (Mono.Cecil.Cil.Document doc, int startLine, int startCol, int endLine, int endCol);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="doc" Type="Mono.Cecil.Cil.Document" />
-        <Parameter Name="startLine" Type="System.Int32" />
-        <Parameter Name="startCol" Type="System.Int32" />
-        <Parameter Name="endLine" Type="System.Int32" />
-        <Parameter Name="endCol" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="doc">To be added.</param>
-        <param name="startLine">To be added.</param>
-        <param name="startCol">To be added.</param>
-        <param name="endLine">To be added.</param>
-        <param name="endCol">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Document">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Document Document { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Document</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EndColumn">
-      <MemberSignature Language="C#" Value="public int EndColumn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EndLine">
-      <MemberSignature Language="C#" Value="public int EndLine { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StartColumn">
-      <MemberSignature Language="C#" Value="public int StartColumn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StartLine">
-      <MemberSignature Language="C#" Value="public int StartLine { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml
deleted file mode 100644 (file)
index 2e97a73..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-<Type Name="StackBehaviour" FullName="Mono.Cecil.Cil.StackBehaviour">
-  <TypeSignature Language="C#" Value="public enum StackBehaviour" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Pop0">
-      <MemberSignature Language="C#" Value="Pop0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop1">
-      <MemberSignature Language="C#" Value="Pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop1_pop1">
-      <MemberSignature Language="C#" Value="Pop1_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PopAll">
-      <MemberSignature Language="C#" Value="PopAll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi">
-      <MemberSignature Language="C#" Value="Popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_pop1">
-      <MemberSignature Language="C#" Value="Popi_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi">
-      <MemberSignature Language="C#" Value="Popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi_popi">
-      <MemberSignature Language="C#" Value="Popi_popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi8">
-      <MemberSignature Language="C#" Value="Popi_popi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popr4">
-      <MemberSignature Language="C#" Value="Popi_popr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popr8">
-      <MemberSignature Language="C#" Value="Popi_popr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref">
-      <MemberSignature Language="C#" Value="Popref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_pop1">
-      <MemberSignature Language="C#" Value="Popref_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi">
-      <MemberSignature Language="C#" Value="Popref_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popi">
-      <MemberSignature Language="C#" Value="Popref_popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popi8">
-      <MemberSignature Language="C#" Value="Popref_popi_popi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popr4">
-      <MemberSignature Language="C#" Value="Popref_popi_popr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popr8">
-      <MemberSignature Language="C#" Value="Popref_popi_popr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popref">
-      <MemberSignature Language="C#" Value="Popref_popi_popref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push0">
-      <MemberSignature Language="C#" Value="Push0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push1">
-      <MemberSignature Language="C#" Value="Push1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push1_push1">
-      <MemberSignature Language="C#" Value="Push1_push1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushi">
-      <MemberSignature Language="C#" Value="Pushi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushi8">
-      <MemberSignature Language="C#" Value="Pushi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushr4">
-      <MemberSignature Language="C#" Value="Pushr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushr8">
-      <MemberSignature Language="C#" Value="Pushr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushref">
-      <MemberSignature Language="C#" Value="Pushref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Varpop">
-      <MemberSignature Language="C#" Value="Varpop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Varpush">
-      <MemberSignature Language="C#" Value="Varpush" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml
deleted file mode 100644 (file)
index 260732f..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<Type Name="VariableDefinition" FullName="Mono.Cecil.Cil.VariableDefinition">
-  <TypeSignature Language="C#" Value="public sealed class VariableDefinition : Mono.Cecil.Cil.VariableReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Cil.VariableReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinition (Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinition (string name, int index, Mono.Cecil.MethodDefinition method, Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="index">To be added.</param>
-        <param name="method">To be added.</param>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.Cil.VariableDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml
deleted file mode 100644 (file)
index 718a3da..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="VariableDefinitionCollection" FullName="Mono.Cecil.Cil.VariableDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class VariableDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinitionCollection (Mono.Cecil.Cil.IVariableDefinitionProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.IVariableDefinitionProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.IVariableDefinitionProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.IVariableDefinitionProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml
deleted file mode 100644 (file)
index 7b972cb..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-<Type Name="VariableReference" FullName="Mono.Cecil.Cil.VariableReference">
-  <TypeSignature Language="C#" Value="public abstract class VariableReference : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableReference (Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableReference (string name, int index, Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="index">To be added.</param>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Index">
-      <MemberSignature Language="C#" Value="public int Index { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.Cil.VariableDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VariableType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference VariableType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml
deleted file mode 100644 (file)
index 4a7d0db..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="AssemblyOSRow" FullName="Mono.Cecil.Metadata.AssemblyOSRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyOSRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSPlatformID">
-      <MemberSignature Language="C#" Value="public uint OSPlatformID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml
deleted file mode 100644 (file)
index 0b68272..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyOSTable" FullName="Mono.Cecil.Metadata.AssemblyOSTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyOSTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyOSRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyOSRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 34;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>34</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml
deleted file mode 100644 (file)
index 4c37b9a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="AssemblyProcessorRow" FullName="Mono.Cecil.Metadata.AssemblyProcessorRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyProcessorRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Processor">
-      <MemberSignature Language="C#" Value="public uint Processor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml
deleted file mode 100644 (file)
index ee0377a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyProcessorTable" FullName="Mono.Cecil.Metadata.AssemblyProcessorTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyProcessorTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyProcessorRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyProcessorRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 33;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>33</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml
deleted file mode 100644 (file)
index 077d2bf..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="AssemblyRefOSRow" FullName="Mono.Cecil.Metadata.AssemblyRefOSRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefOSRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="public uint AssemblyRef;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSPlatformID">
-      <MemberSignature Language="C#" Value="public uint OSPlatformID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml
deleted file mode 100644 (file)
index 208c043..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefOSTable" FullName="Mono.Cecil.Metadata.AssemblyRefOSTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefOSTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefOSRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefOSRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 37;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>37</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml
deleted file mode 100644 (file)
index 829222e..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="AssemblyRefProcessorRow" FullName="Mono.Cecil.Metadata.AssemblyRefProcessorRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefProcessorRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="public uint AssemblyRef;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Processor">
-      <MemberSignature Language="C#" Value="public uint Processor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml
deleted file mode 100644 (file)
index efad89b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefProcessorTable" FullName="Mono.Cecil.Metadata.AssemblyRefProcessorTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefProcessorTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefProcessorRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefProcessorRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 36;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>36</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml
deleted file mode 100644 (file)
index 0d94466..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-<Type Name="AssemblyRefRow" FullName="Mono.Cecil.Metadata.AssemblyRefRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BuildNumber">
-      <MemberSignature Language="C#" Value="public ushort BuildNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public uint Culture;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashValue">
-      <MemberSignature Language="C#" Value="public uint HashValue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKeyOrToken">
-      <MemberSignature Language="C#" Value="public uint PublicKeyOrToken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RevisionNumber">
-      <MemberSignature Language="C#" Value="public ushort RevisionNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml
deleted file mode 100644 (file)
index 8e020ea..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefTable" FullName="Mono.Cecil.Metadata.AssemblyRefTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 35;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>35</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml
deleted file mode 100644 (file)
index 7c8903d..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-<Type Name="AssemblyRow" FullName="Mono.Cecil.Metadata.AssemblyRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BuildNumber">
-      <MemberSignature Language="C#" Value="public ushort BuildNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public uint Culture;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgId">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyHashAlgorithm HashAlgId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="public uint PublicKey;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RevisionNumber">
-      <MemberSignature Language="C#" Value="public ushort RevisionNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml
deleted file mode 100644 (file)
index c016439..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyTable" FullName="Mono.Cecil.Metadata.AssemblyTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>32</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml
deleted file mode 100644 (file)
index 4202fa5..0000000
+++ /dev/null
@@ -1,843 +0,0 @@
-<Type Name="BaseMetadataRowVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataRowVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataRowVisitor : Mono.Cecil.Metadata.IMetadataRowVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataRowVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateRowCollection">
-      <MemberSignature Language="C#" Value="public virtual void TerminateRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyOSRow (Mono.Cecil.Metadata.AssemblyOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyProcessorRow (Mono.Cecil.Metadata.AssemblyProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefOSRow (Mono.Cecil.Metadata.AssemblyRefOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefProcessorRow (Mono.Cecil.Metadata.AssemblyRefProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefRow (Mono.Cecil.Metadata.AssemblyRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRow (Mono.Cecil.Metadata.AssemblyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitClassLayoutRow (Mono.Cecil.Metadata.ClassLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ClassLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstantRow (Mono.Cecil.Metadata.ConstantRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ConstantRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeRow (Mono.Cecil.Metadata.CustomAttributeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.CustomAttributeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitDeclSecurityRow (Mono.Cecil.Metadata.DeclSecurityRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.DeclSecurityRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventMapRow (Mono.Cecil.Metadata.EventMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventPtrRow (Mono.Cecil.Metadata.EventPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventRow (Mono.Cecil.Metadata.EventRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportedTypeRow (Mono.Cecil.Metadata.ExportedTypeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ExportedTypeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldLayoutRow (Mono.Cecil.Metadata.FieldLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldMarshalRow (Mono.Cecil.Metadata.FieldMarshalRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldMarshalRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldPtrRow (Mono.Cecil.Metadata.FieldPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRow (Mono.Cecil.Metadata.FieldRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVARow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRVARow (Mono.Cecil.Metadata.FieldRVARow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRVARow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFileRow (Mono.Cecil.Metadata.FileRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FileRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamConstraintRow (Mono.Cecil.Metadata.GenericParamConstraintRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamConstraintRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamRow (Mono.Cecil.Metadata.GenericParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitImplMapRow (Mono.Cecil.Metadata.ImplMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ImplMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceImplRow (Mono.Cecil.Metadata.InterfaceImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.InterfaceImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitManifestResourceRow (Mono.Cecil.Metadata.ManifestResourceRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ManifestResourceRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberRefRow (Mono.Cecil.Metadata.MemberRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MemberRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodImplRow (Mono.Cecil.Metadata.MethodImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodPtrRow (Mono.Cecil.Metadata.MethodPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodRow (Mono.Cecil.Metadata.MethodRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSemanticsRow (Mono.Cecil.Metadata.MethodSemanticsRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSemanticsRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSpecRow (Mono.Cecil.Metadata.MethodSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRefRow (Mono.Cecil.Metadata.ModuleRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRow (Mono.Cecil.Metadata.ModuleRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedClassRow (Mono.Cecil.Metadata.NestedClassRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.NestedClassRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamPtrRow (Mono.Cecil.Metadata.ParamPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamRow (Mono.Cecil.Metadata.ParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyMapRow (Mono.Cecil.Metadata.PropertyMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyPtrRow (Mono.Cecil.Metadata.PropertyPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyRow (Mono.Cecil.Metadata.PropertyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitRowCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandAloneSigRow (Mono.Cecil.Metadata.StandAloneSigRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.StandAloneSigRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefRow (Mono.Cecil.Metadata.TypeDefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeDefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeRefRow (Mono.Cecil.Metadata.TypeRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeSpecRow (Mono.Cecil.Metadata.TypeSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml
deleted file mode 100644 (file)
index 32f511c..0000000
+++ /dev/null
@@ -1,859 +0,0 @@
-<Type Name="BaseMetadataTableVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataTableVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataTableVisitor : Mono.Cecil.Metadata.IMetadataTableVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataTableVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetRowVisitor">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.Metadata.IMetadataRowVisitor GetRowVisitor ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRowVisitor</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateTableCollection">
-      <MemberSignature Language="C#" Value="public virtual void TerminateTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyOSTable (Mono.Cecil.Metadata.AssemblyOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyProcessorTable (Mono.Cecil.Metadata.AssemblyProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefOSTable (Mono.Cecil.Metadata.AssemblyRefOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefProcessorTable (Mono.Cecil.Metadata.AssemblyRefProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefTable (Mono.Cecil.Metadata.AssemblyRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyTable (Mono.Cecil.Metadata.AssemblyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitClassLayoutTable (Mono.Cecil.Metadata.ClassLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ClassLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstantTable (Mono.Cecil.Metadata.ConstantTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ConstantTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeTable (Mono.Cecil.Metadata.CustomAttributeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.CustomAttributeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitDeclSecurityTable (Mono.Cecil.Metadata.DeclSecurityTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.DeclSecurityTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventMapTable (Mono.Cecil.Metadata.EventMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventPtrTable (Mono.Cecil.Metadata.EventPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventTable (Mono.Cecil.Metadata.EventTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportedTypeTable (Mono.Cecil.Metadata.ExportedTypeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ExportedTypeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldLayoutTable (Mono.Cecil.Metadata.FieldLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldMarshalTable (Mono.Cecil.Metadata.FieldMarshalTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldMarshalTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldPtrTable (Mono.Cecil.Metadata.FieldPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVATable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRVATable (Mono.Cecil.Metadata.FieldRVATable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldRVATable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldTable (Mono.Cecil.Metadata.FieldTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFileTable (Mono.Cecil.Metadata.FileTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FileTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamConstraintTable (Mono.Cecil.Metadata.GenericParamConstraintTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamConstraintTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamTable (Mono.Cecil.Metadata.GenericParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImplMapTable (Mono.Cecil.Metadata.ImplMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ImplMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceImplTable (Mono.Cecil.Metadata.InterfaceImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.InterfaceImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitManifestResourceTable (Mono.Cecil.Metadata.ManifestResourceTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ManifestResourceTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberRefTable (Mono.Cecil.Metadata.MemberRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MemberRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodImplTable (Mono.Cecil.Metadata.MethodImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodPtrTable (Mono.Cecil.Metadata.MethodPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSemanticsTable (Mono.Cecil.Metadata.MethodSemanticsTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSemanticsTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSpecTable (Mono.Cecil.Metadata.MethodSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodTable (Mono.Cecil.Metadata.MethodTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRefTable (Mono.Cecil.Metadata.ModuleRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleTable (Mono.Cecil.Metadata.ModuleTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedClassTable (Mono.Cecil.Metadata.NestedClassTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.NestedClassTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamPtrTable (Mono.Cecil.Metadata.ParamPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamTable (Mono.Cecil.Metadata.ParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyMapTable (Mono.Cecil.Metadata.PropertyMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyPtrTable (Mono.Cecil.Metadata.PropertyPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyTable (Mono.Cecil.Metadata.PropertyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandAloneSigTable (Mono.Cecil.Metadata.StandAloneSigTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.StandAloneSigTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTableCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefTable (Mono.Cecil.Metadata.TypeDefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeDefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeRefTable (Mono.Cecil.Metadata.TypeRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeSpecTable (Mono.Cecil.Metadata.TypeSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml
deleted file mode 100644 (file)
index 97f0740..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-<Type Name="BaseMetadataVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataVisitor : Mono.Cecil.Metadata.IMetadataVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateMetadataRoot">
-      <MemberSignature Language="C#" Value="public virtual void TerminateMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitBlobHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitBlobHeap (Mono.Cecil.Metadata.BlobHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.BlobHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGuidHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitGuidHeap (Mono.Cecil.Metadata.GuidHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.GuidHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRoot">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRootHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataRootHeader (Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStream">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStream (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStreamCollection (Mono.Cecil.Metadata.MetadataStreamCollection streams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="streams" Type="Mono.Cecil.Metadata.MetadataStreamCollection" />
-      </Parameters>
-      <Docs>
-        <param name="streams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStreamHeader (Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStringsHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitStringsHeap (Mono.Cecil.Metadata.StringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.StringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTablesHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitTablesHeap (Mono.Cecil.Metadata.TablesHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.TablesHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitUserStringsHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitUserStringsHeap (Mono.Cecil.Metadata.UserStringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.UserStringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml
deleted file mode 100644 (file)
index 7e17c1b..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="BlobHeap" FullName="Mono.Cecil.Metadata.BlobHeap">
-  <TypeSignature Language="C#" Value="public class BlobHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetReader">
-      <MemberSignature Language="C#" Value="public System.IO.BinaryReader GetReader (uint index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.BinaryReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public byte[] Read (uint index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml
deleted file mode 100644 (file)
index f382c29..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ClassLayoutRow" FullName="Mono.Cecil.Metadata.ClassLayoutRow">
-  <TypeSignature Language="C#" Value="public sealed class ClassLayoutRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSize">
-      <MemberSignature Language="C#" Value="public uint ClassSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PackingSize">
-      <MemberSignature Language="C#" Value="public ushort PackingSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml
deleted file mode 100644 (file)
index 8e421ab..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ClassLayoutTable" FullName="Mono.Cecil.Metadata.ClassLayoutTable">
-  <TypeSignature Language="C#" Value="public sealed class ClassLayoutTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ClassLayoutRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ClassLayoutRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 15;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>15</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml
deleted file mode 100644 (file)
index 5b029e8..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-<Type Name="CodedIndex" FullName="Mono.Cecil.Metadata.CodedIndex">
-  <TypeSignature Language="C#" Value="public enum CodedIndex" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CustomAttributeType">
-      <MemberSignature Language="C#" Value="CustomAttributeType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="HasConstant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttribute">
-      <MemberSignature Language="C#" Value="HasCustomAttribute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDeclSecurity">
-      <MemberSignature Language="C#" Value="HasDeclSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSemantics">
-      <MemberSignature Language="C#" Value="HasSemantics" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="Implementation" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberForwarded">
-      <MemberSignature Language="C#" Value="MemberForwarded" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberRefParent">
-      <MemberSignature Language="C#" Value="MemberRefParent" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodDefOrRef">
-      <MemberSignature Language="C#" Value="MethodDefOrRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolutionScope">
-      <MemberSignature Language="C#" Value="ResolutionScope" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDefOrRef">
-      <MemberSignature Language="C#" Value="TypeDefOrRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeOrMethodDef">
-      <MemberSignature Language="C#" Value="TypeOrMethodDef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml
deleted file mode 100644 (file)
index 391ee34..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ConstantRow" FullName="Mono.Cecil.Metadata.ConstantRow">
-  <TypeSignature Language="C#" Value="public sealed class ConstantRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ElementType Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml
deleted file mode 100644 (file)
index 5ee87aa..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ConstantTable" FullName="Mono.Cecil.Metadata.ConstantTable">
-  <TypeSignature Language="C#" Value="public sealed class ConstantTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ConstantRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ConstantRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 11;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>11</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml
deleted file mode 100644 (file)
index b5b36c9..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="CustomAttributeRow" FullName="Mono.Cecil.Metadata.CustomAttributeRow">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml
deleted file mode 100644 (file)
index 6b3dc48..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="CustomAttributeTable" FullName="Mono.Cecil.Metadata.CustomAttributeTable">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.CustomAttributeRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CustomAttributeRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 12;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>12</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml
deleted file mode 100644 (file)
index 2d7f6c0..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="DeclSecurityRow" FullName="Mono.Cecil.Metadata.DeclSecurityRow">
-  <TypeSignature Language="C#" Value="public sealed class DeclSecurityRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Action">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityAction Action;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PermissionSet">
-      <MemberSignature Language="C#" Value="public uint PermissionSet;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml
deleted file mode 100644 (file)
index 2b0e6c4..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="DeclSecurityTable" FullName="Mono.Cecil.Metadata.DeclSecurityTable">
-  <TypeSignature Language="C#" Value="public sealed class DeclSecurityTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.DeclSecurityRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.DeclSecurityRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 14;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>14</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml
deleted file mode 100644 (file)
index b6f60c4..0000000
+++ /dev/null
@@ -1,510 +0,0 @@
-<Type Name="ElementType" FullName="Mono.Cecil.Metadata.ElementType">
-  <TypeSignature Language="C#" Value="public enum ElementType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Array">
-      <MemberSignature Language="C#" Value="Array" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Boolean">
-      <MemberSignature Language="C#" Value="Boolean" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Boxed">
-      <MemberSignature Language="C#" Value="Boxed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ByRef">
-      <MemberSignature Language="C#" Value="ByRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Char">
-      <MemberSignature Language="C#" Value="Char" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="Class" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CModOpt">
-      <MemberSignature Language="C#" Value="CModOpt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CModReqD">
-      <MemberSignature Language="C#" Value="CModReqD" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="End" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Enum">
-      <MemberSignature Language="C#" Value="Enum" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FnPtr">
-      <MemberSignature Language="C#" Value="FnPtr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericInst">
-      <MemberSignature Language="C#" Value="GenericInst" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I">
-      <MemberSignature Language="C#" Value="I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I8">
-      <MemberSignature Language="C#" Value="I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Internal">
-      <MemberSignature Language="C#" Value="Internal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Modifier">
-      <MemberSignature Language="C#" Value="Modifier" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MVar">
-      <MemberSignature Language="C#" Value="MVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Object">
-      <MemberSignature Language="C#" Value="Object" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pinned">
-      <MemberSignature Language="C#" Value="Pinned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ptr">
-      <MemberSignature Language="C#" Value="Ptr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sentinel">
-      <MemberSignature Language="C#" Value="Sentinel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="String" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SzArray">
-      <MemberSignature Language="C#" Value="SzArray" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="Type" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypedByRef">
-      <MemberSignature Language="C#" Value="TypedByRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U">
-      <MemberSignature Language="C#" Value="U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U1">
-      <MemberSignature Language="C#" Value="U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U2">
-      <MemberSignature Language="C#" Value="U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U4">
-      <MemberSignature Language="C#" Value="U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U8">
-      <MemberSignature Language="C#" Value="U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ValueType">
-      <MemberSignature Language="C#" Value="ValueType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Var">
-      <MemberSignature Language="C#" Value="Var" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Void">
-      <MemberSignature Language="C#" Value="Void" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml
deleted file mode 100644 (file)
index 2680300..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="EventMapRow" FullName="Mono.Cecil.Metadata.EventMapRow">
-  <TypeSignature Language="C#" Value="public sealed class EventMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventList">
-      <MemberSignature Language="C#" Value="public uint EventList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml
deleted file mode 100644 (file)
index 012db89..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventMapTable" FullName="Mono.Cecil.Metadata.EventMapTable">
-  <TypeSignature Language="C#" Value="public sealed class EventMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 18;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>18</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml
deleted file mode 100644 (file)
index 11fe3c8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="EventPtrRow" FullName="Mono.Cecil.Metadata.EventPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class EventPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Event">
-      <MemberSignature Language="C#" Value="public uint Event;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml
deleted file mode 100644 (file)
index 939b9e6..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventPtrTable" FullName="Mono.Cecil.Metadata.EventPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class EventPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 19;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>19</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml
deleted file mode 100644 (file)
index 4d79666..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="EventRow" FullName="Mono.Cecil.Metadata.EventRow">
-  <TypeSignature Language="C#" Value="public sealed class EventRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventAttributes EventFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken EventType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml
deleted file mode 100644 (file)
index 85169c5..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventTable" FullName="Mono.Cecil.Metadata.EventTable">
-  <TypeSignature Language="C#" Value="public sealed class EventTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 20;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>20</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml
deleted file mode 100644 (file)
index 2ed7c03..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ExportedTypeRow" FullName="Mono.Cecil.Metadata.ExportedTypeRow">
-  <TypeSignature Language="C#" Value="public sealed class ExportedTypeRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Implementation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDefId">
-      <MemberSignature Language="C#" Value="public uint TypeDefId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeName">
-      <MemberSignature Language="C#" Value="public uint TypeName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeNamespace">
-      <MemberSignature Language="C#" Value="public uint TypeNamespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml
deleted file mode 100644 (file)
index 0cd81f0..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ExportedTypeTable" FullName="Mono.Cecil.Metadata.ExportedTypeTable">
-  <TypeSignature Language="C#" Value="public sealed class ExportedTypeTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ExportedTypeRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ExportedTypeRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 39;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>39</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml
deleted file mode 100644 (file)
index e414b52..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldLayoutRow" FullName="Mono.Cecil.Metadata.FieldLayoutRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldLayoutRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml
deleted file mode 100644 (file)
index 9893e91..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldLayoutTable" FullName="Mono.Cecil.Metadata.FieldLayoutTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldLayoutTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldLayoutRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldLayoutRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>16</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml
deleted file mode 100644 (file)
index 3e524e0..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldMarshalRow" FullName="Mono.Cecil.Metadata.FieldMarshalRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldMarshalRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NativeType">
-      <MemberSignature Language="C#" Value="public uint NativeType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml
deleted file mode 100644 (file)
index 7284238..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldMarshalTable" FullName="Mono.Cecil.Metadata.FieldMarshalTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldMarshalTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldMarshalRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldMarshalRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 13;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>13</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml
deleted file mode 100644 (file)
index 94ebc21..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="FieldPtrRow" FullName="Mono.Cecil.Metadata.FieldPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml
deleted file mode 100644 (file)
index 586c354..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldPtrTable" FullName="Mono.Cecil.Metadata.FieldPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>3</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml
deleted file mode 100644 (file)
index 0a3e096..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldRVARow" FullName="Mono.Cecil.Metadata.FieldRVARow">
-  <TypeSignature Language="C#" Value="public sealed class FieldRVARow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml
deleted file mode 100644 (file)
index e136cdb..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldRVATable" FullName="Mono.Cecil.Metadata.FieldRVATable">
-  <TypeSignature Language="C#" Value="public sealed class FieldRVATable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldRVARow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldRVARow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 29;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>29</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml
deleted file mode 100644 (file)
index 2a2a97f..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FieldRow" FullName="Mono.Cecil.Metadata.FieldRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml
deleted file mode 100644 (file)
index 72f094b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldTable" FullName="Mono.Cecil.Metadata.FieldTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>4</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml
deleted file mode 100644 (file)
index 15b6daf..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FileRow" FullName="Mono.Cecil.Metadata.FileRow">
-  <TypeSignature Language="C#" Value="public sealed class FileRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FileAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashValue">
-      <MemberSignature Language="C#" Value="public uint HashValue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml
deleted file mode 100644 (file)
index c200834..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FileTable" FullName="Mono.Cecil.Metadata.FileTable">
-  <TypeSignature Language="C#" Value="public sealed class FileTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FileRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FileRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 38;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>38</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml
deleted file mode 100644 (file)
index db32c23..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="GenericParamConstraintRow" FullName="Mono.Cecil.Metadata.GenericParamConstraintRow">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamConstraintRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constraint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Constraint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public uint Owner;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml
deleted file mode 100644 (file)
index bac4ab3..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="GenericParamConstraintTable" FullName="Mono.Cecil.Metadata.GenericParamConstraintTable">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamConstraintTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GenericParamConstraintRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GenericParamConstraintRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 44;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>44</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml
deleted file mode 100644 (file)
index 558c5f7..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="GenericParamRow" FullName="Mono.Cecil.Metadata.GenericParamRow">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Number">
-      <MemberSignature Language="C#" Value="public ushort Number;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Owner;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml
deleted file mode 100644 (file)
index fe459e2..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="GenericParamTable" FullName="Mono.Cecil.Metadata.GenericParamTable">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GenericParamRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GenericParamRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 42;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>42</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml
deleted file mode 100644 (file)
index 2158828..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<Type Name="GuidHeap" FullName="Mono.Cecil.Metadata.GuidHeap">
-  <TypeSignature Language="C#" Value="public class GuidHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GuidHeap (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guids">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Guids { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Guid this[uint index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml
deleted file mode 100644 (file)
index 68e60f2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<Type Name="IMetadataRow" FullName="Mono.Cecil.Metadata.IMetadataRow">
-  <TypeSignature Language="C#" Value="public interface IMetadataRow : Mono.Cecil.Metadata.IMetadataRowVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml
deleted file mode 100644 (file)
index c46e072..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataRowVisitable" FullName="Mono.Cecil.Metadata.IMetadataRowVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataRowVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml
deleted file mode 100644 (file)
index 701c534..0000000
+++ /dev/null
@@ -1,824 +0,0 @@
-<Type Name="IMetadataRowVisitor" FullName="Mono.Cecil.Metadata.IMetadataRowVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataRowVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateRowCollection">
-      <MemberSignature Language="C#" Value="public void TerminateRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyOSRow (Mono.Cecil.Metadata.AssemblyOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyProcessorRow (Mono.Cecil.Metadata.AssemblyProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefOSRow (Mono.Cecil.Metadata.AssemblyRefOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefProcessorRow (Mono.Cecil.Metadata.AssemblyRefProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefRow (Mono.Cecil.Metadata.AssemblyRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRow (Mono.Cecil.Metadata.AssemblyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutRow">
-      <MemberSignature Language="C#" Value="public void VisitClassLayoutRow (Mono.Cecil.Metadata.ClassLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ClassLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantRow">
-      <MemberSignature Language="C#" Value="public void VisitConstantRow (Mono.Cecil.Metadata.ConstantRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ConstantRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeRow">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeRow (Mono.Cecil.Metadata.CustomAttributeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.CustomAttributeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityRow">
-      <MemberSignature Language="C#" Value="public void VisitDeclSecurityRow (Mono.Cecil.Metadata.DeclSecurityRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.DeclSecurityRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapRow">
-      <MemberSignature Language="C#" Value="public void VisitEventMapRow (Mono.Cecil.Metadata.EventMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitEventPtrRow (Mono.Cecil.Metadata.EventPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventRow">
-      <MemberSignature Language="C#" Value="public void VisitEventRow (Mono.Cecil.Metadata.EventRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeRow">
-      <MemberSignature Language="C#" Value="public void VisitExportedTypeRow (Mono.Cecil.Metadata.ExportedTypeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ExportedTypeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldLayoutRow (Mono.Cecil.Metadata.FieldLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldMarshalRow (Mono.Cecil.Metadata.FieldMarshalRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldMarshalRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldPtrRow (Mono.Cecil.Metadata.FieldPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldRow (Mono.Cecil.Metadata.FieldRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVARow">
-      <MemberSignature Language="C#" Value="public void VisitFieldRVARow (Mono.Cecil.Metadata.FieldRVARow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRVARow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileRow">
-      <MemberSignature Language="C#" Value="public void VisitFileRow (Mono.Cecil.Metadata.FileRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FileRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintRow">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamConstraintRow (Mono.Cecil.Metadata.GenericParamConstraintRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamConstraintRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamRow">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamRow (Mono.Cecil.Metadata.GenericParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapRow">
-      <MemberSignature Language="C#" Value="public void VisitImplMapRow (Mono.Cecil.Metadata.ImplMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ImplMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplRow">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceImplRow (Mono.Cecil.Metadata.InterfaceImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.InterfaceImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceRow">
-      <MemberSignature Language="C#" Value="public void VisitManifestResourceRow (Mono.Cecil.Metadata.ManifestResourceRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ManifestResourceRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefRow">
-      <MemberSignature Language="C#" Value="public void VisitMemberRefRow (Mono.Cecil.Metadata.MemberRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MemberRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodImplRow (Mono.Cecil.Metadata.MethodImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodPtrRow (Mono.Cecil.Metadata.MethodPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodRow (Mono.Cecil.Metadata.MethodRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodSemanticsRow (Mono.Cecil.Metadata.MethodSemanticsRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSemanticsRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodSpecRow (Mono.Cecil.Metadata.MethodSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefRow">
-      <MemberSignature Language="C#" Value="public void VisitModuleRefRow (Mono.Cecil.Metadata.ModuleRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRow">
-      <MemberSignature Language="C#" Value="public void VisitModuleRow (Mono.Cecil.Metadata.ModuleRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassRow">
-      <MemberSignature Language="C#" Value="public void VisitNestedClassRow (Mono.Cecil.Metadata.NestedClassRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.NestedClassRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitParamPtrRow (Mono.Cecil.Metadata.ParamPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamRow">
-      <MemberSignature Language="C#" Value="public void VisitParamRow (Mono.Cecil.Metadata.ParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyMapRow (Mono.Cecil.Metadata.PropertyMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyPtrRow (Mono.Cecil.Metadata.PropertyPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyRow (Mono.Cecil.Metadata.PropertyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitRowCollection">
-      <MemberSignature Language="C#" Value="public void VisitRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigRow">
-      <MemberSignature Language="C#" Value="public void VisitStandAloneSigRow (Mono.Cecil.Metadata.StandAloneSigRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.StandAloneSigRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefRow (Mono.Cecil.Metadata.TypeDefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeDefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeRefRow (Mono.Cecil.Metadata.TypeRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeSpecRow (Mono.Cecil.Metadata.TypeSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml
deleted file mode 100644 (file)
index 74137ce..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IMetadataTable" FullName="Mono.Cecil.Metadata.IMetadataTable">
-  <TypeSignature Language="C#" Value="public interface IMetadataTable : Mono.Cecil.Metadata.IMetadataTableVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml
deleted file mode 100644 (file)
index 9e848f4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataTableVisitable" FullName="Mono.Cecil.Metadata.IMetadataTableVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataTableVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml
deleted file mode 100644 (file)
index 8ae7c03..0000000
+++ /dev/null
@@ -1,840 +0,0 @@
-<Type Name="IMetadataTableVisitor" FullName="Mono.Cecil.Metadata.IMetadataTableVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataTableVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GetRowVisitor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataRowVisitor GetRowVisitor ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRowVisitor</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateTableCollection">
-      <MemberSignature Language="C#" Value="public void TerminateTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyOSTable (Mono.Cecil.Metadata.AssemblyOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyProcessorTable (Mono.Cecil.Metadata.AssemblyProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefOSTable (Mono.Cecil.Metadata.AssemblyRefOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefProcessorTable (Mono.Cecil.Metadata.AssemblyRefProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefTable (Mono.Cecil.Metadata.AssemblyRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyTable (Mono.Cecil.Metadata.AssemblyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutTable">
-      <MemberSignature Language="C#" Value="public void VisitClassLayoutTable (Mono.Cecil.Metadata.ClassLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ClassLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantTable">
-      <MemberSignature Language="C#" Value="public void VisitConstantTable (Mono.Cecil.Metadata.ConstantTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ConstantTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeTable">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeTable (Mono.Cecil.Metadata.CustomAttributeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.CustomAttributeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityTable">
-      <MemberSignature Language="C#" Value="public void VisitDeclSecurityTable (Mono.Cecil.Metadata.DeclSecurityTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.DeclSecurityTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapTable">
-      <MemberSignature Language="C#" Value="public void VisitEventMapTable (Mono.Cecil.Metadata.EventMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitEventPtrTable (Mono.Cecil.Metadata.EventPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventTable">
-      <MemberSignature Language="C#" Value="public void VisitEventTable (Mono.Cecil.Metadata.EventTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeTable">
-      <MemberSignature Language="C#" Value="public void VisitExportedTypeTable (Mono.Cecil.Metadata.ExportedTypeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ExportedTypeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldLayoutTable (Mono.Cecil.Metadata.FieldLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldMarshalTable (Mono.Cecil.Metadata.FieldMarshalTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldMarshalTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldPtrTable (Mono.Cecil.Metadata.FieldPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVATable">
-      <MemberSignature Language="C#" Value="public void VisitFieldRVATable (Mono.Cecil.Metadata.FieldRVATable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldRVATable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldTable (Mono.Cecil.Metadata.FieldTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileTable">
-      <MemberSignature Language="C#" Value="public void VisitFileTable (Mono.Cecil.Metadata.FileTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FileTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintTable">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamConstraintTable (Mono.Cecil.Metadata.GenericParamConstraintTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamConstraintTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamTable">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamTable (Mono.Cecil.Metadata.GenericParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapTable">
-      <MemberSignature Language="C#" Value="public void VisitImplMapTable (Mono.Cecil.Metadata.ImplMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ImplMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplTable">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceImplTable (Mono.Cecil.Metadata.InterfaceImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.InterfaceImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceTable">
-      <MemberSignature Language="C#" Value="public void VisitManifestResourceTable (Mono.Cecil.Metadata.ManifestResourceTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ManifestResourceTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefTable">
-      <MemberSignature Language="C#" Value="public void VisitMemberRefTable (Mono.Cecil.Metadata.MemberRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MemberRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodImplTable (Mono.Cecil.Metadata.MethodImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodPtrTable (Mono.Cecil.Metadata.MethodPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodSemanticsTable (Mono.Cecil.Metadata.MethodSemanticsTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSemanticsTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodSpecTable (Mono.Cecil.Metadata.MethodSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodTable (Mono.Cecil.Metadata.MethodTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefTable">
-      <MemberSignature Language="C#" Value="public void VisitModuleRefTable (Mono.Cecil.Metadata.ModuleRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleTable">
-      <MemberSignature Language="C#" Value="public void VisitModuleTable (Mono.Cecil.Metadata.ModuleTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassTable">
-      <MemberSignature Language="C#" Value="public void VisitNestedClassTable (Mono.Cecil.Metadata.NestedClassTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.NestedClassTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitParamPtrTable (Mono.Cecil.Metadata.ParamPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamTable">
-      <MemberSignature Language="C#" Value="public void VisitParamTable (Mono.Cecil.Metadata.ParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyMapTable (Mono.Cecil.Metadata.PropertyMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyPtrTable (Mono.Cecil.Metadata.PropertyPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyTable (Mono.Cecil.Metadata.PropertyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigTable">
-      <MemberSignature Language="C#" Value="public void VisitStandAloneSigTable (Mono.Cecil.Metadata.StandAloneSigTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.StandAloneSigTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTableCollection">
-      <MemberSignature Language="C#" Value="public void VisitTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefTable (Mono.Cecil.Metadata.TypeDefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeDefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeRefTable (Mono.Cecil.Metadata.TypeRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeSpecTable (Mono.Cecil.Metadata.TypeSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml
deleted file mode 100644 (file)
index d84a2f0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataVisitable" FullName="Mono.Cecil.Metadata.IMetadataVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml
deleted file mode 100644 (file)
index fe966ea..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-<Type Name="IMetadataVisitor" FullName="Mono.Cecil.Metadata.IMetadataVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateMetadataRoot">
-      <MemberSignature Language="C#" Value="public void TerminateMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitBlobHeap">
-      <MemberSignature Language="C#" Value="public void VisitBlobHeap (Mono.Cecil.Metadata.BlobHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.BlobHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGuidHeap">
-      <MemberSignature Language="C#" Value="public void VisitGuidHeap (Mono.Cecil.Metadata.GuidHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.GuidHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRoot">
-      <MemberSignature Language="C#" Value="public void VisitMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRootHeader">
-      <MemberSignature Language="C#" Value="public void VisitMetadataRootHeader (Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStream">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStream (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamCollection">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStreamCollection (Mono.Cecil.Metadata.MetadataStreamCollection streams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="streams" Type="Mono.Cecil.Metadata.MetadataStreamCollection" />
-      </Parameters>
-      <Docs>
-        <param name="streams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamHeader">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStreamHeader (Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStringsHeap">
-      <MemberSignature Language="C#" Value="public void VisitStringsHeap (Mono.Cecil.Metadata.StringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.StringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTablesHeap">
-      <MemberSignature Language="C#" Value="public void VisitTablesHeap (Mono.Cecil.Metadata.TablesHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.TablesHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitUserStringsHeap">
-      <MemberSignature Language="C#" Value="public void VisitUserStringsHeap (Mono.Cecil.Metadata.UserStringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.UserStringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml
deleted file mode 100644 (file)
index febef33..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="ImplMapRow" FullName="Mono.Cecil.Metadata.ImplMapRow">
-  <TypeSignature Language="C#" Value="public sealed class ImplMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportName">
-      <MemberSignature Language="C#" Value="public uint ImportName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportScope">
-      <MemberSignature Language="C#" Value="public uint ImportScope;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MappingFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeAttributes MappingFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberForwarded">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MemberForwarded;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml
deleted file mode 100644 (file)
index 9f68aa5..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ImplMapTable" FullName="Mono.Cecil.Metadata.ImplMapTable">
-  <TypeSignature Language="C#" Value="public sealed class ImplMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ImplMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ImplMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 28;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>28</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml
deleted file mode 100644 (file)
index b521194..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="InterfaceImplRow" FullName="Mono.Cecil.Metadata.InterfaceImplRow">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceImplRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public uint Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Interface">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Interface;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml
deleted file mode 100644 (file)
index 00887a1..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="InterfaceImplTable" FullName="Mono.Cecil.Metadata.InterfaceImplTable">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceImplTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.InterfaceImplRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.InterfaceImplRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 9;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>9</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml
deleted file mode 100644 (file)
index 71c7b8b..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="ManifestResourceRow" FullName="Mono.Cecil.Metadata.ManifestResourceRow">
-  <TypeSignature Language="C#" Value="public sealed class ManifestResourceRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ManifestResourceAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Implementation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml
deleted file mode 100644 (file)
index f8f1811..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ManifestResourceTable" FullName="Mono.Cecil.Metadata.ManifestResourceTable">
-  <TypeSignature Language="C#" Value="public sealed class ManifestResourceTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ManifestResourceRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ManifestResourceRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 40;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>40</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml
deleted file mode 100644 (file)
index 2fbedc1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MemberRefRow" FullName="Mono.Cecil.Metadata.MemberRefRow">
-  <TypeSignature Language="C#" Value="public sealed class MemberRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml
deleted file mode 100644 (file)
index 9bdb34b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MemberRefTable" FullName="Mono.Cecil.Metadata.MemberRefTable">
-  <TypeSignature Language="C#" Value="public sealed class MemberRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MemberRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MemberRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 10;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>10</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml
deleted file mode 100644 (file)
index 5adf049..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="MetadataFormatException" FullName="Mono.Cecil.Metadata.MetadataFormatException">
-  <TypeSignature Language="C#" Value="public class MetadataFormatException : Mono.Cecil.Binary.ImageFormatException" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ImageFormatException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml
deleted file mode 100644 (file)
index 1eb5cd6..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<Type Name="MetadataHeap" FullName="Mono.Cecil.Metadata.MetadataHeap">
-  <TypeSignature Language="C#" Value="public abstract class MetadataHeap : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetStream">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream GetStream ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapFactory">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Metadata.MetadataHeap HeapFactory (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataHeap</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexSize">
-      <MemberSignature Language="C#" Value="public int IndexSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadBytesFromStream">
-      <MemberSignature Language="C#" Value="protected virtual byte[] ReadBytesFromStream (uint pos);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="pos">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml
deleted file mode 100644 (file)
index 182e553..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-<Type Name="MetadataRoot+MetadataRootHeader" FullName="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader">
-  <TypeSignature Language="C#" Value="public sealed class MetadataRoot.MetadataRootHeader : Mono.Cecil.Binary.IHeader, Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public ushort Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StandardSignature">
-      <MemberSignature Language="C#" Value="public const uint StandardSignature = 1112167234;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <MemberValue>1112167234</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Streams">
-      <MemberSignature Language="C#" Value="public ushort Streams;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Version">
-      <MemberSignature Language="C#" Value="public string Version;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml
deleted file mode 100644 (file)
index 5f6f1e8..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<Type Name="MetadataRoot" FullName="Mono.Cecil.Metadata.MetadataRoot">
-  <TypeSignature Language="C#" Value="public sealed class MetadataRoot : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Image GetImage ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Header">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader Header { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Streams">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStreamCollection Streams { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStreamCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml
deleted file mode 100644 (file)
index 72ec411..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<Type Name="MetadataStream+MetadataStreamHeader" FullName="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader">
-  <TypeSignature Language="C#" Value="public class MetadataStream.MetadataStreamHeader : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stream">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream Stream { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml
deleted file mode 100644 (file)
index 2030494..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<Type Name="MetadataStream" FullName="Mono.Cecil.Metadata.MetadataStream">
-  <TypeSignature Language="C#" Value="public class MetadataStream : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public const string Blob;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GUID">
-      <MemberSignature Language="C#" Value="public const string GUID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Header">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader Header { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Heap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataHeap Heap { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IncrementalTables">
-      <MemberSignature Language="C#" Value="public const string IncrementalTables;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Strings">
-      <MemberSignature Language="C#" Value="public const string Strings;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tables">
-      <MemberSignature Language="C#" Value="public const string Tables;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserStrings">
-      <MemberSignature Language="C#" Value="public const string UserStrings;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml
deleted file mode 100644 (file)
index 569d9ca..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-<Type Name="MetadataStreamCollection" FullName="Mono.Cecil.Metadata.MetadataStreamCollection">
-  <TypeSignature Language="C#" Value="public class MetadataStreamCollection : Mono.Cecil.Metadata.IMetadataVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataStreamCollection ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BlobHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.BlobHeap BlobHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.BlobHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GuidHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GuidHeap GuidHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GuidHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StringsHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.StringsHeap StringsHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.StringsHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TablesHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TablesHeap TablesHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TablesHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserStringsHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.UserStringsHeap UserStringsHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.UserStringsHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml
deleted file mode 100644 (file)
index 1579f2d..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<Type Name="MetadataToken" FullName="Mono.Cecil.Metadata.MetadataToken">
-  <TypeSignature Language="C#" Value="public struct MetadataToken" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataToken (int token);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="token" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="token">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataToken (Mono.Cecil.Metadata.TokenType table, uint rid);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TokenType" />
-        <Parameter Name="rid" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <param name="rid">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Metadata.MetadataToken one, Mono.Cecil.Metadata.MetadataToken other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Metadata.MetadataToken" />
-        <Parameter Name="other" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Metadata.MetadataToken one, Mono.Cecil.Metadata.MetadataToken other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Metadata.MetadataToken" />
-        <Parameter Name="other" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RID">
-      <MemberSignature Language="C#" Value="public uint RID { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TokenType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TokenType TokenType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToUInt">
-      <MemberSignature Language="C#" Value="public uint ToUInt ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Metadata.MetadataToken Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml
deleted file mode 100644 (file)
index 1d06fb4..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MethodImplRow" FullName="Mono.Cecil.Metadata.MethodImplRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodImplRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public uint Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodBody">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MethodBody;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodDeclaration">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MethodDeclaration;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml
deleted file mode 100644 (file)
index 9935557..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodImplTable" FullName="Mono.Cecil.Metadata.MethodImplTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodImplTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodImplRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodImplRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 25;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>25</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml
deleted file mode 100644 (file)
index 89a4239..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="MethodPtrRow" FullName="Mono.Cecil.Metadata.MethodPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public uint Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml
deleted file mode 100644 (file)
index 6733d7f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodPtrTable" FullName="Mono.Cecil.Metadata.MethodPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 5;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>5</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml
deleted file mode 100644 (file)
index 613b36c..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<Type Name="MethodRow" FullName="Mono.Cecil.Metadata.MethodRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImplFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodImplAttributes ImplFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParamList">
-      <MemberSignature Language="C#" Value="public uint ParamList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml
deleted file mode 100644 (file)
index ac68474..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MethodSemanticsRow" FullName="Mono.Cecil.Metadata.MethodSemanticsRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodSemanticsRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Association">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Association;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public uint Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Semantics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodSemanticsAttributes Semantics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml
deleted file mode 100644 (file)
index 9730c2b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodSemanticsTable" FullName="Mono.Cecil.Metadata.MethodSemanticsTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodSemanticsTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodSemanticsRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodSemanticsRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 24;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>24</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml
deleted file mode 100644 (file)
index cc2db72..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="MethodSpecRow" FullName="Mono.Cecil.Metadata.MethodSpecRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodSpecRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Instantiation">
-      <MemberSignature Language="C#" Value="public uint Instantiation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml
deleted file mode 100644 (file)
index 9f9899b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodSpecTable" FullName="Mono.Cecil.Metadata.MethodSpecTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodSpecTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodSpecRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodSpecRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 43;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>43</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml
deleted file mode 100644 (file)
index c6a20dc..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodTable" FullName="Mono.Cecil.Metadata.MethodTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 6;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>6</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml
deleted file mode 100644 (file)
index 305ac24..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ModuleRefRow" FullName="Mono.Cecil.Metadata.ModuleRefRow">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml
deleted file mode 100644 (file)
index bea55ba..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ModuleRefTable" FullName="Mono.Cecil.Metadata.ModuleRefTable">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ModuleRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ModuleRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 26;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>26</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml
deleted file mode 100644 (file)
index 747953b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ModuleRow" FullName="Mono.Cecil.Metadata.ModuleRow">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EncBaseId">
-      <MemberSignature Language="C#" Value="public uint EncBaseId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EncId">
-      <MemberSignature Language="C#" Value="public uint EncId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Generation">
-      <MemberSignature Language="C#" Value="public ushort Generation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mvid">
-      <MemberSignature Language="C#" Value="public uint Mvid;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml
deleted file mode 100644 (file)
index 124022e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ModuleTable" FullName="Mono.Cecil.Metadata.ModuleTable">
-  <TypeSignature Language="C#" Value="public sealed class ModuleTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ModuleRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ModuleRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>0</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml
deleted file mode 100644 (file)
index 7f1bdf1..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="NestedClassRow" FullName="Mono.Cecil.Metadata.NestedClassRow">
-  <TypeSignature Language="C#" Value="public sealed class NestedClassRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EnclosingClass">
-      <MemberSignature Language="C#" Value="public uint EnclosingClass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedClass">
-      <MemberSignature Language="C#" Value="public uint NestedClass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml
deleted file mode 100644 (file)
index ff3bebd..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="NestedClassTable" FullName="Mono.Cecil.Metadata.NestedClassTable">
-  <TypeSignature Language="C#" Value="public sealed class NestedClassTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.NestedClassRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.NestedClassRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 41;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>41</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml
deleted file mode 100644 (file)
index 556fc6a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ParamPtrRow" FullName="Mono.Cecil.Metadata.ParamPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class ParamPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Param">
-      <MemberSignature Language="C#" Value="public uint Param;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml
deleted file mode 100644 (file)
index 680ebe2..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ParamPtrTable" FullName="Mono.Cecil.Metadata.ParamPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class ParamPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ParamPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ParamPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 7;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>7</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml
deleted file mode 100644 (file)
index b3d52f5..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ParamRow" FullName="Mono.Cecil.Metadata.ParamRow">
-  <TypeSignature Language="C#" Value="public sealed class ParamRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sequence">
-      <MemberSignature Language="C#" Value="public ushort Sequence;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml
deleted file mode 100644 (file)
index 62f2ea4..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ParamTable" FullName="Mono.Cecil.Metadata.ParamTable">
-  <TypeSignature Language="C#" Value="public sealed class ParamTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ParamRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ParamRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>8</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml
deleted file mode 100644 (file)
index c603a05..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="PropertyMapRow" FullName="Mono.Cecil.Metadata.PropertyMapRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PropertyList">
-      <MemberSignature Language="C#" Value="public uint PropertyList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml
deleted file mode 100644 (file)
index 515a378..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyMapTable" FullName="Mono.Cecil.Metadata.PropertyMapTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 21;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>21</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml
deleted file mode 100644 (file)
index 539af37..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="PropertyPtrRow" FullName="Mono.Cecil.Metadata.PropertyPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Property">
-      <MemberSignature Language="C#" Value="public uint Property;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml
deleted file mode 100644 (file)
index 3c7eb80..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyPtrTable" FullName="Mono.Cecil.Metadata.PropertyPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 22;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>22</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml
deleted file mode 100644 (file)
index db1a4e9..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="PropertyRow" FullName="Mono.Cecil.Metadata.PropertyRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public uint Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml
deleted file mode 100644 (file)
index 233921a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyTable" FullName="Mono.Cecil.Metadata.PropertyTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 23;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>23</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml
deleted file mode 100644 (file)
index 1dc1ebb..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-<Type Name="RowCollection" FullName="Mono.Cecil.Metadata.RowCollection">
-  <TypeSignature Language="C#" Value="public class RowCollection : Mono.Cecil.Metadata.IMetadataRowVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sort">
-      <MemberSignature Language="C#" Value="public void Sort (System.Collections.IComparer comp);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="comp" Type="System.Collections.IComparer" />
-      </Parameters>
-      <Docs>
-        <param name="comp">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml
deleted file mode 100644 (file)
index 93b5ec4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="StandAloneSigRow" FullName="Mono.Cecil.Metadata.StandAloneSigRow">
-  <TypeSignature Language="C#" Value="public sealed class StandAloneSigRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml
deleted file mode 100644 (file)
index 3241362..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="StandAloneSigTable" FullName="Mono.Cecil.Metadata.StandAloneSigTable">
-  <TypeSignature Language="C#" Value="public sealed class StandAloneSigTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.StandAloneSigRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.StandAloneSigRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 17;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>17</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml
deleted file mode 100644 (file)
index e01e35a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="StringsHeap" FullName="Mono.Cecil.Metadata.StringsHeap">
-  <TypeSignature Language="C#" Value="public class StringsHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public string this[uint index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml
deleted file mode 100644 (file)
index b240822..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<Type Name="TableCollection" FullName="Mono.Cecil.Metadata.TableCollection">
-  <TypeSignature Language="C#" Value="public class TableCollection : Mono.Cecil.Metadata.IMetadataTableVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Metadata.IMetadataTable value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataTable" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array array, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="array" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="array">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Heap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TablesHeap Heap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TablesHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataTable this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataTable</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml
deleted file mode 100644 (file)
index 1a3a5af..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-<Type Name="TablesHeap" FullName="Mono.Cecil.Metadata.TablesHeap">
-  <TypeSignature Language="C#" Value="public class TablesHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasTable">
-      <MemberSignature Language="C#" Value="public bool HasTable (int id);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapSizes">
-      <MemberSignature Language="C#" Value="public byte HeapSizes;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataTable this[int id] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataTable</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public byte MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxTableCount">
-      <MemberSignature Language="C#" Value="public const int MaxTableCount = 45;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>45</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public byte MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved2">
-      <MemberSignature Language="C#" Value="public byte Reserved2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sorted">
-      <MemberSignature Language="C#" Value="public long Sorted;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TableCollection Tables { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TableCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Valid">
-      <MemberSignature Language="C#" Value="public long Valid;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml
deleted file mode 100644 (file)
index 6466920..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-<Type Name="TokenType" FullName="Mono.Cecil.Metadata.TokenType">
-  <TypeSignature Language="C#" Value="public enum TokenType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="Assembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="AssemblyRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseType">
-      <MemberSignature Language="C#" Value="BaseType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttribute">
-      <MemberSignature Language="C#" Value="CustomAttribute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Event">
-      <MemberSignature Language="C#" Value="Event" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportedType">
-      <MemberSignature Language="C#" Value="ExportedType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="Field" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="File">
-      <MemberSignature Language="C#" Value="File" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParam">
-      <MemberSignature Language="C#" Value="GenericParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InterfaceImpl">
-      <MemberSignature Language="C#" Value="InterfaceImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ManifestResource">
-      <MemberSignature Language="C#" Value="ManifestResource" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberRef">
-      <MemberSignature Language="C#" Value="MemberRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="Method" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodSpec">
-      <MemberSignature Language="C#" Value="MethodSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="Module" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleRef">
-      <MemberSignature Language="C#" Value="ModuleRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="Name" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Param">
-      <MemberSignature Language="C#" Value="Param" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Permission">
-      <MemberSignature Language="C#" Value="Permission" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Property">
-      <MemberSignature Language="C#" Value="Property" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="Signature" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="String" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDef">
-      <MemberSignature Language="C#" Value="TypeDef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeRef">
-      <MemberSignature Language="C#" Value="TypeRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeSpec">
-      <MemberSignature Language="C#" Value="TypeSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml
deleted file mode 100644 (file)
index f8a494d..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<Type Name="TypeDefRow" FullName="Mono.Cecil.Metadata.TypeDefRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Extends">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Extends;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldList">
-      <MemberSignature Language="C#" Value="public uint FieldList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodList">
-      <MemberSignature Language="C#" Value="public uint MethodList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public uint Namespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml
deleted file mode 100644 (file)
index f4eb04b..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeDefTable" FullName="Mono.Cecil.Metadata.TypeDefTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeDefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeDefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>2</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml
deleted file mode 100644 (file)
index f55662e..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="TypeRefRow" FullName="Mono.Cecil.Metadata.TypeRefRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public uint Namespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolutionScope">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken ResolutionScope;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml
deleted file mode 100644 (file)
index 4b55e0e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeRefTable" FullName="Mono.Cecil.Metadata.TypeRefTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>1</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml
deleted file mode 100644 (file)
index 17f7fad..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="TypeSpecRow" FullName="Mono.Cecil.Metadata.TypeSpecRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeSpecRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml
deleted file mode 100644 (file)
index 975d7dd..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeSpecTable" FullName="Mono.Cecil.Metadata.TypeSpecTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeSpecTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeSpecRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeSpecRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 27;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>27</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml
deleted file mode 100644 (file)
index 2c3af89..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="UserStringsHeap" FullName="Mono.Cecil.Metadata.UserStringsHeap">
-  <TypeSignature Language="C#" Value="public class UserStringsHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public string this[uint offset] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="offset" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml
deleted file mode 100644 (file)
index c9829a2..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<Type Name="ArrayDimension" FullName="Mono.Cecil.ArrayDimension">
-  <TypeSignature Language="C#" Value="public sealed class ArrayDimension" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayDimension (int lb, int ub);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="lb" Type="System.Int32" />
-        <Parameter Name="ub" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="lb">To be added.</param>
-        <param name="ub">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LowerBound">
-      <MemberSignature Language="C#" Value="public int LowerBound { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UpperBound">
-      <MemberSignature Language="C#" Value="public int UpperBound { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml
deleted file mode 100644 (file)
index 8fd51bb..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="ArrayDimensionCollection" FullName="Mono.Cecil.ArrayDimensionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ArrayDimensionCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayDimensionCollection (Mono.Cecil.ArrayType container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ArrayType" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayType Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayDimension this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayDimension</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml
deleted file mode 100644 (file)
index 6e4d7bc..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<Type Name="ArrayMarshalSpec" FullName="Mono.Cecil.ArrayMarshalSpec">
-  <TypeSignature Language="C#" Value="public sealed class ArrayMarshalSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayMarshalSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemMult">
-      <MemberSignature Language="C#" Value="public int ElemMult { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumElem">
-      <MemberSignature Language="C#" Value="public int NumElem { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParamNum">
-      <MemberSignature Language="C#" Value="public int ParamNum { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml
deleted file mode 100644 (file)
index 35986b6..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<Type Name="ArrayType" FullName="Mono.Cecil.ArrayType">
-  <TypeSignature Language="C#" Value="public sealed class ArrayType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayType (Mono.Cecil.TypeReference elementType, int rank);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="rank" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <param name="rank">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Dimensions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayDimensionCollection Dimensions { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayDimensionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSizedArray">
-      <MemberSignature Language="C#" Value="public bool IsSizedArray { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rank">
-      <MemberSignature Language="C#" Value="public int Rank { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml
deleted file mode 100644 (file)
index 62e5124..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-<Type Name="AssemblyDefinition" FullName="Mono.Cecil.AssemblyDefinition">
-  <TypeSignature Language="C#" Value="public class AssemblyDefinition : Mono.Cecil.IAnnotationProvider, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasSecurity, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition EntryPoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Kind">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyKind Kind { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MainModule">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition MainModule { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Modules">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinitionCollection Modules { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameDefinition Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolver">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IAssemblyResolver Resolver { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IAssemblyResolver</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Runtime">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TargetRuntime Runtime { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml
deleted file mode 100644 (file)
index 4626eb9..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-<Type Name="AssemblyFactory" FullName="Mono.Cecil.AssemblyFactory">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyFactory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CreateReflectionAssembly">
-      <MemberSignature Language="C#" Value="public static System.Reflection.Assembly CreateReflectionAssembly (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Reflection.Assembly</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateReflectionAssembly">
-      <MemberSignature Language="C#" Value="public static System.Reflection.Assembly CreateReflectionAssembly (Mono.Cecil.AssemblyDefinition asm, AppDomain domain);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Reflection.Assembly</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="domain" Type="System.AppDomain" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="domain">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string name, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string name, Mono.Cecil.TargetRuntime rt, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="rt" Type="Mono.Cecil.TargetRuntime" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="rt">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, Mono.Cecil.TargetRuntime rt, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assemblyName" Type="System.String" />
-        <Parameter Name="moduleName" Type="System.String" />
-        <Parameter Name="rt" Type="Mono.Cecil.TargetRuntime" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="assemblyName">To be added.</param>
-        <param name="moduleName">To be added.</param>
-        <param name="rt">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, out byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="assembly" Type="System.Byte[]&amp;" RefType="out" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml
deleted file mode 100644 (file)
index 3d85a0a..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<Type Name="AssemblyFlags" FullName="Mono.Cecil.AssemblyFlags">
-  <TypeSignature Language="C#" Value="public enum AssemblyFlags" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DisableJITcompileOptimizer">
-      <MemberSignature Language="C#" Value="DisableJITcompileOptimizer" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EnableJITcompileTracking">
-      <MemberSignature Language="C#" Value="EnableJITcompileTracking" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="PublicKey" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Retargetable">
-      <MemberSignature Language="C#" Value="Retargetable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SideBySideCompatible">
-      <MemberSignature Language="C#" Value="SideBySideCompatible" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml
deleted file mode 100644 (file)
index e379ac1..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<Type Name="AssemblyHashAlgorithm" FullName="Mono.Cecil.AssemblyHashAlgorithm">
-  <TypeSignature Language="C#" Value="public enum AssemblyHashAlgorithm" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="Reserved" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SHA1">
-      <MemberSignature Language="C#" Value="SHA1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml
deleted file mode 100644 (file)
index e5386d2..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<Type Name="AssemblyKind" FullName="Mono.Cecil.AssemblyKind">
-  <TypeSignature Language="C#" Value="public enum AssemblyKind" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Console">
-      <MemberSignature Language="C#" Value="Console" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dll">
-      <MemberSignature Language="C#" Value="Dll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Windows">
-      <MemberSignature Language="C#" Value="Windows" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml
deleted file mode 100644 (file)
index cb9d46f..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<Type Name="AssemblyLinkedResource" FullName="Mono.Cecil.AssemblyLinkedResource">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyLinkedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyLinkedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, Mono.Cecil.AssemblyNameReference asmRef);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="asmRef" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="asmRef">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference Assembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml
deleted file mode 100644 (file)
index 0d62caa..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="AssemblyNameDefinition" FullName="Mono.Cecil.AssemblyNameDefinition">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyNameDefinition : Mono.Cecil.AssemblyNameReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.AssemblyNameReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameDefinition ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameDefinition (string name, string culture, Version version);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="culture" Type="System.String" />
-        <Parameter Name="version" Type="System.Version" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="culture">To be added.</param>
-        <param name="version">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public override byte[] Hash { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml
deleted file mode 100644 (file)
index 330c9c7..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-<Type Name="AssemblyNameReference" FullName="Mono.Cecil.AssemblyNameReference">
-  <TypeSignature Language="C#" Value="public class AssemblyNameReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataScope, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataScope</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReference ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReference (string name, string culture, Version version);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="culture" Type="System.String" />
-        <Parameter Name="version" Type="System.Version" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="culture">To be added.</param>
-        <param name="version">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public string Culture { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public virtual byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgorithm">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyHashAlgorithm HashAlgorithm { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasPublicKey">
-      <MemberSignature Language="C#" Value="public bool HasPublicKey { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRetargetable">
-      <MemberSignature Language="C#" Value="public bool IsRetargetable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSideBySideCompatible">
-      <MemberSignature Language="C#" Value="public bool IsSideBySideCompatible { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyNameReference Parse (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="public byte[] PublicKey { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKeyToken">
-      <MemberSignature Language="C#" Value="public byte[] PublicKeyToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Version">
-      <MemberSignature Language="C#" Value="public Version Version { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Version</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml
deleted file mode 100644 (file)
index 56d1fdc..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="AssemblyNameReferenceCollection" FullName="Mono.Cecil.AssemblyNameReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyNameReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml
deleted file mode 100644 (file)
index 049045e..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-<Type Name="BaseAssemblyResolver" FullName="Mono.Cecil.BaseAssemblyResolver">
-  <TypeSignature Language="C#" Value="public abstract class BaseAssemblyResolver : Mono.Cecil.IAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAssemblyResolver</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public BaseAssemblyResolver ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddSearchDirectory">
-      <MemberSignature Language="C#" Value="public void AddSearchDirectory (string directory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="directory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="directory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSearchDirectories">
-      <MemberSignature Language="C#" Value="public string[] GetSearchDirectories ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnMono">
-      <MemberSignature Language="C#" Value="public static bool OnMono ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveSearchDirectory">
-      <MemberSignature Language="C#" Value="public void RemoveSearchDirectory (string directory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="directory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="directory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.AssemblyDefinition Resolve (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml
deleted file mode 100644 (file)
index d954541..0000000
+++ /dev/null
@@ -1,699 +0,0 @@
-<Type Name="BaseReflectionVisitor" FullName="Mono.Cecil.BaseReflectionVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseReflectionVisitor : Mono.Cecil.IReflectionVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseReflectionVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void TerminateModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCollection">
-      <MemberSignature Language="C#" Value="protected void VisitCollection (System.Collections.ICollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="System.Collections.ICollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructor">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstructor (Mono.Cecil.MethodDefinition ctor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructorCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstructorCollection (Mono.Cecil.ConstructorCollection ctors);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctors" Type="Mono.Cecil.ConstructorCollection" />
-      </Parameters>
-      <Docs>
-        <param name="ctors">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttribute">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttribute (Mono.Cecil.CustomAttribute customAttr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttr" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="customAttr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeCollection (Mono.Cecil.CustomAttributeCollection customAttrs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttrs" Type="Mono.Cecil.CustomAttributeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="customAttrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventDefinition (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventDefinitionCollection (Mono.Cecil.EventDefinitionCollection events);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="events" Type="Mono.Cecil.EventDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="events">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternType">
-      <MemberSignature Language="C#" Value="public virtual void VisitExternType (Mono.Cecil.TypeReference externType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="externType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternTypeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitExternTypeCollection (Mono.Cecil.ExternTypeCollection externs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externs" Type="Mono.Cecil.ExternTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="externs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldDefinition (Mono.Cecil.FieldDefinition field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldDefinitionCollection (Mono.Cecil.FieldDefinitionCollection fields);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fields" Type="Mono.Cecil.FieldDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="fields">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameter">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParameter (Mono.Cecil.GenericParameter genparam);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparam" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="genparam">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameterCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParameterCollection (Mono.Cecil.GenericParameterCollection genparams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparams" Type="Mono.Cecil.GenericParameterCollection" />
-      </Parameters>
-      <Docs>
-        <param name="genparams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterface">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterface (Mono.Cecil.TypeReference interf);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interf" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="interf">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceCollection (Mono.Cecil.InterfaceCollection interfaces);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interfaces" Type="Mono.Cecil.InterfaceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="interfaces">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMarshalSpec">
-      <MemberSignature Language="C#" Value="public virtual void VisitMarshalSpec (Mono.Cecil.MarshalSpec marshalSpec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="marshalSpec" Type="Mono.Cecil.MarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="marshalSpec">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberReference (Mono.Cecil.MemberReference member);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="member" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="member">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberReferenceCollection (Mono.Cecil.MemberReferenceCollection members);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="members" Type="Mono.Cecil.MemberReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="members">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodDefinition (Mono.Cecil.MethodDefinition method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodDefinitionCollection (Mono.Cecil.MethodDefinitionCollection methods);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="methods" Type="Mono.Cecil.MethodDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="methods">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedType">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedType (Mono.Cecil.TypeDefinition nestedType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedType" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="nestedType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedTypeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedTypeCollection (Mono.Cecil.NestedTypeCollection nestedTypes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedTypes" Type="Mono.Cecil.NestedTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="nestedTypes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverride">
-      <MemberSignature Language="C#" Value="public virtual void VisitOverride (Mono.Cecil.MethodReference ov);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ov" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ov">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverrideCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitOverrideCollection (Mono.Cecil.OverrideCollection meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.OverrideCollection" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitParameterDefinition (Mono.Cecil.ParameterDefinition parameter);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameter" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="parameter">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitParameterDefinitionCollection (Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPInvokeInfo">
-      <MemberSignature Language="C#" Value="public virtual void VisitPInvokeInfo (Mono.Cecil.PInvokeInfo pinvk);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pinvk" Type="Mono.Cecil.PInvokeInfo" />
-      </Parameters>
-      <Docs>
-        <param name="pinvk">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyDefinition (Mono.Cecil.PropertyDefinition property);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="property" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="property">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyDefinitionCollection (Mono.Cecil.PropertyDefinitionCollection properties);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="properties" Type="Mono.Cecil.PropertyDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="properties">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclaration">
-      <MemberSignature Language="C#" Value="public virtual void VisitSecurityDeclaration (Mono.Cecil.SecurityDeclaration secDecl);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecl" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="secDecl">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclarationCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSecurityDeclarationCollection (Mono.Cecil.SecurityDeclarationCollection secDecls);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecls" Type="Mono.Cecil.SecurityDeclarationCollection" />
-      </Parameters>
-      <Docs>
-        <param name="secDecls">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefinition (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefinitionCollection (Mono.Cecil.TypeDefinitionCollection types);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="types" Type="Mono.Cecil.TypeDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="types">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeReference (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeReferenceCollection (Mono.Cecil.TypeReferenceCollection refs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="refs" Type="Mono.Cecil.TypeReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="refs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml
deleted file mode 100644 (file)
index f2adf75..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-<Type Name="BaseStructureVisitor" FullName="Mono.Cecil.BaseStructureVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseStructureVisitor : Mono.Cecil.IReflectionStructureVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseStructureVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void TerminateAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyLinkedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyLinkedResource (Mono.Cecil.AssemblyLinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.AssemblyLinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameDefinition (Mono.Cecil.AssemblyNameDefinition name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameReference (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameReferenceCollection (Mono.Cecil.AssemblyNameReferenceCollection names);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="names" Type="Mono.Cecil.AssemblyNameReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="names">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCollection">
-      <MemberSignature Language="C#" Value="protected void VisitCollection (System.Collections.ICollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="System.Collections.ICollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEmbeddedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitEmbeddedResource (Mono.Cecil.EmbeddedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.EmbeddedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitLinkedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitLinkedResource (Mono.Cecil.LinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.LinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinitionCollection (Mono.Cecil.ModuleDefinitionCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleReference (Mono.Cecil.ModuleReference module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleReferenceCollection (Mono.Cecil.ModuleReferenceCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitResourceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitResourceCollection (Mono.Cecil.ResourceCollection resources);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="resources" Type="Mono.Cecil.ResourceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="resources">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml
deleted file mode 100644 (file)
index 6633385..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="CallSite" FullName="Mono.Cecil.CallSite">
-  <TypeSignature Language="C#" Value="public sealed class CallSite : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CallSite (bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv, Mono.Cecil.MethodReturnType retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-        <Parameter Name="retType" Type="Mono.Cecil.MethodReturnType" />
-      </Parameters>
-      <Docs>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml
deleted file mode 100644 (file)
index 3092bc6..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-<Type Name="Constants" FullName="Mono.Cecil.Constants">
-  <TypeSignature Language="C#" Value="public class Constants" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Boolean">
-      <MemberSignature Language="C#" Value="public const string Boolean;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Byte">
-      <MemberSignature Language="C#" Value="public const string Byte;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Char">
-      <MemberSignature Language="C#" Value="public const string Char;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Corlib">
-      <MemberSignature Language="C#" Value="public const string Corlib;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Deleted">
-      <MemberSignature Language="C#" Value="public const string Deleted;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Double">
-      <MemberSignature Language="C#" Value="public const string Double;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Enum">
-      <MemberSignature Language="C#" Value="public const string Enum;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int16">
-      <MemberSignature Language="C#" Value="public const string Int16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int32">
-      <MemberSignature Language="C#" Value="public const string Int32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int64">
-      <MemberSignature Language="C#" Value="public const string Int64;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IntPtr">
-      <MemberSignature Language="C#" Value="public const string IntPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleType">
-      <MemberSignature Language="C#" Value="public const string ModuleType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Object">
-      <MemberSignature Language="C#" Value="public const string Object;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PrivateImplDetails">
-      <MemberSignature Language="C#" Value="public const string PrivateImplDetails;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SByte">
-      <MemberSignature Language="C#" Value="public const string SByte;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Single">
-      <MemberSignature Language="C#" Value="public const string Single;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="public const string String;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public const string Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypedReference">
-      <MemberSignature Language="C#" Value="public const string TypedReference;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt16">
-      <MemberSignature Language="C#" Value="public const string UInt16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt32">
-      <MemberSignature Language="C#" Value="public const string UInt32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt64">
-      <MemberSignature Language="C#" Value="public const string UInt64;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UIntPtr">
-      <MemberSignature Language="C#" Value="public const string UIntPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ValueType">
-      <MemberSignature Language="C#" Value="public const string ValueType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Void">
-      <MemberSignature Language="C#" Value="public const string Void;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml
deleted file mode 100644 (file)
index f21858f..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="ConstraintCollection" FullName="Mono.Cecil.ConstraintCollection">
-  <TypeSignature Language="C#" Value="public sealed class ConstraintCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ConstraintCollection (Mono.Cecil.GenericParameter container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameter Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameter</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml
deleted file mode 100644 (file)
index 6b697e9..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-<Type Name="ConstructorCollection" FullName="Mono.Cecil.ConstructorCollection">
-  <TypeSignature Language="C#" Value="public sealed class ConstructorCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ConstructorCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Mono.Cecil.TypeReference[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="Mono.Cecil.TypeReference[]" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Type[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="System.Type[]" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml
deleted file mode 100644 (file)
index 6455db2..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-<Type Name="CustomAttribute" FullName="Mono.Cecil.CustomAttribute">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttribute : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionVisitable, Mono.Cecil.IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IRequireResolving</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttribute (Mono.Cecil.MethodReference ctor);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttribute (Mono.Cecil.MethodReference ctor, byte[] blob);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="blob" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <param name="blob">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Constructor { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ConstructorParameters">
-      <MemberSignature Language="C#" Value="public System.Collections.IList ConstructorParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Fields">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Fields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetFieldType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference GetFieldType (string fieldName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fieldName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fieldName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetPropertyType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference GetPropertyType (string propertyName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="propertyName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="propertyName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Properties">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Properties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetFieldType">
-      <MemberSignature Language="C#" Value="public void SetFieldType (string fieldName, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fieldName" Type="System.String" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="fieldName">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetPropertyType">
-      <MemberSignature Language="C#" Value="public void SetPropertyType (string propertyName, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="propertyName" Type="System.String" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="propertyName">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml
deleted file mode 100644 (file)
index bea1fd0..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="CustomAttributeCollection" FullName="Mono.Cecil.CustomAttributeCollection">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttributeCollection (Mono.Cecil.ICustomAttributeProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ICustomAttributeProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ICustomAttributeProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ICustomAttributeProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml
deleted file mode 100644 (file)
index 608de3e..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<Type Name="CustomMarshalerSpec" FullName="Mono.Cecil.CustomMarshalerSpec">
-  <TypeSignature Language="C#" Value="public sealed class CustomMarshalerSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomMarshalerSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cookie">
-      <MemberSignature Language="C#" Value="public string Cookie { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guid">
-      <MemberSignature Language="C#" Value="public Guid Guid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedType">
-      <MemberSignature Language="C#" Value="public string ManagedType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UnmanagedType">
-      <MemberSignature Language="C#" Value="public string UnmanagedType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml
deleted file mode 100644 (file)
index f1eede8..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="DefaultAssemblyResolver" FullName="Mono.Cecil.DefaultAssemblyResolver">
-  <TypeSignature Language="C#" Value="public class DefaultAssemblyResolver : Mono.Cecil.BaseAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.BaseAssemblyResolver</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DefaultAssemblyResolver ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RegisterAssembly">
-      <MemberSignature Language="C#" Value="protected void RegisterAssembly (Mono.Cecil.AssemblyDefinition assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml
deleted file mode 100644 (file)
index 74ec4e1..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-<Type Name="DefaultImporter" FullName="Mono.Cecil.DefaultImporter">
-  <TypeSignature Language="C#" Value="public class DefaultImporter : Mono.Cecil.IImporter" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IImporter</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DefaultImporter (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAssembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference ImportAssembly (Mono.Cecil.AssemblyNameReference asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportFieldReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.FieldReference ImportFieldReference (Mono.Cecil.FieldReference fr, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fr" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="fr">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportMethodReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReference ImportMethodReference (Mono.Cecil.MethodReference mr, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="mr" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="mr">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTypeReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference ImportTypeReference (Mono.Cecil.TypeReference t, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="t" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="t">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Module { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml
deleted file mode 100644 (file)
index f15d927..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<Type Name="EmbeddedResource" FullName="Mono.Cecil.EmbeddedResource">
-  <TypeSignature Language="C#" Value="public sealed class EmbeddedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EmbeddedResource (string name, Mono.Cecil.ManifestResourceAttributes flags);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EmbeddedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, byte[] data);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="data" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="data">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml
deleted file mode 100644 (file)
index cad571e..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<Type Name="EventAttributes" FullName="Mono.Cecil.EventAttributes">
-  <TypeSignature Language="C#" Value="public enum EventAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml
deleted file mode 100644 (file)
index 4b07489..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-<Type Name="EventDefinition" FullName="Mono.Cecil.EventDefinition">
-  <TypeSignature Language="C#" Value="public sealed class EventDefinition : Mono.Cecil.EventReference, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.EventReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventDefinition (string name, Mono.Cecil.TypeReference eventType, Mono.Cecil.EventAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="eventType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.EventAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="eventType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition AddMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateAddMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateAddMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateInvokeMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateInvokeMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateRemoveMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateRemoveMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InvokeMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition InvokeMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition RemoveMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.EventDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml
deleted file mode 100644 (file)
index d8fbf7a..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="EventDefinitionCollection" FullName="Mono.Cecil.EventDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class EventDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEvent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition GetEvent (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml
deleted file mode 100644 (file)
index e15158c..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="EventReference" FullName="Mono.Cecil.EventReference">
-  <TypeSignature Language="C#" Value="public abstract class EventReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventReference (string name, Mono.Cecil.TypeReference eventType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="eventType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="eventType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference EventType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.EventDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml
deleted file mode 100644 (file)
index 024d5ef..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="ExternTypeCollection" FullName="Mono.Cecil.ExternTypeCollection">
-  <TypeSignature Language="C#" Value="public sealed class ExternTypeCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExternTypeCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml
deleted file mode 100644 (file)
index ad760f1..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-<Type Name="FieldAttributes" FullName="Mono.Cecil.FieldAttributes">
-  <TypeSignature Language="C#" Value="public enum FieldAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="Assembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Compilercontrolled">
-      <MemberSignature Language="C#" Value="Compilercontrolled" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamANDAssem">
-      <MemberSignature Language="C#" Value="FamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Family">
-      <MemberSignature Language="C#" Value="Family" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamORAssem">
-      <MemberSignature Language="C#" Value="FamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldAccessMask">
-      <MemberSignature Language="C#" Value="FieldAccessMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldRVA">
-      <MemberSignature Language="C#" Value="HasFieldRVA" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InitOnly">
-      <MemberSignature Language="C#" Value="InitOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Literal">
-      <MemberSignature Language="C#" Value="Literal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotSerialized">
-      <MemberSignature Language="C#" Value="NotSerialized" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeImpl">
-      <MemberSignature Language="C#" Value="PInvokeImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Static">
-      <MemberSignature Language="C#" Value="Static" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml
deleted file mode 100644 (file)
index 8a5e5fd..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-<Type Name="FieldDefinition" FullName="Mono.Cecil.FieldDefinition">
-  <TypeSignature Language="C#" Value="public sealed class FieldDefinition : Mono.Cecil.FieldReference, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.FieldReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldDefinition (string name, Mono.Cecil.TypeReference fieldType, Mono.Cecil.FieldAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="fieldType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.FieldAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="fieldType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLayoutInfo">
-      <MemberSignature Language="C#" Value="public bool HasLayoutInfo { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitialValue">
-      <MemberSignature Language="C#" Value="public byte[] InitialValue { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAssembly">
-      <MemberSignature Language="C#" Value="public bool IsAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCompilerControlled">
-      <MemberSignature Language="C#" Value="public bool IsCompilerControlled { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamily">
-      <MemberSignature Language="C#" Value="public bool IsFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInitOnly">
-      <MemberSignature Language="C#" Value="public bool IsInitOnly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsLiteral">
-      <MemberSignature Language="C#" Value="public bool IsLiteral { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNotSerialized">
-      <MemberSignature Language="C#" Value="public bool IsNotSerialized { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPInvokeImpl">
-      <MemberSignature Language="C#" Value="public bool IsPInvokeImpl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStatic">
-      <MemberSignature Language="C#" Value="public bool IsStatic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.FieldDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml
deleted file mode 100644 (file)
index 3116764..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="FieldDefinitionCollection" FullName="Mono.Cecil.FieldDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class FieldDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetField">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition GetField (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml
deleted file mode 100644 (file)
index f6001bf..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<Type Name="FieldReference" FullName="Mono.Cecil.FieldReference">
-  <TypeSignature Language="C#" Value="public class FieldReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldReference (string name, Mono.Cecil.TypeReference declaringType, Mono.Cecil.TypeReference fieldType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="declaringType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="fieldType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="declaringType">To be added.</param>
-        <param name="fieldType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference FieldType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.FieldDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml
deleted file mode 100644 (file)
index a25d391..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<Type Name="FileAttributes" FullName="Mono.Cecil.FileAttributes">
-  <TypeSignature Language="C#" Value="public enum FileAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ContainsMetaData">
-      <MemberSignature Language="C#" Value="ContainsMetaData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsNoMetaData">
-      <MemberSignature Language="C#" Value="ContainsNoMetaData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml
deleted file mode 100644 (file)
index bc9262f..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FixedArraySpec" FullName="Mono.Cecil.FixedArraySpec">
-  <TypeSignature Language="C#" Value="public sealed class FixedArraySpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FixedArraySpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumElem">
-      <MemberSignature Language="C#" Value="public int NumElem { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml
deleted file mode 100644 (file)
index 4bf008c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="FixedSysStringSpec" FullName="Mono.Cecil.FixedSysStringSpec">
-  <TypeSignature Language="C#" Value="public sealed class FixedSysStringSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FixedSysStringSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public int Size { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml
deleted file mode 100644 (file)
index 587dee6..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-<Type Name="FunctionPointerType" FullName="Mono.Cecil.FunctionPointerType">
-  <TypeSignature Language="C#" Value="public sealed class FunctionPointerType : Mono.Cecil.TypeSpecification, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FunctionPointerType (bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv, Mono.Cecil.MethodReturnType retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-        <Parameter Name="retType" Type="Mono.Cecil.MethodReturnType" />
-      </Parameters>
-      <Docs>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml
deleted file mode 100644 (file)
index af480b9..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="GenericArgumentCollection" FullName="Mono.Cecil.GenericArgumentCollection">
-  <TypeSignature Language="C#" Value="public sealed class GenericArgumentCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericArgumentCollection (Mono.Cecil.IGenericInstance container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IGenericInstance" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericInstance Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericInstance</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml
deleted file mode 100644 (file)
index edc5ff8..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<Type Name="GenericContext" FullName="Mono.Cecil.GenericContext">
-  <TypeSignature Language="C#" Value="public class GenericContext" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext (Mono.Cecil.IGenericParameterProvider provider);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="provider" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="provider">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext (Mono.Cecil.TypeReference type, Mono.Cecil.MethodReference meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AllowCreation">
-      <MemberSignature Language="C#" Value="public bool AllowCreation { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericContext Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericContext</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Null">
-      <MemberSignature Language="C#" Value="public bool Null { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml
deleted file mode 100644 (file)
index 72f1ca7..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<Type Name="GenericInstanceMethod" FullName="Mono.Cecil.GenericInstanceMethod">
-  <TypeSignature Language="C#" Value="public sealed class GenericInstanceMethod : Mono.Cecil.MethodSpecification, Mono.Cecil.IGenericInstance" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericInstance</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericInstanceMethod (Mono.Cecil.MethodReference elemMethod);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemMethod" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemMethod">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml
deleted file mode 100644 (file)
index ebb3b9a..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<Type Name="GenericInstanceType" FullName="Mono.Cecil.GenericInstanceType">
-  <TypeSignature Language="C#" Value="public sealed class GenericInstanceType : Mono.Cecil.TypeSpecification, Mono.Cecil.IGenericInstance" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericInstance</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericInstanceType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml
deleted file mode 100644 (file)
index d485eff..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-<Type Name="GenericParameter" FullName="Mono.Cecil.GenericParameter">
-  <TypeSignature Language="C#" Value="public sealed class GenericParameter : Mono.Cecil.TypeReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericParameter (string name, Mono.Cecil.IGenericParameterProvider owner);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="owner" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="owner">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constraints">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ConstraintCollection Constraints { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ConstraintCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstraints">
-      <MemberSignature Language="C#" Value="public bool HasConstraints { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefaultConstructorConstraint">
-      <MemberSignature Language="C#" Value="public bool HasDefaultConstructorConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasNotNullableValueTypeConstraint">
-      <MemberSignature Language="C#" Value="public bool HasNotNullableValueTypeConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasReferenceTypeConstraint">
-      <MemberSignature Language="C#" Value="public bool HasReferenceTypeConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsContravariant">
-      <MemberSignature Language="C#" Value="public bool IsContravariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCovariant">
-      <MemberSignature Language="C#" Value="public bool IsCovariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNonVariant">
-      <MemberSignature Language="C#" Value="public bool IsNonVariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericParameterProvider Owner { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericParameterProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Position">
-      <MemberSignature Language="C#" Value="public int Position { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml
deleted file mode 100644 (file)
index 84bd79f..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<Type Name="GenericParameterAttributes" FullName="Mono.Cecil.GenericParameterAttributes">
-  <TypeSignature Language="C#" Value="public enum GenericParameterAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Contravariant">
-      <MemberSignature Language="C#" Value="Contravariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Covariant">
-      <MemberSignature Language="C#" Value="Covariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DefaultConstructorConstraint">
-      <MemberSignature Language="C#" Value="DefaultConstructorConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonVariant">
-      <MemberSignature Language="C#" Value="NonVariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotNullableValueTypeConstraint">
-      <MemberSignature Language="C#" Value="NotNullableValueTypeConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReferenceTypeConstraint">
-      <MemberSignature Language="C#" Value="ReferenceTypeConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialConstraintMask">
-      <MemberSignature Language="C#" Value="SpecialConstraintMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VarianceMask">
-      <MemberSignature Language="C#" Value="VarianceMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml
deleted file mode 100644 (file)
index 4c4c112..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="GenericParameterCollection" FullName="Mono.Cecil.GenericParameterCollection">
-  <TypeSignature Language="C#" Value="public sealed class GenericParameterCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericParameterCollection (Mono.Cecil.IGenericParameterProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericParameterProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericParameterProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameter this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameter</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml
deleted file mode 100644 (file)
index 37f3b22..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IAnnotationProvider" FullName="Mono.Cecil.IAnnotationProvider">
-  <TypeSignature Language="C#" Value="public interface IAnnotationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Annotations">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml
deleted file mode 100644 (file)
index da599a8..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<Type Name="IAssemblyResolver" FullName="Mono.Cecil.IAssemblyResolver">
-  <TypeSignature Language="C#" Value="public interface IAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Resolve (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml
deleted file mode 100644 (file)
index 321c2ed..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<Type Name="ICustomAttributeProvider" FullName="Mono.Cecil.ICustomAttributeProvider">
-  <TypeSignature Language="C#" Value="public interface ICustomAttributeProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml
deleted file mode 100644 (file)
index d24dc5a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IGenericInstance" FullName="Mono.Cecil.IGenericInstance">
-  <TypeSignature Language="C#" Value="public interface IGenericInstance : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml
deleted file mode 100644 (file)
index a5ef6d2..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IGenericParameterProvider" FullName="Mono.Cecil.IGenericParameterProvider">
-  <TypeSignature Language="C#" Value="public interface IGenericParameterProvider : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml
deleted file mode 100644 (file)
index 1f6f75c..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IHasConstant" FullName="Mono.Cecil.IHasConstant">
-  <TypeSignature Language="C#" Value="public interface IHasConstant : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml
deleted file mode 100644 (file)
index 0419803..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<Type Name="IHasMarshalSpec" FullName="Mono.Cecil.IHasMarshalSpec">
-  <TypeSignature Language="C#" Value="public interface IHasMarshalSpec : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml
deleted file mode 100644 (file)
index 10f8af9..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IHasSecurity" FullName="Mono.Cecil.IHasSecurity">
-  <TypeSignature Language="C#" Value="public interface IHasSecurity : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml
deleted file mode 100644 (file)
index a47ec70..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<Type Name="IImporter" FullName="Mono.Cecil.IImporter">
-  <TypeSignature Language="C#" Value="public interface IImporter" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ImportFieldReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference ImportFieldReference (Mono.Cecil.FieldReference field, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportMethodReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference ImportMethodReference (Mono.Cecil.MethodReference method, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTypeReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ImportTypeReference (Mono.Cecil.TypeReference type, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml
deleted file mode 100644 (file)
index cdbf4d4..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="IMemberDefinition" FullName="Mono.Cecil.IMemberDefinition">
-  <TypeSignature Language="C#" Value="public interface IMemberDefinition : Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IMemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberReference</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml
deleted file mode 100644 (file)
index 326a07f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="IMemberReference" FullName="Mono.Cecil.IMemberReference">
-  <TypeSignature Language="C#" Value="public interface IMemberReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference DeclaringType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml
deleted file mode 100644 (file)
index 8868513..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<Type Name="IMetadataScope" FullName="Mono.Cecil.IMetadataScope">
-  <TypeSignature Language="C#" Value="public interface IMetadataScope : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml
deleted file mode 100644 (file)
index 0dfe95f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IMetadataTokenProvider" FullName="Mono.Cecil.IMetadataTokenProvider">
-  <TypeSignature Language="C#" Value="public interface IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml
deleted file mode 100644 (file)
index f29a394..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<Type Name="IMethodSignature" FullName="Mono.Cecil.IMethodSignature">
-  <TypeSignature Language="C#" Value="public interface IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml
deleted file mode 100644 (file)
index e26001c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IReflectionStructureVisitable" FullName="Mono.Cecil.IReflectionStructureVisitable">
-  <TypeSignature Language="C#" Value="public interface IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml
deleted file mode 100644 (file)
index 923bf98..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-<Type Name="IReflectionStructureVisitor" FullName="Mono.Cecil.IReflectionStructureVisitor">
-  <TypeSignature Language="C#" Value="public interface IReflectionStructureVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public void TerminateAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyLinkedResource">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyLinkedResource (Mono.Cecil.AssemblyLinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.AssemblyLinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameDefinition">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameDefinition (Mono.Cecil.AssemblyNameDefinition name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReference">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameReference (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameReferenceCollection (Mono.Cecil.AssemblyNameReferenceCollection names);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="names" Type="Mono.Cecil.AssemblyNameReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="names">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEmbeddedResource">
-      <MemberSignature Language="C#" Value="public void VisitEmbeddedResource (Mono.Cecil.EmbeddedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.EmbeddedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitLinkedResource">
-      <MemberSignature Language="C#" Value="public void VisitLinkedResource (Mono.Cecil.LinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.LinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinitionCollection (Mono.Cecil.ModuleDefinitionCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReference">
-      <MemberSignature Language="C#" Value="public void VisitModuleReference (Mono.Cecil.ModuleReference module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitModuleReferenceCollection (Mono.Cecil.ModuleReferenceCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitResourceCollection">
-      <MemberSignature Language="C#" Value="public void VisitResourceCollection (Mono.Cecil.ResourceCollection resources);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="resources" Type="Mono.Cecil.ResourceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="resources">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml
deleted file mode 100644 (file)
index 7894f17..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IReflectionVisitable" FullName="Mono.Cecil.IReflectionVisitable">
-  <TypeSignature Language="C#" Value="public interface IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml
deleted file mode 100644 (file)
index ddae454..0000000
+++ /dev/null
@@ -1,662 +0,0 @@
-<Type Name="IReflectionVisitor" FullName="Mono.Cecil.IReflectionVisitor">
-  <TypeSignature Language="C#" Value="public interface IReflectionVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateModuleDefinition">
-      <MemberSignature Language="C#" Value="public void TerminateModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructor">
-      <MemberSignature Language="C#" Value="public void VisitConstructor (Mono.Cecil.MethodDefinition ctor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructorCollection">
-      <MemberSignature Language="C#" Value="public void VisitConstructorCollection (Mono.Cecil.ConstructorCollection ctors);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctors" Type="Mono.Cecil.ConstructorCollection" />
-      </Parameters>
-      <Docs>
-        <param name="ctors">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttribute">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttribute (Mono.Cecil.CustomAttribute customAttr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttr" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="customAttr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeCollection">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeCollection (Mono.Cecil.CustomAttributeCollection customAttrs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttrs" Type="Mono.Cecil.CustomAttributeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="customAttrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinition">
-      <MemberSignature Language="C#" Value="public void VisitEventDefinition (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitEventDefinitionCollection (Mono.Cecil.EventDefinitionCollection events);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="events" Type="Mono.Cecil.EventDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="events">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternType">
-      <MemberSignature Language="C#" Value="public void VisitExternType (Mono.Cecil.TypeReference externType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="externType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternTypeCollection">
-      <MemberSignature Language="C#" Value="public void VisitExternTypeCollection (Mono.Cecil.ExternTypeCollection externs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externs" Type="Mono.Cecil.ExternTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="externs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinition">
-      <MemberSignature Language="C#" Value="public void VisitFieldDefinition (Mono.Cecil.FieldDefinition field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitFieldDefinitionCollection (Mono.Cecil.FieldDefinitionCollection fields);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fields" Type="Mono.Cecil.FieldDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="fields">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameter">
-      <MemberSignature Language="C#" Value="public void VisitGenericParameter (Mono.Cecil.GenericParameter genparam);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparam" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="genparam">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameterCollection">
-      <MemberSignature Language="C#" Value="public void VisitGenericParameterCollection (Mono.Cecil.GenericParameterCollection genparams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparams" Type="Mono.Cecil.GenericParameterCollection" />
-      </Parameters>
-      <Docs>
-        <param name="genparams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterface">
-      <MemberSignature Language="C#" Value="public void VisitInterface (Mono.Cecil.TypeReference interf);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interf" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="interf">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceCollection">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceCollection (Mono.Cecil.InterfaceCollection interfaces);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interfaces" Type="Mono.Cecil.InterfaceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="interfaces">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMarshalSpec">
-      <MemberSignature Language="C#" Value="public void VisitMarshalSpec (Mono.Cecil.MarshalSpec marshalSpec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="marshalSpec" Type="Mono.Cecil.MarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="marshalSpec">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReference">
-      <MemberSignature Language="C#" Value="public void VisitMemberReference (Mono.Cecil.MemberReference member);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="member" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="member">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitMemberReferenceCollection (Mono.Cecil.MemberReferenceCollection members);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="members" Type="Mono.Cecil.MemberReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="members">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinition">
-      <MemberSignature Language="C#" Value="public void VisitMethodDefinition (Mono.Cecil.MethodDefinition method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitMethodDefinitionCollection (Mono.Cecil.MethodDefinitionCollection methods);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="methods" Type="Mono.Cecil.MethodDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="methods">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedType">
-      <MemberSignature Language="C#" Value="public void VisitNestedType (Mono.Cecil.TypeDefinition nestedType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedType" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="nestedType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedTypeCollection">
-      <MemberSignature Language="C#" Value="public void VisitNestedTypeCollection (Mono.Cecil.NestedTypeCollection nestedTypes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedTypes" Type="Mono.Cecil.NestedTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="nestedTypes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverride">
-      <MemberSignature Language="C#" Value="public void VisitOverride (Mono.Cecil.MethodReference ov);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ov" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ov">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverrideCollection">
-      <MemberSignature Language="C#" Value="public void VisitOverrideCollection (Mono.Cecil.OverrideCollection meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.OverrideCollection" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinition">
-      <MemberSignature Language="C#" Value="public void VisitParameterDefinition (Mono.Cecil.ParameterDefinition parameter);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameter" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="parameter">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitParameterDefinitionCollection (Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPInvokeInfo">
-      <MemberSignature Language="C#" Value="public void VisitPInvokeInfo (Mono.Cecil.PInvokeInfo pinvk);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pinvk" Type="Mono.Cecil.PInvokeInfo" />
-      </Parameters>
-      <Docs>
-        <param name="pinvk">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinition">
-      <MemberSignature Language="C#" Value="public void VisitPropertyDefinition (Mono.Cecil.PropertyDefinition property);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="property" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="property">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitPropertyDefinitionCollection (Mono.Cecil.PropertyDefinitionCollection properties);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="properties" Type="Mono.Cecil.PropertyDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="properties">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclaration">
-      <MemberSignature Language="C#" Value="public void VisitSecurityDeclaration (Mono.Cecil.SecurityDeclaration secDecl);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecl" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="secDecl">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclarationCollection">
-      <MemberSignature Language="C#" Value="public void VisitSecurityDeclarationCollection (Mono.Cecil.SecurityDeclarationCollection secDecls);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecls" Type="Mono.Cecil.SecurityDeclarationCollection" />
-      </Parameters>
-      <Docs>
-        <param name="secDecls">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinition">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefinition (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefinitionCollection (Mono.Cecil.TypeDefinitionCollection types);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="types" Type="Mono.Cecil.TypeDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="types">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReference">
-      <MemberSignature Language="C#" Value="public void VisitTypeReference (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitTypeReferenceCollection (Mono.Cecil.TypeReferenceCollection refs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="refs" Type="Mono.Cecil.TypeReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="refs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml
deleted file mode 100644 (file)
index 445bafb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<Type Name="IRequireResolving" FullName="Mono.Cecil.IRequireResolving">
-  <TypeSignature Language="C#" Value="public interface IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml
deleted file mode 100644 (file)
index 6ddeaff..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<Type Name="ImportContext" FullName="Mono.Cecil.ImportContext">
-  <TypeSignature Language="C#" Value="public class ImportContext" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ImportContext (Mono.Cecil.IImporter importer);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ImportContext (Mono.Cecil.IImporter importer, Mono.Cecil.IGenericParameterProvider provider);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-        <Parameter Name="provider" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="importer">To be added.</param>
-        <param name="provider">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericContext">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericContext GenericContext { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericContext</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml
deleted file mode 100644 (file)
index a6ddb7c..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="InterfaceCollection" FullName="Mono.Cecil.InterfaceCollection">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public InterfaceCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml
deleted file mode 100644 (file)
index d046efb..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<Type Name="LinkedResource" FullName="Mono.Cecil.LinkedResource">
-  <TypeSignature Language="C#" Value="public sealed class LinkedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public LinkedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, string file);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="File">
-      <MemberSignature Language="C#" Value="public string File { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml
deleted file mode 100644 (file)
index 60163f7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<Type Name="ManifestResourceAttributes" FullName="Mono.Cecil.ManifestResourceAttributes">
-  <TypeSignature Language="C#" Value="public enum ManifestResourceAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VisibilityMask">
-      <MemberSignature Language="C#" Value="VisibilityMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml
deleted file mode 100644 (file)
index 4e8ad0b..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<Type Name="MarshalSpec" FullName="Mono.Cecil.MarshalSpec">
-  <TypeSignature Language="C#" Value="public class MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MarshalSpec (Mono.Cecil.NativeType natIntr, Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="natIntr" Type="Mono.Cecil.NativeType" />
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="natIntr">To be added.</param>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IHasMarshalSpec Container { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IHasMarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NativeIntrinsic">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType NativeIntrinsic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml
deleted file mode 100644 (file)
index c3357d9..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<Type Name="MemberReference" FullName="Mono.Cecil.MemberReference">
-  <TypeSignature Language="C#" Value="public abstract class MemberReference : Mono.Cecil.IMemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberReference</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MemberReference (string name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public virtual string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml
deleted file mode 100644 (file)
index c880e8a..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="MemberReferenceCollection" FullName="Mono.Cecil.MemberReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class MemberReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MemberReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MemberReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MemberReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml
deleted file mode 100644 (file)
index 5fda935..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-<Type Name="MethodAttributes" FullName="Mono.Cecil.MethodAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Abstract">
-      <MemberSignature Language="C#" Value="Abstract" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Assem">
-      <MemberSignature Language="C#" Value="Assem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Compilercontrolled">
-      <MemberSignature Language="C#" Value="Compilercontrolled" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamANDAssem">
-      <MemberSignature Language="C#" Value="FamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Family">
-      <MemberSignature Language="C#" Value="Family" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamORAssem">
-      <MemberSignature Language="C#" Value="FamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Final">
-      <MemberSignature Language="C#" Value="Final" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="HasSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HideBySig">
-      <MemberSignature Language="C#" Value="HideBySig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberAccessMask">
-      <MemberSignature Language="C#" Value="MemberAccessMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NewSlot">
-      <MemberSignature Language="C#" Value="NewSlot" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeImpl">
-      <MemberSignature Language="C#" Value="PInvokeImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequireSecObject">
-      <MemberSignature Language="C#" Value="RequireSecObject" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReuseSlot">
-      <MemberSignature Language="C#" Value="ReuseSlot" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Static">
-      <MemberSignature Language="C#" Value="Static" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Strict">
-      <MemberSignature Language="C#" Value="Strict" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UnmanagedExport">
-      <MemberSignature Language="C#" Value="UnmanagedExport" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Virtual">
-      <MemberSignature Language="C#" Value="Virtual" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VtableLayoutMask">
-      <MemberSignature Language="C#" Value="VtableLayoutMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml
deleted file mode 100644 (file)
index 49e47e1..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<Type Name="MethodCallingConvention" FullName="Mono.Cecil.MethodCallingConvention">
-  <TypeSignature Language="C#" Value="public enum MethodCallingConvention" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="C">
-      <MemberSignature Language="C#" Value="C" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Default">
-      <MemberSignature Language="C#" Value="Default" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FastCall">
-      <MemberSignature Language="C#" Value="FastCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Generic">
-      <MemberSignature Language="C#" Value="Generic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StdCall">
-      <MemberSignature Language="C#" Value="StdCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ThisCall">
-      <MemberSignature Language="C#" Value="ThisCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VarArg">
-      <MemberSignature Language="C#" Value="VarArg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml
deleted file mode 100644 (file)
index c411788..0000000
+++ /dev/null
@@ -1,928 +0,0 @@
-<Type Name="MethodDefinition" FullName="Mono.Cecil.MethodDefinition">
-  <TypeSignature Language="C#" Value="public sealed class MethodDefinition : Mono.Cecil.MethodReference, Mono.Cecil.IHasSecurity, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinition (string name, Mono.Cecil.MethodAttributes attrs, Mono.Cecil.TypeReference returnType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="attrs" Type="Mono.Cecil.MethodAttributes" />
-        <Parameter Name="returnType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="returnType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinition (string name, Mono.Cecil.Binary.RVA rva, Mono.Cecil.MethodAttributes attrs, Mono.Cecil.MethodImplAttributes implAttrs, bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="attrs" Type="Mono.Cecil.MethodAttributes" />
-        <Parameter Name="implAttrs" Type="Mono.Cecil.MethodImplAttributes" />
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="rva">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="implAttrs">To be added.</param>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Body">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Body { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cctor">
-      <MemberSignature Language="C#" Value="public const string Cctor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ctor">
-      <MemberSignature Language="C#" Value="public const string Ctor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasBody">
-      <MemberSignature Language="C#" Value="public bool HasBody { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasOverrides">
-      <MemberSignature Language="C#" Value="public bool HasOverrides { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="public bool HasSecurity { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImplAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodImplAttributes ImplAttributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAbstract">
-      <MemberSignature Language="C#" Value="public bool IsAbstract { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAddOn">
-      <MemberSignature Language="C#" Value="public bool IsAddOn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAssembly">
-      <MemberSignature Language="C#" Value="public bool IsAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCompilerControlled">
-      <MemberSignature Language="C#" Value="public bool IsCompilerControlled { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsConstructor">
-      <MemberSignature Language="C#" Value="public bool IsConstructor { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamily">
-      <MemberSignature Language="C#" Value="public bool IsFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFinal">
-      <MemberSignature Language="C#" Value="public bool IsFinal { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFire">
-      <MemberSignature Language="C#" Value="public bool IsFire { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsForwardRef">
-      <MemberSignature Language="C#" Value="public bool IsForwardRef { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsGetter">
-      <MemberSignature Language="C#" Value="public bool IsGetter { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsHideBySig">
-      <MemberSignature Language="C#" Value="public bool IsHideBySig { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsIL">
-      <MemberSignature Language="C#" Value="public bool IsIL { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInternalCall">
-      <MemberSignature Language="C#" Value="public bool IsInternalCall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsManaged">
-      <MemberSignature Language="C#" Value="public bool IsManaged { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNative">
-      <MemberSignature Language="C#" Value="public bool IsNative { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNewSlot">
-      <MemberSignature Language="C#" Value="public bool IsNewSlot { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOther">
-      <MemberSignature Language="C#" Value="public bool IsOther { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPInvokeImpl">
-      <MemberSignature Language="C#" Value="public bool IsPInvokeImpl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPreserveSig">
-      <MemberSignature Language="C#" Value="public bool IsPreserveSig { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRemoveOn">
-      <MemberSignature Language="C#" Value="public bool IsRemoveOn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsReuseSlot">
-      <MemberSignature Language="C#" Value="public bool IsReuseSlot { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntime">
-      <MemberSignature Language="C#" Value="public bool IsRuntime { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSetter">
-      <MemberSignature Language="C#" Value="public bool IsSetter { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStatic">
-      <MemberSignature Language="C#" Value="public bool IsStatic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStrict">
-      <MemberSignature Language="C#" Value="public bool IsStrict { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnmanaged">
-      <MemberSignature Language="C#" Value="public bool IsUnmanaged { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnmanagedExport">
-      <MemberSignature Language="C#" Value="public bool IsUnmanagedExport { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsVirtual">
-      <MemberSignature Language="C#" Value="public bool IsVirtual { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NoInlining">
-      <MemberSignature Language="C#" Value="public bool NoInlining { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Overrides">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.OverrideCollection Overrides { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.OverrideCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeInfo">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeInfo PInvokeInfo { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeInfo</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SemanticsAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodSemanticsAttributes SemanticsAttributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="This">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition This { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml
deleted file mode 100644 (file)
index ae590c1..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-<Type Name="MethodDefinitionCollection" FullName="Mono.Cecil.MethodDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class MethodDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition[] GetMethod (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Mono.Cecil.TypeReference[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="Mono.Cecil.TypeReference[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Type[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="System.Type[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml
deleted file mode 100644 (file)
index 0811129..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-<Type Name="MethodImplAttributes" FullName="Mono.Cecil.MethodImplAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodImplAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CodeTypeMask">
-      <MemberSignature Language="C#" Value="CodeTypeMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ForwardRef">
-      <MemberSignature Language="C#" Value="ForwardRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IL">
-      <MemberSignature Language="C#" Value="IL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InternalCall">
-      <MemberSignature Language="C#" Value="InternalCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Managed">
-      <MemberSignature Language="C#" Value="Managed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedMask">
-      <MemberSignature Language="C#" Value="ManagedMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxMethodImplVal">
-      <MemberSignature Language="C#" Value="MaxMethodImplVal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Native">
-      <MemberSignature Language="C#" Value="Native" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NoInlining">
-      <MemberSignature Language="C#" Value="NoInlining" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OPTIL">
-      <MemberSignature Language="C#" Value="OPTIL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreserveSig">
-      <MemberSignature Language="C#" Value="PreserveSig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Runtime">
-      <MemberSignature Language="C#" Value="Runtime" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Synchronized">
-      <MemberSignature Language="C#" Value="Synchronized" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unmanaged">
-      <MemberSignature Language="C#" Value="Unmanaged" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml
deleted file mode 100644 (file)
index 63fad7a..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-<Type Name="MethodReference" FullName="Mono.Cecil.MethodReference">
-  <TypeSignature Language="C#" Value="public class MethodReference : Mono.Cecil.MemberReference, Mono.Cecil.IGenericParameterProvider, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericParameterProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodReference (string name, Mono.Cecil.TypeReference declaringType, Mono.Cecil.TypeReference returnType, bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="declaringType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="returnType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="declaringType">To be added.</param>
-        <param name="returnType">To be added.</param>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public virtual bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalMethod">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReference GetOriginalMethod ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public virtual bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public virtual bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml
deleted file mode 100644 (file)
index 57524fc..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="MethodReturnType" FullName="Mono.Cecil.MethodReturnType">
-  <TypeSignature Language="C#" Value="public sealed class MethodReturnType : Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodReturnType (Mono.Cecil.TypeReference retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="retType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml
deleted file mode 100644 (file)
index 47c6a6c..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="MethodSemanticsAttributes" FullName="Mono.Cecil.MethodSemanticsAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodSemanticsAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="AddOn">
-      <MemberSignature Language="C#" Value="AddOn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fire">
-      <MemberSignature Language="C#" Value="Fire" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Getter">
-      <MemberSignature Language="C#" Value="Getter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="Other" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveOn">
-      <MemberSignature Language="C#" Value="RemoveOn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Setter">
-      <MemberSignature Language="C#" Value="Setter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml
deleted file mode 100644 (file)
index a5fa719..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-<Type Name="MethodSpecification" FullName="Mono.Cecil.MethodSpecification">
-  <TypeSignature Language="C#" Value="public abstract class MethodSpecification : Mono.Cecil.MethodReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeReference DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElementMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference ElementMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public override bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalMethod">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodReference GetOriginalMethod ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public override bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public override bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml
deleted file mode 100644 (file)
index 7ea99e7..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<Type Name="ModType" FullName="Mono.Cecil.ModType">
-  <TypeSignature Language="C#" Value="public abstract class ModType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModType (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected abstract string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ModifierType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml
deleted file mode 100644 (file)
index cd883a2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<Type Name="ModifierOptional" FullName="Mono.Cecil.ModifierOptional">
-  <TypeSignature Language="C#" Value="public sealed class ModifierOptional : Mono.Cecil.ModType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModifierOptional (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected override string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml
deleted file mode 100644 (file)
index ac86ae0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<Type Name="ModifierRequired" FullName="Mono.Cecil.ModifierRequired">
-  <TypeSignature Language="C#" Value="public sealed class ModifierRequired : Mono.Cecil.ModType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModifierRequired (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected override string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml
deleted file mode 100644 (file)
index 540bde6..0000000
+++ /dev/null
@@ -1,1063 +0,0 @@
-<Type Name="ModuleDefinition" FullName="Mono.Cecil.ModuleDefinition">
-  <TypeSignature Language="C#" Value="public sealed class ModuleDefinition : Mono.Cecil.ModuleReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModuleReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinition (string name, Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinition (string name, Mono.Cecil.AssemblyDefinition asm, bool main);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="main" Type="System.Boolean" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="asm">To be added.</param>
-        <param name="main">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Assembly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReferenceCollection AssemblyReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExternTypes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ExternTypeCollection ExternTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ExternTypeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FromByteArray">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute FromByteArray (Mono.Cecil.MethodReference ctor, byte[] data);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="data" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <param name="data">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FromByteArray">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration FromByteArray (Mono.Cecil.SecurityAction action, byte[] declaration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-        <Parameter Name="declaration" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <param name="declaration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullLoad">
-      <MemberSignature Language="C#" Value="public void FullLoad ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAsByteArray">
-      <MemberSignature Language="C#" Value="public byte[] GetAsByteArray (Mono.Cecil.CustomAttribute ca);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ca" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="ca">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAsByteArray">
-      <MemberSignature Language="C#" Value="public byte[] GetAsByteArray (Mono.Cecil.SecurityDeclaration dec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dec" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="dec">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Image">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Image Image { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (System.Reflection.MethodBase meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="System.Reflection.MethodBase" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (System.Reflection.MethodBase meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="System.Reflection.MethodBase" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Inject (Mono.Cecil.FieldDefinition field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Inject (Mono.Cecil.MethodDefinition meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Inject (Mono.Cecil.FieldDefinition field, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Inject (Mono.Cecil.MethodDefinition meth, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadSymbols">
-      <MemberSignature Language="C#" Value="public void LoadSymbols ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadSymbols">
-      <MemberSignature Language="C#" Value="public void LoadSymbols (Mono.Cecil.Cil.ISymbolReader reader);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="Mono.Cecil.Cil.ISymbolReader" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LookupByToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMetadataTokenProvider LookupByToken (Mono.Cecil.Metadata.MetadataToken token);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataTokenProvider</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="token" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="token">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LookupByToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMetadataTokenProvider LookupByToken (Mono.Cecil.Metadata.TokenType table, int rid);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataTokenProvider</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TokenType" />
-        <Parameter Name="rid" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <param name="rid">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Main">
-      <MemberSignature Language="C#" Value="public bool Main { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MemberReferenceCollection MemberReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MemberReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReferenceCollection ModuleReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mvid">
-      <MemberSignature Language="C#" Value="public Guid Mvid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ResourceCollection Resources { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ResourceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (Mono.Cecil.Cil.ISymbolWriter writer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="Mono.Cecil.Cil.ISymbolWriter" />
-      </Parameters>
-      <Docs>
-        <param name="writer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (string outputDirectory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="outputDirectory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="outputDirectory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (string outputDirectory, Mono.Cecil.Cil.ISymbolWriter writer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="outputDirectory" Type="System.String" />
-        <Parameter Name="writer" Type="Mono.Cecil.Cil.ISymbolWriter" />
-      </Parameters>
-      <Docs>
-        <param name="outputDirectory">To be added.</param>
-        <param name="writer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReferenceCollection TypeReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Types">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinitionCollection Types { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml
deleted file mode 100644 (file)
index 83e7303..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ModuleDefinitionCollection" FullName="Mono.Cecil.ModuleDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ModuleDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinitionCollection (Mono.Cecil.AssemblyDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml
deleted file mode 100644 (file)
index fdea3f5..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<Type Name="ModuleReference" FullName="Mono.Cecil.ModuleReference">
-  <TypeSignature Language="C#" Value="public class ModuleReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataScope, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataScope</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleReference (string name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml
deleted file mode 100644 (file)
index a0e1dff..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ModuleReferenceCollection" FullName="Mono.Cecil.ModuleReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class ModuleReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml
deleted file mode 100644 (file)
index 3855939..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-<Type Name="NativeType" FullName="Mono.Cecil.NativeType">
-  <TypeSignature Language="C#" Value="public enum NativeType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ANSIBSTR">
-      <MemberSignature Language="C#" Value="ANSIBSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ARRAY">
-      <MemberSignature Language="C#" Value="ARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ASANY">
-      <MemberSignature Language="C#" Value="ASANY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BOOLEAN">
-      <MemberSignature Language="C#" Value="BOOLEAN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BSTR">
-      <MemberSignature Language="C#" Value="BSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BYVALSTR">
-      <MemberSignature Language="C#" Value="BYVALSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CURRENCY">
-      <MemberSignature Language="C#" Value="CURRENCY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CUSTOMMARSHALER">
-      <MemberSignature Language="C#" Value="CUSTOMMARSHALER" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ERROR">
-      <MemberSignature Language="C#" Value="ERROR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FIXEDARRAY">
-      <MemberSignature Language="C#" Value="FIXEDARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FIXEDSYSSTRING">
-      <MemberSignature Language="C#" Value="FIXEDSYSSTRING" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FUNC">
-      <MemberSignature Language="C#" Value="FUNC" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I8">
-      <MemberSignature Language="C#" Value="I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IDISPATCH">
-      <MemberSignature Language="C#" Value="IDISPATCH" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INT">
-      <MemberSignature Language="C#" Value="INT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INTF">
-      <MemberSignature Language="C#" Value="INTF" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IUNKNOWN">
-      <MemberSignature Language="C#" Value="IUNKNOWN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPSTR">
-      <MemberSignature Language="C#" Value="LPSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPSTRUCT">
-      <MemberSignature Language="C#" Value="LPSTRUCT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPTSTR">
-      <MemberSignature Language="C#" Value="LPTSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPWSTR">
-      <MemberSignature Language="C#" Value="LPWSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MAX">
-      <MemberSignature Language="C#" Value="MAX" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NONE">
-      <MemberSignature Language="C#" Value="NONE" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SAFEARRAY">
-      <MemberSignature Language="C#" Value="SAFEARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="STRUCT">
-      <MemberSignature Language="C#" Value="STRUCT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TBSTR">
-      <MemberSignature Language="C#" Value="TBSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U1">
-      <MemberSignature Language="C#" Value="U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U2">
-      <MemberSignature Language="C#" Value="U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U4">
-      <MemberSignature Language="C#" Value="U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U8">
-      <MemberSignature Language="C#" Value="U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UINT">
-      <MemberSignature Language="C#" Value="UINT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VARIANTBOOL">
-      <MemberSignature Language="C#" Value="VARIANTBOOL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml
deleted file mode 100644 (file)
index 2f81fd2..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-<Type Name="NestedTypeCollection" FullName="Mono.Cecil.NestedTypeCollection">
-  <TypeSignature Language="C#" Value="public sealed class NestedTypeCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NestedTypeCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml
deleted file mode 100644 (file)
index b59434f..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="OverrideCollection" FullName="Mono.Cecil.OverrideCollection">
-  <TypeSignature Language="C#" Value="public sealed class OverrideCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public OverrideCollection (Mono.Cecil.MethodDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml
deleted file mode 100644 (file)
index a11db21..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-<Type Name="PInvokeAttributes" FullName="Mono.Cecil.PInvokeAttributes">
-  <TypeSignature Language="C#" Value="public enum PInvokeAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallConvCdecl">
-      <MemberSignature Language="C#" Value="CallConvCdecl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvFastcall">
-      <MemberSignature Language="C#" Value="CallConvFastcall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvMask">
-      <MemberSignature Language="C#" Value="CallConvMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvStdCall">
-      <MemberSignature Language="C#" Value="CallConvStdCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvThiscall">
-      <MemberSignature Language="C#" Value="CallConvThiscall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvWinapi">
-      <MemberSignature Language="C#" Value="CallConvWinapi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetAnsi">
-      <MemberSignature Language="C#" Value="CharSetAnsi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetAuto">
-      <MemberSignature Language="C#" Value="CharSetAuto" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetMask">
-      <MemberSignature Language="C#" Value="CharSetMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetNotSpec">
-      <MemberSignature Language="C#" Value="CharSetNotSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetUnicode">
-      <MemberSignature Language="C#" Value="CharSetUnicode" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NoMangle">
-      <MemberSignature Language="C#" Value="NoMangle" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SupportsLastError">
-      <MemberSignature Language="C#" Value="SupportsLastError" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml
deleted file mode 100644 (file)
index f5627e3..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-<Type Name="PInvokeInfo" FullName="Mono.Cecil.PInvokeInfo">
-  <TypeSignature Language="C#" Value="public sealed class PInvokeInfo : Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PInvokeInfo (Mono.Cecil.MethodDefinition meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PInvokeInfo (Mono.Cecil.MethodDefinition meth, Mono.Cecil.PInvokeAttributes attrs, string entryPoint, Mono.Cecil.ModuleReference mod);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="attrs" Type="Mono.Cecil.PInvokeAttributes" />
-        <Parameter Name="entryPoint" Type="System.String" />
-        <Parameter Name="mod" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="entryPoint">To be added.</param>
-        <param name="mod">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public string EntryPoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvCdecl">
-      <MemberSignature Language="C#" Value="public bool IsCallConvCdecl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvFastcall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvFastcall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvStdCall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvStdCall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvThiscall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvThiscall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvWinapi">
-      <MemberSignature Language="C#" Value="public bool IsCallConvWinapi { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetAnsi">
-      <MemberSignature Language="C#" Value="public bool IsCharSetAnsi { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetAuto">
-      <MemberSignature Language="C#" Value="public bool IsCharSetAuto { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetNotSpec">
-      <MemberSignature Language="C#" Value="public bool IsCharSetNotSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetUnicode">
-      <MemberSignature Language="C#" Value="public bool IsCharSetUnicode { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNoMangle">
-      <MemberSignature Language="C#" Value="public bool IsNoMangle { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReference Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SupportsLastError">
-      <MemberSignature Language="C#" Value="public bool SupportsLastError { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml
deleted file mode 100644 (file)
index deebc7c..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="ParameterAttributes" FullName="Mono.Cecil.ParameterAttributes">
-  <TypeSignature Language="C#" Value="public enum ParameterAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="In">
-      <MemberSignature Language="C#" Value="In" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Lcid">
-      <MemberSignature Language="C#" Value="Lcid" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Optional">
-      <MemberSignature Language="C#" Value="Optional" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Out">
-      <MemberSignature Language="C#" Value="Out" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Retval">
-      <MemberSignature Language="C#" Value="Retval" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unused">
-      <MemberSignature Language="C#" Value="Unused" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml
deleted file mode 100644 (file)
index 756a55c..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-<Type Name="ParameterDefinition" FullName="Mono.Cecil.ParameterDefinition">
-  <TypeSignature Language="C#" Value="public sealed class ParameterDefinition : Mono.Cecil.ParameterReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ParameterReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinition (Mono.Cecil.TypeReference paramType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="paramType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="paramType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinition (string name, int seq, Mono.Cecil.ParameterAttributes attrs, Mono.Cecil.TypeReference paramType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="seq" Type="System.Int32" />
-        <Parameter Name="attrs" Type="Mono.Cecil.ParameterAttributes" />
-        <Parameter Name="paramType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="seq">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="paramType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsIn">
-      <MemberSignature Language="C#" Value="public bool IsIn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsLcid">
-      <MemberSignature Language="C#" Value="public bool IsLcid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOptional">
-      <MemberSignature Language="C#" Value="public bool IsOptional { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOut">
-      <MemberSignature Language="C#" Value="public bool IsOut { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRetval">
-      <MemberSignature Language="C#" Value="public bool IsRetval { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml
deleted file mode 100644 (file)
index 9a824b5..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ParameterDefinitionCollection" FullName="Mono.Cecil.ParameterDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ParameterDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinitionCollection (Mono.Cecil.IMemberReference container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IMemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMemberReference Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMemberReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml
deleted file mode 100644 (file)
index dad3222..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<Type Name="ParameterReference" FullName="Mono.Cecil.ParameterReference">
-  <TypeSignature Language="C#" Value="public abstract class ParameterReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterReference (string name, int sequence, Mono.Cecil.TypeReference parameterType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="sequence" Type="System.Int32" />
-        <Parameter Name="parameterType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="sequence">To be added.</param>
-        <param name="parameterType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParameterType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ParameterType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.ParameterDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sequence">
-      <MemberSignature Language="C#" Value="public int Sequence { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml
deleted file mode 100644 (file)
index 8499be0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="PinnedType" FullName="Mono.Cecil.PinnedType">
-  <TypeSignature Language="C#" Value="public sealed class PinnedType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PinnedType (Mono.Cecil.TypeReference pType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="pType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="pType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml
deleted file mode 100644 (file)
index 2766c65..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<Type Name="PointerType" FullName="Mono.Cecil.PointerType">
-  <TypeSignature Language="C#" Value="public sealed class PointerType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PointerType (Mono.Cecil.TypeReference pType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="pType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="pType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml
deleted file mode 100644 (file)
index fa9dce9..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="PropertyAttributes" FullName="Mono.Cecil.PropertyAttributes">
-  <TypeSignature Language="C#" Value="public enum PropertyAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unused">
-      <MemberSignature Language="C#" Value="Unused" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml
deleted file mode 100644 (file)
index 9742191..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-<Type Name="PropertyDefinition" FullName="Mono.Cecil.PropertyDefinition">
-  <TypeSignature Language="C#" Value="public sealed class PropertyDefinition : Mono.Cecil.PropertyReference, Mono.Cecil.IHasConstant, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.PropertyReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyDefinition (string name, Mono.Cecil.TypeReference propertyType, Mono.Cecil.PropertyAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="propertyType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.PropertyAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="propertyType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateGetMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateGetMethod (Mono.Cecil.PropertyDefinition prop);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="prop" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="prop">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateSetMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateSetMethod (Mono.Cecil.PropertyDefinition prop);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="prop" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="prop">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public override bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.PropertyDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition SetMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml
deleted file mode 100644 (file)
index 7e8b76b..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="PropertyDefinitionCollection" FullName="Mono.Cecil.PropertyDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class PropertyDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetProperties">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition[] GetProperties (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml
deleted file mode 100644 (file)
index 1da1bbd..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="PropertyReference" FullName="Mono.Cecil.PropertyReference">
-  <TypeSignature Language="C#" Value="public abstract class PropertyReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyReference (string name, Mono.Cecil.TypeReference propertyType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="propertyType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="propertyType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public abstract bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="m_parameters">
-      <MemberSignature Language="C#" Value="protected Mono.Cecil.ParameterDefinitionCollection m_parameters;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PropertyType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference PropertyType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.PropertyDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml
deleted file mode 100644 (file)
index df6ff9f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<Type Name="ReferenceType" FullName="Mono.Cecil.ReferenceType">
-  <TypeSignature Language="C#" Value="public sealed class ReferenceType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ReferenceType (Mono.Cecil.TypeReference type);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml
deleted file mode 100644 (file)
index 6b151bf..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="ReflectionException" FullName="Mono.Cecil.ReflectionException">
-  <TypeSignature Language="C#" Value="public sealed class ReflectionException : Mono.Cecil.Metadata.MetadataFormatException" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataFormatException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml
deleted file mode 100644 (file)
index 52543fc..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<Type Name="Resource" FullName="Mono.Cecil.Resource">
-  <TypeSignature Language="C#" Value="public abstract class Resource : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ManifestResourceAttributes Flags { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml
deleted file mode 100644 (file)
index 1bdd077..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ResourceCollection" FullName="Mono.Cecil.ResourceCollection">
-  <TypeSignature Language="C#" Value="public sealed class ResourceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Resource this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Resource</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml
deleted file mode 100644 (file)
index 2d3895d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="SafeArraySpec" FullName="Mono.Cecil.SafeArraySpec">
-  <TypeSignature Language="C#" Value="public sealed class SafeArraySpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SafeArraySpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.VariantType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml
deleted file mode 100644 (file)
index f19ef52..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-<Type Name="SecurityAction" FullName="Mono.Cecil.SecurityAction">
-  <TypeSignature Language="C#" Value="public enum SecurityAction" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assert">
-      <MemberSignature Language="C#" Value="Assert" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Demand">
-      <MemberSignature Language="C#" Value="Demand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Deny">
-      <MemberSignature Language="C#" Value="Deny" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InheritDemand">
-      <MemberSignature Language="C#" Value="InheritDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LinkDemand">
-      <MemberSignature Language="C#" Value="LinkDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasDemand">
-      <MemberSignature Language="C#" Value="NonCasDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasInheritance">
-      <MemberSignature Language="C#" Value="NonCasInheritance" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasLinkDemand">
-      <MemberSignature Language="C#" Value="NonCasLinkDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PermitOnly">
-      <MemberSignature Language="C#" Value="PermitOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreJitDeny">
-      <MemberSignature Language="C#" Value="PreJitDeny" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreJitGrant">
-      <MemberSignature Language="C#" Value="PreJitGrant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Request">
-      <MemberSignature Language="C#" Value="Request" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestMinimum">
-      <MemberSignature Language="C#" Value="RequestMinimum" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestOptional">
-      <MemberSignature Language="C#" Value="RequestOptional" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestRefuse">
-      <MemberSignature Language="C#" Value="RequestRefuse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml
deleted file mode 100644 (file)
index e3473a7..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-<Type Name="SecurityDeclaration" FullName="Mono.Cecil.SecurityDeclaration">
-  <TypeSignature Language="C#" Value="public sealed class SecurityDeclaration : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionVisitable, Mono.Cecil.IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IRequireResolving</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SecurityDeclaration (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Action">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityAction Action { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PermissionSet">
-      <MemberSignature Language="C#" Value="public System.Security.PermissionSet PermissionSet { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Security.PermissionSet</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml
deleted file mode 100644 (file)
index d62c36d..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-<Type Name="SecurityDeclarationCollection" FullName="Mono.Cecil.SecurityDeclarationCollection">
-  <TypeSignature Language="C#" Value="public sealed class SecurityDeclarationCollection : Mono.Cecil.IReflectionVisitable, System.Collections.IEnumerable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IEnumerable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SecurityDeclarationCollection (Mono.Cecil.IHasSecurity container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasSecurity" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.SecurityDeclaration value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IHasSecurity Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IHasSecurity</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.SecurityDeclaration value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration this[Mono.Cecil.SecurityAction action] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml
deleted file mode 100644 (file)
index cb2baf7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="SentinelType" FullName="Mono.Cecil.SentinelType">
-  <TypeSignature Language="C#" Value="public sealed class SentinelType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SentinelType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml
deleted file mode 100644 (file)
index 66b2f8b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<Type Name="TargetRuntime" FullName="Mono.Cecil.TargetRuntime">
-  <TypeSignature Language="C#" Value="public enum TargetRuntime" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="NET_1_0">
-      <MemberSignature Language="C#" Value="NET_1_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_1_1">
-      <MemberSignature Language="C#" Value="NET_1_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_2_0">
-      <MemberSignature Language="C#" Value="NET_2_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_4_0">
-      <MemberSignature Language="C#" Value="NET_4_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml
deleted file mode 100644 (file)
index 791fc6a..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-<Type Name="TypeAttributes" FullName="Mono.Cecil.TypeAttributes">
-  <TypeSignature Language="C#" Value="public enum TypeAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Abstract">
-      <MemberSignature Language="C#" Value="Abstract" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AnsiClass">
-      <MemberSignature Language="C#" Value="AnsiClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AutoClass">
-      <MemberSignature Language="C#" Value="AutoClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AutoLayout">
-      <MemberSignature Language="C#" Value="AutoLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BeforeFieldInit">
-      <MemberSignature Language="C#" Value="BeforeFieldInit" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="Class" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSemanticMask">
-      <MemberSignature Language="C#" Value="ClassSemanticMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitLayout">
-      <MemberSignature Language="C#" Value="ExplicitLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="HasSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="Import" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Interface">
-      <MemberSignature Language="C#" Value="Interface" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LayoutMask">
-      <MemberSignature Language="C#" Value="LayoutMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedAssembly">
-      <MemberSignature Language="C#" Value="NestedAssembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamANDAssem">
-      <MemberSignature Language="C#" Value="NestedFamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamily">
-      <MemberSignature Language="C#" Value="NestedFamily" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamORAssem">
-      <MemberSignature Language="C#" Value="NestedFamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedPrivate">
-      <MemberSignature Language="C#" Value="NestedPrivate" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedPublic">
-      <MemberSignature Language="C#" Value="NestedPublic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotPublic">
-      <MemberSignature Language="C#" Value="NotPublic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sealed">
-      <MemberSignature Language="C#" Value="Sealed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SequentialLayout">
-      <MemberSignature Language="C#" Value="SequentialLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Serializable">
-      <MemberSignature Language="C#" Value="Serializable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StringFormatMask">
-      <MemberSignature Language="C#" Value="StringFormatMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UnicodeClass">
-      <MemberSignature Language="C#" Value="UnicodeClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VisibilityMask">
-      <MemberSignature Language="C#" Value="VisibilityMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml
deleted file mode 100644 (file)
index 21edcd2..0000000
+++ /dev/null
@@ -1,815 +0,0 @@
-<Type Name="TypeDefinition" FullName="Mono.Cecil.TypeDefinition">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefinition : Mono.Cecil.TypeReference, Mono.Cecil.IHasSecurity, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeDefinition (string name, string ns, Mono.Cecil.TypeAttributes attributes, Mono.Cecil.TypeReference baseType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="attributes" Type="Mono.Cecil.TypeAttributes" />
-        <Parameter Name="baseType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <param name="attributes">To be added.</param>
-        <param name="baseType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference BaseType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSize">
-      <MemberSignature Language="C#" Value="public uint ClassSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constructors">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ConstructorCollection Constructors { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ConstructorCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Events">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinitionCollection Events { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Fields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinitionCollection Fields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstructors">
-      <MemberSignature Language="C#" Value="public bool HasConstructors { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasEvents">
-      <MemberSignature Language="C#" Value="public bool HasEvents { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFields">
-      <MemberSignature Language="C#" Value="public bool HasFields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasInterfaces">
-      <MemberSignature Language="C#" Value="public bool HasInterfaces { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLayoutInfo">
-      <MemberSignature Language="C#" Value="public bool HasLayoutInfo { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasMethods">
-      <MemberSignature Language="C#" Value="public bool HasMethods { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasNestedTypes">
-      <MemberSignature Language="C#" Value="public bool HasNestedTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasProperties">
-      <MemberSignature Language="C#" Value="public bool HasProperties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="public bool HasSecurity { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Interfaces">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.InterfaceCollection Interfaces { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.InterfaceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAbstract">
-      <MemberSignature Language="C#" Value="public bool IsAbstract { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAnsiClass">
-      <MemberSignature Language="C#" Value="public bool IsAnsiClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAutoClass">
-      <MemberSignature Language="C#" Value="public bool IsAutoClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAutoLayout">
-      <MemberSignature Language="C#" Value="public bool IsAutoLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsBeforeFieldInit">
-      <MemberSignature Language="C#" Value="public bool IsBeforeFieldInit { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsClass">
-      <MemberSignature Language="C#" Value="public bool IsClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsEnum">
-      <MemberSignature Language="C#" Value="public bool IsEnum { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsExplicitLayout">
-      <MemberSignature Language="C#" Value="public bool IsExplicitLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsImport">
-      <MemberSignature Language="C#" Value="public bool IsImport { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInterface">
-      <MemberSignature Language="C#" Value="public bool IsInterface { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamily">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedPrivate">
-      <MemberSignature Language="C#" Value="public bool IsNestedPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedPublic">
-      <MemberSignature Language="C#" Value="public bool IsNestedPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNotPublic">
-      <MemberSignature Language="C#" Value="public bool IsNotPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSealed">
-      <MemberSignature Language="C#" Value="public bool IsSealed { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSequentialLayout">
-      <MemberSignature Language="C#" Value="public bool IsSequentialLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSerializable">
-      <MemberSignature Language="C#" Value="public bool IsSerializable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnicodeClass">
-      <MemberSignature Language="C#" Value="public bool IsUnicodeClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Methods">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinitionCollection Methods { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedTypes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NestedTypeCollection NestedTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NestedTypeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PackingSize">
-      <MemberSignature Language="C#" Value="public ushort PackingSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Properties">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinitionCollection Properties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml
deleted file mode 100644 (file)
index 36ce5a8..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="TypeDefinitionCollection" FullName="Mono.Cecil.TypeDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefinitionCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeDefinitionCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml
deleted file mode 100644 (file)
index 252f83f..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-<Type Name="TypeReference" FullName="Mono.Cecil.TypeReference">
-  <TypeSignature Language="C#" Value="public class TypeReference : Mono.Cecil.MemberReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IGenericParameterProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericParameterProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected TypeReference (string name, string ns);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeReference (string name, string ns, Mono.Cecil.IMetadataScope scope, bool valueType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="scope" Type="Mono.Cecil.IMetadataScope" />
-        <Parameter Name="valueType" Type="System.Boolean" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <param name="scope">To be added.</param>
-        <param name="valueType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public virtual string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference GetOriginalType ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNested">
-      <MemberSignature Language="C#" Value="public bool IsNested { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public virtual bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="m_isValueType">
-      <MemberSignature Language="C#" Value="protected bool m_isValueType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.ModuleDefinition Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public virtual string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml
deleted file mode 100644 (file)
index 5c037e7..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="TypeReferenceCollection" FullName="Mono.Cecil.TypeReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class TypeReferenceCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml
deleted file mode 100644 (file)
index 5778c29..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="TypeSpecification" FullName="Mono.Cecil.TypeSpecification">
-  <TypeSignature Language="C#" Value="public abstract class TypeSpecification : Mono.Cecil.TypeReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ElementType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ElementType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeReference GetOriginalType ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ModuleDefinition Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml
deleted file mode 100644 (file)
index ae4d673..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-<Type Name="VariantType" FullName="Mono.Cecil.VariantType">
-  <TypeSignature Language="C#" Value="public enum VariantType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="BOOL">
-      <MemberSignature Language="C#" Value="BOOL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BSTR">
-      <MemberSignature Language="C#" Value="BSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CY">
-      <MemberSignature Language="C#" Value="CY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DATE">
-      <MemberSignature Language="C#" Value="DATE" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DECIMAL">
-      <MemberSignature Language="C#" Value="DECIMAL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DISPATCH">
-      <MemberSignature Language="C#" Value="DISPATCH" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ERROR">
-      <MemberSignature Language="C#" Value="ERROR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INT">
-      <MemberSignature Language="C#" Value="INT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI1">
-      <MemberSignature Language="C#" Value="UI1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI2">
-      <MemberSignature Language="C#" Value="UI2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI4">
-      <MemberSignature Language="C#" Value="UI4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UINT">
-      <MemberSignature Language="C#" Value="UINT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UNKNOWN">
-      <MemberSignature Language="C#" Value="UNKNOWN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VARIANT">
-      <MemberSignature Language="C#" Value="VARIANT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/index.xml b/mcs/class/Mono.Cecil/Documentation/en/index.xml
deleted file mode 100644 (file)
index 5c339a1..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-<Overview>
-  <Assemblies>
-    <Assembly Name="Mono.Cecil" Version="0.6.9.0">
-      <Attributes>
-        <Attribute>
-          <AttributeName>System.CLSCompliant(false)</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyConfiguration("")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyCopyright("(C) 2005 - 2007, Jb Evain")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyDescription("Library for reading and writing CIL images")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyProduct("Mono.Cecil")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyTitle("Mono.Cecil")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
-        </Attribute>
-      </Attributes>
-    </Assembly>
-  </Assemblies>
-  <Remarks>To be added.</Remarks>
-  <Copyright>To be added.</Copyright>
-  <Types>
-    <Namespace Name="Mono.Cecil">
-      <Type Name="ArrayDimension" Kind="Class" />
-      <Type Name="ArrayDimensionCollection" Kind="Class" />
-      <Type Name="ArrayMarshalSpec" Kind="Class" />
-      <Type Name="ArrayType" Kind="Class" />
-      <Type Name="AssemblyDefinition" Kind="Class" />
-      <Type Name="AssemblyFactory" Kind="Class" />
-      <Type Name="AssemblyFlags" Kind="Enumeration" />
-      <Type Name="AssemblyHashAlgorithm" Kind="Enumeration" />
-      <Type Name="AssemblyKind" Kind="Enumeration" />
-      <Type Name="AssemblyLinkedResource" Kind="Class" />
-      <Type Name="AssemblyNameDefinition" Kind="Class" />
-      <Type Name="AssemblyNameReference" Kind="Class" />
-      <Type Name="AssemblyNameReferenceCollection" Kind="Class" />
-      <Type Name="BaseAssemblyResolver" Kind="Class" />
-      <Type Name="BaseReflectionVisitor" Kind="Class" />
-      <Type Name="BaseStructureVisitor" Kind="Class" />
-      <Type Name="CallSite" Kind="Class" />
-      <Type Name="Constants" Kind="Class" />
-      <Type Name="ConstraintCollection" Kind="Class" />
-      <Type Name="ConstructorCollection" Kind="Class" />
-      <Type Name="CustomAttribute" Kind="Class" />
-      <Type Name="CustomAttributeCollection" Kind="Class" />
-      <Type Name="CustomMarshalerSpec" Kind="Class" />
-      <Type Name="DefaultAssemblyResolver" Kind="Class" />
-      <Type Name="DefaultImporter" Kind="Class" />
-      <Type Name="EmbeddedResource" Kind="Class" />
-      <Type Name="EventAttributes" Kind="Enumeration" />
-      <Type Name="EventDefinition" Kind="Class" />
-      <Type Name="EventDefinitionCollection" Kind="Class" />
-      <Type Name="EventReference" Kind="Class" />
-      <Type Name="ExternTypeCollection" Kind="Class" />
-      <Type Name="FieldAttributes" Kind="Enumeration" />
-      <Type Name="FieldDefinition" Kind="Class" />
-      <Type Name="FieldDefinitionCollection" Kind="Class" />
-      <Type Name="FieldReference" Kind="Class" />
-      <Type Name="FileAttributes" Kind="Enumeration" />
-      <Type Name="FixedArraySpec" Kind="Class" />
-      <Type Name="FixedSysStringSpec" Kind="Class" />
-      <Type Name="FunctionPointerType" Kind="Class" />
-      <Type Name="GenericArgumentCollection" Kind="Class" />
-      <Type Name="GenericContext" Kind="Class" />
-      <Type Name="GenericInstanceMethod" Kind="Class" />
-      <Type Name="GenericInstanceType" Kind="Class" />
-      <Type Name="GenericParameter" Kind="Class" />
-      <Type Name="GenericParameterAttributes" Kind="Enumeration" />
-      <Type Name="GenericParameterCollection" Kind="Class" />
-      <Type Name="IAnnotationProvider" Kind="Interface" />
-      <Type Name="IAssemblyResolver" Kind="Interface" />
-      <Type Name="ICustomAttributeProvider" Kind="Interface" />
-      <Type Name="IGenericInstance" Kind="Interface" />
-      <Type Name="IGenericParameterProvider" Kind="Interface" />
-      <Type Name="IHasConstant" Kind="Interface" />
-      <Type Name="IHasMarshalSpec" Kind="Interface" />
-      <Type Name="IHasSecurity" Kind="Interface" />
-      <Type Name="IImporter" Kind="Interface" />
-      <Type Name="IMemberDefinition" Kind="Interface" />
-      <Type Name="IMemberReference" Kind="Interface" />
-      <Type Name="IMetadataScope" Kind="Interface" />
-      <Type Name="IMetadataTokenProvider" Kind="Interface" />
-      <Type Name="IMethodSignature" Kind="Interface" />
-      <Type Name="ImportContext" Kind="Class" />
-      <Type Name="InterfaceCollection" Kind="Class" />
-      <Type Name="IReflectionStructureVisitable" Kind="Interface" />
-      <Type Name="IReflectionStructureVisitor" Kind="Interface" />
-      <Type Name="IReflectionVisitable" Kind="Interface" />
-      <Type Name="IReflectionVisitor" Kind="Interface" />
-      <Type Name="IRequireResolving" Kind="Interface" />
-      <Type Name="LinkedResource" Kind="Class" />
-      <Type Name="ManifestResourceAttributes" Kind="Enumeration" />
-      <Type Name="MarshalSpec" Kind="Class" />
-      <Type Name="MemberReference" Kind="Class" />
-      <Type Name="MemberReferenceCollection" Kind="Class" />
-      <Type Name="MethodAttributes" Kind="Enumeration" />
-      <Type Name="MethodCallingConvention" Kind="Enumeration" />
-      <Type Name="MethodDefinition" Kind="Class" />
-      <Type Name="MethodDefinitionCollection" Kind="Class" />
-      <Type Name="MethodImplAttributes" Kind="Enumeration" />
-      <Type Name="MethodReference" Kind="Class" />
-      <Type Name="MethodReturnType" Kind="Class" />
-      <Type Name="MethodSemanticsAttributes" Kind="Enumeration" />
-      <Type Name="MethodSpecification" Kind="Class" />
-      <Type Name="ModifierOptional" Kind="Class" />
-      <Type Name="ModifierRequired" Kind="Class" />
-      <Type Name="ModType" Kind="Class" />
-      <Type Name="ModuleDefinition" Kind="Class" />
-      <Type Name="ModuleDefinitionCollection" Kind="Class" />
-      <Type Name="ModuleReference" Kind="Class" />
-      <Type Name="ModuleReferenceCollection" Kind="Class" />
-      <Type Name="NativeType" Kind="Enumeration" />
-      <Type Name="NestedTypeCollection" Kind="Class" />
-      <Type Name="OverrideCollection" Kind="Class" />
-      <Type Name="ParameterAttributes" Kind="Enumeration" />
-      <Type Name="ParameterDefinition" Kind="Class" />
-      <Type Name="ParameterDefinitionCollection" Kind="Class" />
-      <Type Name="ParameterReference" Kind="Class" />
-      <Type Name="PinnedType" Kind="Class" />
-      <Type Name="PInvokeAttributes" Kind="Enumeration" />
-      <Type Name="PInvokeInfo" Kind="Class" />
-      <Type Name="PointerType" Kind="Class" />
-      <Type Name="PropertyAttributes" Kind="Enumeration" />
-      <Type Name="PropertyDefinition" Kind="Class" />
-      <Type Name="PropertyDefinitionCollection" Kind="Class" />
-      <Type Name="PropertyReference" Kind="Class" />
-      <Type Name="ReferenceType" Kind="Class" />
-      <Type Name="ReflectionException" Kind="Class" />
-      <Type Name="Resource" Kind="Class" />
-      <Type Name="ResourceCollection" Kind="Class" />
-      <Type Name="SafeArraySpec" Kind="Class" />
-      <Type Name="SecurityAction" Kind="Enumeration" />
-      <Type Name="SecurityDeclaration" Kind="Class" />
-      <Type Name="SecurityDeclarationCollection" Kind="Class" />
-      <Type Name="SentinelType" Kind="Class" />
-      <Type Name="TargetRuntime" Kind="Enumeration" />
-      <Type Name="TypeAttributes" Kind="Enumeration" />
-      <Type Name="TypeDefinition" Kind="Class" />
-      <Type Name="TypeDefinitionCollection" Kind="Class" />
-      <Type Name="TypeReference" Kind="Class" />
-      <Type Name="TypeReferenceCollection" Kind="Class" />
-      <Type Name="TypeSpecification" Kind="Class" />
-      <Type Name="VariantType" Kind="Enumeration" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Binary">
-      <Type Name="BaseImageVisitor" Kind="Class" />
-      <Type Name="CLIHeader" Kind="Class" />
-      <Type Name="DataDirectory" Kind="Structure" />
-      <Type Name="DebugHeader" Kind="Class" />
-      <Type Name="DebugStoreType" Kind="Enumeration" />
-      <Type Name="DOSHeader" Kind="Class" />
-      <Type Name="ExportTable" Kind="Class" />
-      <Type Name="HintNameTable" Kind="Class" />
-      <Type Name="IBinaryVisitable" Kind="Interface" />
-      <Type Name="IBinaryVisitor" Kind="Interface" />
-      <Type Name="Image" Kind="Class" />
-      <Type Name="ImageCharacteristics" Kind="Enumeration" />
-      <Type Name="ImageFormatException" Kind="Class" />
-      <Type Name="ImportAddressTable" Kind="Class" />
-      <Type Name="ImportLookupTable" Kind="Class" />
-      <Type Name="ImportTable" Kind="Class" />
-      <Type Name="PEFileHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+DataDirectoriesHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+NTSpecificFieldsHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+StandardFieldsHeader" Kind="Class" />
-      <Type Name="ResourceDataEntry" Kind="Class" />
-      <Type Name="ResourceDirectoryEntry" Kind="Class" />
-      <Type Name="ResourceDirectoryString" Kind="Class" />
-      <Type Name="ResourceDirectoryTable" Kind="Class" />
-      <Type Name="ResourceNode" Kind="Class" />
-      <Type Name="RuntimeImage" Kind="Enumeration" />
-      <Type Name="RVA" Kind="Structure" />
-      <Type Name="Section" Kind="Class" />
-      <Type Name="SectionCharacteristics" Kind="Enumeration" />
-      <Type Name="SectionCollection" Kind="Class" />
-      <Type Name="SubSystem" Kind="Enumeration" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Cil">
-      <Type Name="BaseCodeVisitor" Kind="Class" />
-      <Type Name="CilWorker" Kind="Class" />
-      <Type Name="Code" Kind="Enumeration" />
-      <Type Name="Document" Kind="Class" />
-      <Type Name="DocumentHashAlgorithm" Kind="Enumeration" />
-      <Type Name="DocumentLanguage" Kind="Class" />
-      <Type Name="DocumentLanguageVendor" Kind="Class" />
-      <Type Name="DocumentType" Kind="Class" />
-      <Type Name="ExceptionHandler" Kind="Class" />
-      <Type Name="ExceptionHandlerCollection" Kind="Class" />
-      <Type Name="ExceptionHandlerType" Kind="Enumeration" />
-      <Type Name="FlowControl" Kind="Enumeration" />
-      <Type Name="GuidAttribute" Kind="Class" />
-      <Type Name="ICodeVisitable" Kind="Interface" />
-      <Type Name="ICodeVisitor" Kind="Interface" />
-      <Type Name="Instruction" Kind="Class" />
-      <Type Name="InstructionCollection" Kind="Class" />
-      <Type Name="IScopeProvider" Kind="Interface" />
-      <Type Name="ISymbolReader" Kind="Interface" />
-      <Type Name="ISymbolStoreFactory" Kind="Interface" />
-      <Type Name="ISymbolWriter" Kind="Interface" />
-      <Type Name="IVariableDefinitionProvider" Kind="Interface" />
-      <Type Name="MethodBody" Kind="Class" />
-      <Type Name="OpCode" Kind="Structure" />
-      <Type Name="OpCodes" Kind="Class" />
-      <Type Name="OpCodeType" Kind="Enumeration" />
-      <Type Name="OperandType" Kind="Enumeration" />
-      <Type Name="Scope" Kind="Class" />
-      <Type Name="ScopeCollection" Kind="Class" />
-      <Type Name="SequencePoint" Kind="Class" />
-      <Type Name="StackBehaviour" Kind="Enumeration" />
-      <Type Name="VariableDefinition" Kind="Class" />
-      <Type Name="VariableDefinitionCollection" Kind="Class" />
-      <Type Name="VariableReference" Kind="Class" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Metadata">
-      <Type Name="AssemblyOSRow" Kind="Class" />
-      <Type Name="AssemblyOSTable" Kind="Class" />
-      <Type Name="AssemblyProcessorRow" Kind="Class" />
-      <Type Name="AssemblyProcessorTable" Kind="Class" />
-      <Type Name="AssemblyRefOSRow" Kind="Class" />
-      <Type Name="AssemblyRefOSTable" Kind="Class" />
-      <Type Name="AssemblyRefProcessorRow" Kind="Class" />
-      <Type Name="AssemblyRefProcessorTable" Kind="Class" />
-      <Type Name="AssemblyRefRow" Kind="Class" />
-      <Type Name="AssemblyRefTable" Kind="Class" />
-      <Type Name="AssemblyRow" Kind="Class" />
-      <Type Name="AssemblyTable" Kind="Class" />
-      <Type Name="BaseMetadataRowVisitor" Kind="Class" />
-      <Type Name="BaseMetadataTableVisitor" Kind="Class" />
-      <Type Name="BaseMetadataVisitor" Kind="Class" />
-      <Type Name="BlobHeap" Kind="Class" />
-      <Type Name="ClassLayoutRow" Kind="Class" />
-      <Type Name="ClassLayoutTable" Kind="Class" />
-      <Type Name="CodedIndex" Kind="Enumeration" />
-      <Type Name="ConstantRow" Kind="Class" />
-      <Type Name="ConstantTable" Kind="Class" />
-      <Type Name="CustomAttributeRow" Kind="Class" />
-      <Type Name="CustomAttributeTable" Kind="Class" />
-      <Type Name="DeclSecurityRow" Kind="Class" />
-      <Type Name="DeclSecurityTable" Kind="Class" />
-      <Type Name="ElementType" Kind="Enumeration" />
-      <Type Name="EventMapRow" Kind="Class" />
-      <Type Name="EventMapTable" Kind="Class" />
-      <Type Name="EventPtrRow" Kind="Class" />
-      <Type Name="EventPtrTable" Kind="Class" />
-      <Type Name="EventRow" Kind="Class" />
-      <Type Name="EventTable" Kind="Class" />
-      <Type Name="ExportedTypeRow" Kind="Class" />
-      <Type Name="ExportedTypeTable" Kind="Class" />
-      <Type Name="FieldLayoutRow" Kind="Class" />
-      <Type Name="FieldLayoutTable" Kind="Class" />
-      <Type Name="FieldMarshalRow" Kind="Class" />
-      <Type Name="FieldMarshalTable" Kind="Class" />
-      <Type Name="FieldPtrRow" Kind="Class" />
-      <Type Name="FieldPtrTable" Kind="Class" />
-      <Type Name="FieldRow" Kind="Class" />
-      <Type Name="FieldRVARow" Kind="Class" />
-      <Type Name="FieldRVATable" Kind="Class" />
-      <Type Name="FieldTable" Kind="Class" />
-      <Type Name="FileRow" Kind="Class" />
-      <Type Name="FileTable" Kind="Class" />
-      <Type Name="GenericParamConstraintRow" Kind="Class" />
-      <Type Name="GenericParamConstraintTable" Kind="Class" />
-      <Type Name="GenericParamRow" Kind="Class" />
-      <Type Name="GenericParamTable" Kind="Class" />
-      <Type Name="GuidHeap" Kind="Class" />
-      <Type Name="IMetadataRow" Kind="Interface" />
-      <Type Name="IMetadataRowVisitable" Kind="Interface" />
-      <Type Name="IMetadataRowVisitor" Kind="Interface" />
-      <Type Name="IMetadataTable" Kind="Interface" />
-      <Type Name="IMetadataTableVisitable" Kind="Interface" />
-      <Type Name="IMetadataTableVisitor" Kind="Interface" />
-      <Type Name="IMetadataVisitable" Kind="Interface" />
-      <Type Name="IMetadataVisitor" Kind="Interface" />
-      <Type Name="ImplMapRow" Kind="Class" />
-      <Type Name="ImplMapTable" Kind="Class" />
-      <Type Name="InterfaceImplRow" Kind="Class" />
-      <Type Name="InterfaceImplTable" Kind="Class" />
-      <Type Name="ManifestResourceRow" Kind="Class" />
-      <Type Name="ManifestResourceTable" Kind="Class" />
-      <Type Name="MemberRefRow" Kind="Class" />
-      <Type Name="MemberRefTable" Kind="Class" />
-      <Type Name="MetadataFormatException" Kind="Class" />
-      <Type Name="MetadataHeap" Kind="Class" />
-      <Type Name="MetadataRoot" Kind="Class" />
-      <Type Name="MetadataRoot+MetadataRootHeader" Kind="Class" />
-      <Type Name="MetadataStream" Kind="Class" />
-      <Type Name="MetadataStream+MetadataStreamHeader" Kind="Class" />
-      <Type Name="MetadataStreamCollection" Kind="Class" />
-      <Type Name="MetadataToken" Kind="Structure" />
-      <Type Name="MethodImplRow" Kind="Class" />
-      <Type Name="MethodImplTable" Kind="Class" />
-      <Type Name="MethodPtrRow" Kind="Class" />
-      <Type Name="MethodPtrTable" Kind="Class" />
-      <Type Name="MethodRow" Kind="Class" />
-      <Type Name="MethodSemanticsRow" Kind="Class" />
-      <Type Name="MethodSemanticsTable" Kind="Class" />
-      <Type Name="MethodSpecRow" Kind="Class" />
-      <Type Name="MethodSpecTable" Kind="Class" />
-      <Type Name="MethodTable" Kind="Class" />
-      <Type Name="ModuleRefRow" Kind="Class" />
-      <Type Name="ModuleRefTable" Kind="Class" />
-      <Type Name="ModuleRow" Kind="Class" />
-      <Type Name="ModuleTable" Kind="Class" />
-      <Type Name="NestedClassRow" Kind="Class" />
-      <Type Name="NestedClassTable" Kind="Class" />
-      <Type Name="ParamPtrRow" Kind="Class" />
-      <Type Name="ParamPtrTable" Kind="Class" />
-      <Type Name="ParamRow" Kind="Class" />
-      <Type Name="ParamTable" Kind="Class" />
-      <Type Name="PropertyMapRow" Kind="Class" />
-      <Type Name="PropertyMapTable" Kind="Class" />
-      <Type Name="PropertyPtrRow" Kind="Class" />
-      <Type Name="PropertyPtrTable" Kind="Class" />
-      <Type Name="PropertyRow" Kind="Class" />
-      <Type Name="PropertyTable" Kind="Class" />
-      <Type Name="RowCollection" Kind="Class" />
-      <Type Name="StandAloneSigRow" Kind="Class" />
-      <Type Name="StandAloneSigTable" Kind="Class" />
-      <Type Name="StringsHeap" Kind="Class" />
-      <Type Name="TableCollection" Kind="Class" />
-      <Type Name="TablesHeap" Kind="Class" />
-      <Type Name="TokenType" Kind="Enumeration" />
-      <Type Name="TypeDefRow" Kind="Class" />
-      <Type Name="TypeDefTable" Kind="Class" />
-      <Type Name="TypeRefRow" Kind="Class" />
-      <Type Name="TypeRefTable" Kind="Class" />
-      <Type Name="TypeSpecRow" Kind="Class" />
-      <Type Name="TypeSpecTable" Kind="Class" />
-      <Type Name="UserStringsHeap" Kind="Class" />
-    </Namespace>
-  </Types>
-  <Title>Mono.Cecil</Title>
-</Overview>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-.xml
deleted file mode 100644 (file)
index 36dfeb3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<Namespace Name="">
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml
deleted file mode 100644 (file)
index fc7c340..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<Namespace Name="Mono.Cecil.Binary">
-  <Docs>
-    <summary>Internal namespace used by Mono.Cecil.</summary>
-    <remarks>
-      <para>
-       The classes in this namespace are low-level routines to access
-       ECMA CLI images and deals mostly with PE headers and other
-       low-level components.   
-      </para>
-      <para>
-       The API exposed in this namespace is intended for use by
-       Mono.Cecil and is not in general useful for developers.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml
deleted file mode 100644 (file)
index 5cb1815..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<Namespace Name="Mono.Cecil.Cil">
-  <Docs>
-    <summary>Dealing with Method Bodies: the Common Language Infrastructure opcodes.</summary>
-    <remarks>
-      <para>
-       The classes in this namespace are used to consume or generate
-       bytecodes from the Common Intermediate Language (CIL) from the
-       ECMA Common Language Infrastructure (CLI).
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml
deleted file mode 100644 (file)
index 3457668..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<Namespace Name="Mono.Cecil.Metadata">
-  <Docs>
-    <summary>Internal namespace used by Mono.Cecil.</summary>
-    <remarks>
-      <para>
-       The classes in this namespace are low-level routines to access
-       ECMA CLI metadata tables and other low-level ECMA CLI constructs. 
-      </para>
-      <para>
-       The API exposed in this namespace is intended for use by
-       Mono.Cecil and is not in general useful for developers.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml
deleted file mode 100644 (file)
index 61d4bd5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<Namespace Name="Mono.Cecil">
-  <Docs>
-    <summary>Representation for ECMA CLI Images.</summary>
-    <remarks>
-      <para>
-       The classes in this namespace are used to represent ECMA
-       Common Language Infrastructure (CLI) binary images.  These
-       represent assemblies, modules, types, methods, resources and
-       every other component that makes up the ECMA 335 files.
-      </para>
-      <para>
-       You can use the classes in Mono.Cecil to read existing ECMA
-       CLI images, creating CLI images and to modify these images
-       through the exposed API.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
index f653b9963bae345167fc9f3f2385f05691d4bee4..b29cadd5be305eb98c4e9ddf132925bf02ff3c8d 100644 (file)
@@ -5,7 +5,11 @@ LIBRARY = Mono.Cecil.dll
 LIBRARY_SNK = ../mono.snk
 LIBRARY_PACKAGE = none
 
-LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll -keyfile:$(LIBRARY_SNK)
+LIB_MCS_FLAGS = /r:$(corlib) -keyfile:$(LIBRARY_SNK) -r:System.Core.dll -d:NET_3_5
+
+ifeq (net_4_0, $(PROFILE))
+LIB_MCS_FLAGS += -d:NET_4_0
+endif
 
 NO_TEST = yes
 
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil-SL.csproj b/mcs/class/Mono.Cecil/Mono.Cecil-SL.csproj
new file mode 100644 (file)
index 0000000..e3fb85c
--- /dev/null
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{59019979-D337-441B-851F-2133452191A8}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Mono.Cecil</RootNamespace>
+    <AssemblyName>Mono.Cecil</AssemblyName>
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <SilverlightApplication>false</SilverlightApplication>
+    <DefineConstants>TRACE;DEBUG;SILVERLIGHT</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>mono.snk</AssemblyOriginatorKeyFile>
+    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\DebugSL\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\ReleaseSL\</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="mscorlib" />
+    <Reference Include="system" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Mono.Cecil.Cil\Code.cs" />
+    <Compile Include="Mono.Cecil.Cil\CodeWriter.cs" />
+    <Compile Include="Mono.Cecil.Cil\CodeReader.cs" />
+    <Compile Include="Mono.Cecil.Cil\Document.cs" />
+    <Compile Include="Mono.Cecil.Cil\ExceptionHandler.cs" />
+    <Compile Include="Mono.Cecil.Cil\ILProcessor.cs" />
+    <Compile Include="Mono.Cecil.Cil\Instruction.cs" />
+    <Compile Include="Mono.Cecil.Cil\MethodBody.cs" />
+    <Compile Include="Mono.Cecil.Cil\OpCode.cs" />
+    <Compile Include="Mono.Cecil.Cil\OpCodes.cs" />
+    <Compile Include="Mono.Cecil.Cil\SequencePoint.cs" />
+    <Compile Include="Mono.Cecil.Cil\Symbols.cs" />
+    <Compile Include="Mono.Cecil.Cil\VariableDefinition.cs" />
+    <Compile Include="Mono.Cecil.Cil\VariableReference.cs" />
+    <Compile Include="Mono.Cecil.Metadata\BlobHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Buffers.cs" />
+    <Compile Include="Mono.Cecil.Metadata\CodedIndex.cs" />
+    <Compile Include="Mono.Cecil.Metadata\ElementType.cs" />
+    <Compile Include="Mono.Cecil.Metadata\GuidHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Heap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\MetadataToken.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Row.cs" />
+    <Compile Include="Mono.Cecil.Metadata\StringHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\TableHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\TokenType.cs" />
+    <Compile Include="Mono.Cecil.Metadata\UserStringHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Utilities.cs" />
+    <Compile Include="Mono.Cecil.PE\BinaryStreamReader.cs" />
+    <Compile Include="Mono.Cecil.PE\BinaryStreamWriter.cs" />
+    <Compile Include="Mono.Cecil.PE\ByteBuffer.cs" />
+    <Compile Include="Mono.Cecil.PE\ByteBufferEqualityComparer.cs" />
+    <Compile Include="Mono.Cecil.PE\DataDirectory.cs" />
+    <Compile Include="Mono.Cecil.PE\Image.cs" />
+    <Compile Include="Mono.Cecil.PE\ImageReader.cs" />
+    <Compile Include="Mono.Cecil.PE\ImageWriter.cs" />
+    <Compile Include="Mono.Cecil.PE\Section.cs" />
+    <Compile Include="Mono.Cecil.PE\TextMap.cs" />
+    <Compile Include="Mono.Cecil\ArrayType.cs" />
+    <Compile Include="Mono.Cecil\AssemblyDefinition.cs" />
+    <Compile Include="Mono.Cecil\AssemblyFlags.cs" />
+    <Compile Include="Mono.Cecil\AssemblyHashAlgorithm.cs" />
+    <Compile Include="Mono.Cecil\AssemblyInfo.cs" />
+    <Compile Include="Mono.Cecil\AssemblyLinkedResource.cs" />
+    <Compile Include="Mono.Cecil\AssemblyNameDefinition.cs" />
+    <Compile Include="Mono.Cecil\AssemblyNameReference.cs" />
+    <Compile Include="Mono.Cecil\AssemblyReader.cs" />
+    <Compile Include="Mono.Cecil\AssemblyWriter.cs" />
+    <Compile Include="Mono.Cecil\BaseAssemblyResolver.cs" />
+    <Compile Include="Mono.Cecil\CallSite.cs" />
+    <Compile Include="Mono.Cecil\CustomAttribute.cs" />
+    <Compile Include="Mono.Cecil\DefaultAssemblyResolver.cs" />
+    <Compile Include="Mono.Cecil\ExportedType.cs" />
+    <Compile Include="Mono.Cecil\FileAttributes.cs" />
+    <Compile Include="Mono.Cecil\FunctionPointerType.cs" />
+    <Compile Include="Mono.Cecil\GenericInstanceMethod.cs" />
+    <Compile Include="Mono.Cecil\GenericInstanceType.cs" />
+    <Compile Include="Mono.Cecil\GenericParameter.cs" />
+    <Compile Include="Mono.Cecil\GenericParameterAttributes.cs" />
+    <Compile Include="Mono.Cecil\IConstantProvider.cs" />
+    <Compile Include="Mono.Cecil\ICustomAttributeProvider.cs" />
+    <Compile Include="Mono.Cecil\IGenericInstance.cs" />
+    <Compile Include="Mono.Cecil\IGenericParameterProvider.cs" />
+    <Compile Include="Mono.Cecil\IMarshalInfoProvider.cs" />
+    <Compile Include="Mono.Cecil\MarshalInfo.cs" />
+    <Compile Include="Mono.Cecil\MetadataResolver.cs" />
+    <Compile Include="Mono.Cecil\Modifiers.cs" />
+    <Compile Include="Mono.Cecil\NativeType.cs" />
+    <Compile Include="Mono.Cecil\PinnedType.cs" />
+    <Compile Include="Mono.Cecil\MetadataSystem.cs" />
+    <Compile Include="Mono.Cecil\IMethodSignature.cs" />
+    <Compile Include="Mono.Cecil\ParameterDefinitionCollection.cs" />
+    <Compile Include="Mono.Cecil\EmbeddedResource.cs" />
+    <Compile Include="Mono.Cecil\EventAttributes.cs" />
+    <Compile Include="Mono.Cecil\EventDefinition.cs" />
+    <Compile Include="Mono.Cecil\EventReference.cs" />
+    <Compile Include="Mono.Cecil\FieldAttributes.cs" />
+    <Compile Include="Mono.Cecil\FieldDefinition.cs" />
+    <Compile Include="Mono.Cecil\FieldReference.cs" />
+    <Compile Include="Mono.Cecil\IMemberDefinition.cs" />
+    <Compile Include="Mono.Cecil\Import.cs" />
+    <Compile Include="Mono.Cecil\LinkedResource.cs" />
+    <Compile Include="Mono.Cecil\MemberReference.cs" />
+    <Compile Include="Mono.Cecil\MethodAttributes.cs" />
+    <Compile Include="Mono.Cecil\MethodCallingConvention.cs" />
+    <Compile Include="Mono.Cecil\MethodDefinition.cs" />
+    <Compile Include="Mono.Cecil\MethodImplAttributes.cs" />
+    <Compile Include="Mono.Cecil\MethodReference.cs" />
+    <Compile Include="Mono.Cecil\MethodReturnType.cs" />
+    <Compile Include="Mono.Cecil\MethodSemanticsAttributes.cs" />
+    <Compile Include="Mono.Cecil\MethodSpecification.cs" />
+    <Compile Include="Mono.Cecil\ParameterAttributes.cs" />
+    <Compile Include="Mono.Cecil\ParameterDefinition.cs" />
+    <Compile Include="Mono.Cecil\ParameterReference.cs" />
+    <Compile Include="Mono.Cecil\PInvokeAttributes.cs" />
+    <Compile Include="Mono.Cecil\PInvokeInfo.cs" />
+    <Compile Include="Mono.Cecil\PointerType.cs" />
+    <Compile Include="Mono.Cecil\PropertyAttributes.cs" />
+    <Compile Include="Mono.Cecil\PropertyDefinition.cs" />
+    <Compile Include="Mono.Cecil\PropertyReference.cs" />
+    <Compile Include="Mono.Cecil\ReferenceType.cs" />
+    <Compile Include="Mono.Cecil\IMetadataScope.cs" />
+    <Compile Include="Mono.Cecil\IMetadataTokenProvider.cs" />
+    <Compile Include="Mono.Cecil\ManifestResourceAttributes.cs" />
+    <Compile Include="Mono.Cecil\ModuleReference.cs" />
+    <Compile Include="Mono.Cecil\MemberDefinitionCollection.cs" />
+    <Compile Include="Mono.Cecil\ModuleDefinition.cs" />
+    <Compile Include="Mono.Cecil\ModuleKind.cs" />
+    <Compile Include="Mono.Cecil\Resource.cs" />
+    <Compile Include="Mono.Cecil\SecurityDeclaration.cs" />
+    <Compile Include="Mono.Cecil\SentinelType.cs" />
+    <Compile Include="Mono.Cecil\TargetRuntime.cs" />
+    <Compile Include="Mono.Cecil\TypeAttributes.cs" />
+    <Compile Include="Mono.Cecil\TypeDefinition.cs" />
+    <Compile Include="Mono.Cecil\TypeDefinitionCollection.cs" />
+    <Compile Include="Mono.Cecil\TypeParser.cs" />
+    <Compile Include="Mono.Cecil\TypeReference.cs" />
+    <Compile Include="Mono.Cecil\TypeSpecification.cs" />
+    <Compile Include="Mono.Cecil\TypeSystem.cs" />
+    <Compile Include="Mono.Cecil\VariantType.cs" />
+    <Compile Include="Mono.Collections.Generic\Collection.cs" />
+    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />
+    <Compile Include="Mono.Security.Cryptography\CryptoService.cs" />
+    <Compile Include="Mono\Actions.cs" />
+    <Compile Include="Mono\Empty.cs" />
+    <Compile Include="Mono\Funcs.cs" />
+    <Compile Include="System.Runtime.CompilerServices\ExtensionAttribute.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="NOTES.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="mono.snk" />
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs
deleted file mode 100644 (file)
index 610c0be..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// BaseImageVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public abstract class BaseImageVisitor : IBinaryVisitor {
-
-               public virtual void VisitImage (Image img)
-               {
-               }
-
-               public virtual void VisitDOSHeader (DOSHeader header)
-               {
-               }
-
-               public virtual void VisitPEFileHeader (PEFileHeader header)
-               {
-               }
-
-               public virtual void VisitPEOptionalHeader (PEOptionalHeader header)
-               {
-               }
-
-               public virtual void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
-               {
-               }
-
-               public virtual void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
-               {
-               }
-
-               public virtual void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
-               {
-               }
-
-               public virtual void VisitSectionCollection (SectionCollection coll)
-               {
-               }
-
-               public virtual void VisitSection (Section section)
-               {
-               }
-
-               public virtual void VisitImportAddressTable (ImportAddressTable iat)
-               {
-               }
-
-               public virtual void VisitDebugHeader (DebugHeader dh)
-               {
-               }
-
-               public virtual void VisitCLIHeader (CLIHeader header)
-               {
-               }
-
-               public virtual void VisitImportTable (ImportTable it)
-               {
-               }
-
-               public virtual void VisitImportLookupTable (ImportLookupTable ilt)
-               {
-               }
-
-               public virtual void VisitHintNameTable (HintNameTable hnt)
-               {
-               }
-
-               public virtual void VisitExportTable (ExportTable et)
-               {
-               }
-
-               public virtual void TerminateImage (Image img)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs
deleted file mode 100644 (file)
index 200286d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// CLIHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class CLIHeader : IHeader, IBinaryVisitable {
-
-               public uint Cb;
-               public ushort MajorRuntimeVersion;
-               public ushort MinorRuntimeVersion;
-               public DataDirectory Metadata;
-               public RuntimeImage Flags;
-               public uint EntryPointToken;
-               public DataDirectory Resources;
-               public DataDirectory StrongNameSignature;
-               public DataDirectory CodeManagerTable;
-               public DataDirectory VTableFixups;
-               public DataDirectory ExportAddressTableJumps;
-               public DataDirectory ManagedNativeHeader;
-
-               public byte [] ImageHash;
-
-               internal CLIHeader ()
-               {
-               }
-
-               public void SetDefaultValues ()
-               {
-                       Cb = 0x48;
-                       Flags = RuntimeImage.ILOnly;
-                       CodeManagerTable = DataDirectory.Zero;
-                       ExportAddressTableJumps = DataDirectory.Zero;
-                       ManagedNativeHeader = DataDirectory.Zero;
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitCLIHeader (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CopyImageVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CopyImageVisitor.cs
deleted file mode 100644 (file)
index 8a1dec2..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// CopyImageVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       sealed class CopyImageVisitor : BaseImageVisitor {
-
-               Image m_newImage;
-               Image m_originalImage;
-
-               public CopyImageVisitor (Image originalImage)
-               {
-                       m_originalImage = originalImage;
-               }
-
-               public override void VisitImage (Image img)
-               {
-                       m_newImage = img;
-                       if (m_originalImage.DebugHeader != null)
-                               m_newImage.AddDebugHeader ();
-
-                       m_newImage.CLIHeader.Flags = m_originalImage.CLIHeader.Flags;
-               }
-
-               public override void VisitDebugHeader (DebugHeader dbgHeader)
-               {
-                       DebugHeader old = m_originalImage.DebugHeader;
-                       dbgHeader.Age = old.Age;
-                       dbgHeader.Characteristics = old.Characteristics;
-                       dbgHeader.FileName = old.FileName;
-                       dbgHeader.Signature = old.Signature;
-                       dbgHeader.TimeDateStamp = ImageInitializer.TimeDateStampFromEpoch();
-                       dbgHeader.Type = old.Type;
-               }
-
-               public override void VisitSectionCollection (SectionCollection sections)
-               {
-                       Section old = null;
-                       foreach (Section s in m_originalImage.Sections)
-                               if (s.Name == Section.Resources)
-                                       old = s;
-
-                       if (old == null)
-                               return;
-
-                       Section rsrc = new Section ();
-                       rsrc.Characteristics = old.Characteristics;
-                       rsrc.Name = old.Name;
-
-                       sections.Add (rsrc);
-               }
-
-               public override void TerminateImage (Image img)
-               {
-                       if (m_originalImage.ResourceDirectoryRoot == null)
-                               return;
-
-                       m_newImage.ResourceDirectoryRoot = CloneResourceDirectoryTable (m_originalImage.ResourceDirectoryRoot);
-               }
-
-               ResourceDirectoryTable CloneResourceDirectoryTable (ResourceDirectoryTable old)
-               {
-                       ResourceDirectoryTable rdt = new ResourceDirectoryTable ();
-                       foreach (ResourceDirectoryEntry oldEntry in old.Entries)
-                               rdt.Entries.Add (CloneResourceDirectoryEntry (oldEntry));
-
-                       return rdt;
-               }
-
-               ResourceDirectoryEntry CloneResourceDirectoryEntry (ResourceDirectoryEntry old)
-               {
-                       ResourceDirectoryEntry rde;
-                       if (old.IdentifiedByName)
-                               rde = new ResourceDirectoryEntry(old.Name);
-                       else
-                               rde = new ResourceDirectoryEntry (old.ID);
-
-                       if (old.Child is ResourceDirectoryTable)
-                               rde.Child = CloneResourceDirectoryTable (old.Child as ResourceDirectoryTable);
-                       else
-                               rde.Child = CloneResourceDataEntry (old.Child as ResourceDataEntry);
-
-                       return rde;
-               }
-
-               ResourceDataEntry CloneResourceDataEntry (ResourceDataEntry old)
-               {
-                       ResourceDataEntry rde = new ResourceDataEntry ();
-                       rde.Size = old.Size;
-                       rde.Codepage = old.Codepage;
-                       rde.ResourceData = old.ResourceData;
-
-                       return rde;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs
deleted file mode 100644 (file)
index 8515433..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// DOSHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class DOSHeader : IHeader, IBinaryVisitable {
-
-               public byte [] Start;
-               public byte [] End;
-
-               public uint Lfanew;
-
-               internal DOSHeader ()
-               {
-               }
-
-               public void SetDefaultValues ()
-               {
-                       Start = new byte [60] {
-                               0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
-                               0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
-                               0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00
-                       };
-                       Lfanew = 128;
-                       End = new byte [64] {
-                               0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
-                               0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
-                               0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
-                               0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
-                               0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
-                               0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
-                               0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
-                               0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
-                               0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-                               0x00
-                       };
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitDOSHeader (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs
deleted file mode 100644 (file)
index 54cb2c1..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// DataDirectory.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public struct DataDirectory {
-
-               public static readonly DataDirectory Zero = new DataDirectory (RVA.Zero, 0);
-
-               RVA m_virtualAddress;
-               uint m_size;
-
-               public RVA VirtualAddress {
-                       get { return m_virtualAddress; }
-                       set { m_virtualAddress = value; }
-               }
-
-               public uint Size {
-                       get { return m_size; }
-                       set { m_size = value; }
-               }
-
-               public DataDirectory (RVA virtualAddress, uint size)
-               {
-                       m_virtualAddress = virtualAddress;
-                       m_size = size;
-               }
-
-               public override int GetHashCode ()
-               {
-                       return (m_virtualAddress.GetHashCode () ^ (int) m_size << 1);
-               }
-
-               public override bool Equals (object other)
-               {
-                       if (other is DataDirectory) {
-                               DataDirectory odd = (DataDirectory) other;
-                               return this.m_virtualAddress == odd.m_virtualAddress && this.m_size == odd.m_size;
-                       }
-
-                       return false;
-               }
-
-               public override string ToString ()
-               {
-                       return string.Format ("{0} [{1}]", m_virtualAddress, m_size.ToString ("X"));
-               }
-
-               public static bool operator == (DataDirectory one, DataDirectory other)
-               {
-                       return one.m_virtualAddress == other.m_virtualAddress && one.m_size == other.m_size;
-               }
-
-               public static bool operator != (DataDirectory one, DataDirectory other)
-               {
-                       return one.m_virtualAddress != other.m_virtualAddress || one.m_size != other.m_size;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs
deleted file mode 100644 (file)
index ae4d436..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// DebugHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-
-       public sealed class DebugHeader : IHeader, IBinaryVisitable {
-
-               public uint Characteristics;
-               public uint TimeDateStamp;
-               public ushort MajorVersion;
-               public ushort MinorVersion;
-               public DebugStoreType Type;
-               public uint SizeOfData;
-               public RVA AddressOfRawData;
-               public uint PointerToRawData;
-
-               public uint Magic;
-               public Guid Signature;
-               public uint Age;
-               public string FileName;
-
-               internal DebugHeader ()
-               {
-               }
-
-               public void SetDefaultValues ()
-               {
-                       Characteristics = 0;
-
-                       this.Magic = 0x53445352;
-                       this.Age = 0;
-                       this.Type = DebugStoreType.CodeView;
-                       this.FileName = string.Empty;
-               }
-
-               public uint GetSize ()
-               {
-                       return 0x34 + (uint) FileName.Length + 1;
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitDebugHeader (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs
deleted file mode 100644 (file)
index ad9ba97..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// DebugStoreType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public enum DebugStoreType : uint {
-               Unknown = 0x00000000,
-               COFF = 0x00000001,
-               CodeView = 0x00000002,
-               FPO = 0x00000003,
-               Misc = 0x00000004,
-               Exception = 0x00000005,
-               Fixup = 0x00000006,
-               OMAPToSrc = 0x00000007,
-               OMAPFromSrc = 0x00000008,
-               Borland = 0x00000009,
-               Reserved10 = 0x0000000a,
-               CLSID = 0x0000000b
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs
deleted file mode 100644 (file)
index 5032e55..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// ExportTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class ExportTable : IBinaryVisitable {
-
-               public uint Characteristics;
-               public uint TimeDateStamp;
-               public ushort MajorVersion;
-               public ushort MinorVersion;
-               public string Name;
-               public uint Base;
-               public uint NumberOfFunctions;
-               public uint NumberOfNames;
-               public RVA AddressOfFunctions;
-               public RVA AddressOfNames;
-               public RVA AddressOfNameOrdinals;
-
-               public RVA [] AddressesOfFunctions;
-               public RVA [] AddressesOfNames;
-               public ushort [] NameOrdinals;
-               public string [] Names;
-
-               internal ExportTable ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitExportTable (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs
deleted file mode 100644 (file)
index 0d3729e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IBinaryVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public interface IBinaryVisitable {
-               void Accept (IBinaryVisitor visitor);
-       }
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs
deleted file mode 100644 (file)
index 5b24836..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// IBinaryVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public interface IBinaryVisitor {
-               void VisitImage (Image img);
-               void VisitDOSHeader (DOSHeader header);
-               void VisitPEFileHeader (PEFileHeader header);
-               void VisitPEOptionalHeader (PEOptionalHeader header);
-               void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header);
-               void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header);
-               void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header);
-               void VisitSectionCollection (SectionCollection coll);
-               void VisitSection (Section section);
-               void VisitImportAddressTable (ImportAddressTable iat);
-               void VisitDebugHeader (DebugHeader dh);
-               void VisitCLIHeader (CLIHeader header);
-               void VisitImportTable (ImportTable it);
-               void VisitImportLookupTable (ImportLookupTable ilt);
-               void VisitHintNameTable (HintNameTable hnt);
-               void VisitExportTable (ExportTable et);
-
-               void TerminateImage (Image img);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IHeader.cs
deleted file mode 100644 (file)
index 54f157d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// IHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       internal interface IHeader {
-               void SetDefaultValues ();
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs
deleted file mode 100644 (file)
index 5844b34..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-//
-// Image.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-       using System.IO;
-
-       using Mono.Cecil.Metadata;
-
-       public sealed class Image : IBinaryVisitable {
-
-               DOSHeader m_dosHeader;
-               PEFileHeader m_peFileHeader;
-               PEOptionalHeader m_peOptionalHeader;
-
-               SectionCollection m_sections;
-               Section m_textSection;
-
-               ImportAddressTable m_importAddressTable;
-               CLIHeader m_cliHeader;
-               ImportTable m_importTable;
-               ImportLookupTable m_importLookupTable;
-               HintNameTable m_hintNameTable;
-               ExportTable m_exportTable;
-
-               DebugHeader m_debugHeader;
-               MetadataRoot m_mdRoot;
-
-               ResourceDirectoryTable m_rsrcRoot;
-
-               FileInfo m_img;
-
-               public DOSHeader DOSHeader {
-                       get { return m_dosHeader; }
-               }
-
-               public PEFileHeader PEFileHeader {
-                       get { return m_peFileHeader; }
-               }
-
-               public PEOptionalHeader PEOptionalHeader {
-                       get { return m_peOptionalHeader; }
-               }
-
-               public SectionCollection Sections {
-                       get { return m_sections; }
-               }
-
-               public Section TextSection {
-                       get { return m_textSection; }
-                       set { m_textSection = value; }
-               }
-
-               public ImportAddressTable ImportAddressTable {
-                       get { return m_importAddressTable; }
-               }
-
-               public CLIHeader CLIHeader {
-                       get { return m_cliHeader; }
-                       set { m_cliHeader = value; }
-               }
-
-               public DebugHeader DebugHeader {
-                       get { return m_debugHeader; }
-                       set { m_debugHeader = value; }
-               }
-
-               public MetadataRoot MetadataRoot {
-                       get { return m_mdRoot; }
-               }
-
-               public ImportTable ImportTable {
-                       get { return m_importTable; }
-               }
-
-               public ImportLookupTable ImportLookupTable {
-                       get { return m_importLookupTable; }
-               }
-
-               public HintNameTable HintNameTable {
-                       get { return m_hintNameTable; }
-               }
-
-               public ExportTable ExportTable {
-                       get { return m_exportTable; }
-                       set { m_exportTable = value; }
-               }
-
-               internal ResourceDirectoryTable ResourceDirectoryRoot {
-                       get { return m_rsrcRoot; }
-                       set { m_rsrcRoot = value; }
-               }
-
-               public FileInfo FileInformation {
-                       get { return m_img; }
-               }
-
-               internal Image ()
-               {
-                       m_dosHeader = new DOSHeader ();
-                       m_peFileHeader = new PEFileHeader ();
-                       m_peOptionalHeader = new PEOptionalHeader ();
-                       m_sections = new SectionCollection ();
-                       m_importAddressTable = new ImportAddressTable ();
-                       m_importTable = new ImportTable ();
-                       m_importLookupTable = new ImportLookupTable ();
-                       m_hintNameTable = new HintNameTable ();
-                       m_mdRoot = new MetadataRoot (this);
-               }
-
-               internal Image (FileInfo img) : this ()
-               {
-                       m_img = img;
-               }
-
-               public long ResolveVirtualAddress (RVA rva)
-               {
-                       foreach (Section sect in this.Sections) {
-                               if (rva >= sect.VirtualAddress &&
-                                       rva < sect.VirtualAddress + sect.SizeOfRawData)
-
-                                       return rva + sect.PointerToRawData - sect.VirtualAddress;
-                       }
-
-                       throw new ArgumentOutOfRangeException ("Cannot map the rva to any section");
-               }
-
-               internal Section GetSectionAtVirtualAddress (RVA rva)
-               {
-                       foreach (Section sect in this.Sections) {
-                               if (rva >= sect.VirtualAddress &&
-                                       rva < sect.VirtualAddress + sect.SizeOfRawData) {
-                                       return sect;
-                               }
-                       }
-                       return null;
-               }
-
-               public BinaryReader GetReaderAtVirtualAddress (RVA rva)
-               {
-                       Section sect = GetSectionAtVirtualAddress (rva);
-                       if (sect == null)
-                               return null;
-
-                       BinaryReader br = new BinaryReader (new MemoryStream (sect.Data));
-                       br.BaseStream.Position = rva - sect.VirtualAddress;
-                       return br;
-               }
-
-               public void AddDebugHeader ()
-               {
-                       m_debugHeader = new DebugHeader ();
-                       m_debugHeader.SetDefaultValues ();
-               }
-
-               internal void SetFileInfo (FileInfo file)
-               {
-                       m_img = file;
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitImage (this);
-
-                       m_dosHeader.Accept (visitor);
-                       m_peFileHeader.Accept (visitor);
-                       m_peOptionalHeader.Accept (visitor);
-
-                       m_sections.Accept (visitor);
-
-                       m_importAddressTable.Accept (visitor);
-
-                       AcceptIfNotNull (m_cliHeader, visitor);
-                       AcceptIfNotNull (m_debugHeader, visitor);
-
-                       m_importTable.Accept (visitor);
-                       m_importLookupTable.Accept (visitor);
-                       m_hintNameTable.Accept (visitor);
-                       AcceptIfNotNull (m_exportTable, visitor);
-
-                       visitor.TerminateImage (this);
-               }
-
-               static void AcceptIfNotNull (IBinaryVisitable visitable, IBinaryVisitor visitor)
-               {
-                       if (visitable == null)
-                               return;
-
-                       visitable.Accept (visitor);
-               }
-
-               public static Image CreateImage ()
-               {
-                       Image img = new Image ();
-
-                       ImageInitializer init = new ImageInitializer (img);
-                       img.Accept (init);
-
-                       return img;
-               }
-
-               public static Image GetImage (string file)
-               {
-                       return ImageReader.Read (file).Image;
-               }
-
-               public static Image GetImage (byte [] image)
-               {
-                       return ImageReader.Read (image).Image;
-               }
-
-               public static Image GetImage (Stream stream)
-               {
-                       return ImageReader.Read (stream).Image;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs
deleted file mode 100644 (file)
index 278b75d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// ImageCharacteristics.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-
-       [Flags]
-       public enum ImageCharacteristics : ushort {
-               RelocsStripped = 0x0001,
-               ExecutableImage = 0x0002,
-               LineNumsStripped = 0x0004,
-               LocalSymsStripped = 0x0008,
-               AggressiveWSTrim = 0x0010,
-               LargeAddressAware = 0x0020,
-               ReservedForFutureUse = 0x0040,
-               BytesReversedLo = 0x0080,
-               _32BitsMachine = 0x0100,
-               DebugStripped = 0x0200,
-               RemovableRunFromSwap = 0x0400,
-               NetRunFromSwap = 0x0800,
-               System = 0x1000,
-               Dll = 0x2000,
-               UPSystemOnly = 0x4000,
-               BytesReversedHI = 0x8000,
-
-               __flags = 0x0002 | 0x0004 | 0x0008 | 0x0100,
-
-               CILOnlyDll = 0x2000 | (ushort) __flags,
-               CILOnlyExe = __flags
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs
deleted file mode 100644 (file)
index 1592233..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ImageFormatException.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-
-       public class ImageFormatException : Exception {
-
-               internal ImageFormatException () : base()
-               {
-               }
-
-               internal ImageFormatException (string message) : base(message)
-               {
-               }
-
-               internal ImageFormatException (string message, params string[] parameters) :
-                       base(string.Format(message, parameters))
-               {
-               }
-
-               internal ImageFormatException (string message, Exception inner) :
-                       base(message, inner)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageInitializer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageInitializer.cs
deleted file mode 100644 (file)
index 407c9dc..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// ImageInitializer.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-
-       using Mono.Cecil.Metadata;
-
-       sealed class ImageInitializer : BaseImageVisitor {
-
-               Image m_image;
-               MetadataInitializer m_mdinit;
-
-               public Image Image {
-                       get { return m_image; }
-               }
-
-               public MetadataInitializer Metadata {
-                       get { return m_mdinit; }
-               }
-
-               public ImageInitializer (Image image)
-               {
-                       m_image = image;
-                       m_image.CLIHeader = new CLIHeader ();
-                       m_mdinit = new MetadataInitializer (this);
-               }
-
-               public override void VisitDOSHeader (DOSHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitPEOptionalHeader (PEOptionalHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitPEFileHeader (PEFileHeader header)
-               {
-                       header.SetDefaultValues ();
-                       header.TimeDateStamp = TimeDateStampFromEpoch ();
-               }
-
-               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitSectionCollection (SectionCollection coll)
-               {
-                       Section text = new Section ();
-                       text.Name = Section.Text;
-                       text.Characteristics = SectionCharacteristics.ContainsCode |
-                               SectionCharacteristics.MemoryRead | SectionCharacteristics.MemExecute;
-                       m_image.TextSection = text;
-
-                       Section reloc = new Section ();
-                       reloc.Name =  Section.Relocs;
-                       reloc.Characteristics = SectionCharacteristics.ContainsInitializedData |
-                               SectionCharacteristics.MemDiscardable | SectionCharacteristics.MemoryRead;
-
-                       coll.Add (text);
-                       coll.Add (reloc);
-               }
-
-               public override void VisitSection (Section sect)
-               {
-                       sect.SetDefaultValues ();
-               }
-
-               public override void VisitDebugHeader (DebugHeader dh)
-               {
-                       if (dh != null)
-                               dh.SetDefaultValues ();
-               }
-
-               public override void VisitCLIHeader (CLIHeader header)
-               {
-                       header.SetDefaultValues ();
-                       m_image.MetadataRoot.Accept (m_mdinit);
-               }
-
-               public override void VisitImportTable (ImportTable it)
-               {
-                       it.ImportAddressTable = new RVA (0x2000);
-               }
-
-               public override void VisitHintNameTable (HintNameTable hnt)
-               {
-                       hnt.Hint = 0;
-                       hnt.RuntimeLibrary = HintNameTable.RuntimeCorEE;
-                       hnt.EntryPoint = 0x25ff;
-                       hnt.RVA = new RVA (0x402000);
-               }
-
-               public static uint TimeDateStampFromEpoch ()
-               {
-                       return (uint) DateTime.UtcNow.Subtract (
-                               new DateTime (1970, 1, 1)).TotalSeconds;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs
deleted file mode 100644 (file)
index e1b2bf1..0000000
+++ /dev/null
@@ -1,485 +0,0 @@
-//
-// ImageReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil.Metadata;
-
-       sealed class ImageReader : BaseImageVisitor {
-
-               MetadataReader m_mdReader;
-               BinaryReader m_binaryReader;
-               Image m_image;
-
-               public MetadataReader MetadataReader {
-                       get { return m_mdReader; }
-               }
-
-               public Image Image {
-                       get { return m_image; }
-               }
-
-               ImageReader (Image img, BinaryReader reader)
-               {
-                       m_image = img;
-                       m_binaryReader = reader;
-               }
-
-               static ImageReader Read (Image img, Stream stream)
-               {
-                       ImageReader reader = new ImageReader (img, new BinaryReader (stream));
-                       img.Accept (reader);
-                       return reader;
-               }
-
-               public static ImageReader Read (string file)
-               {
-                       if (file == null)
-                               throw new ArgumentNullException ("file");
-
-                       FileInfo fi = new FileInfo (file);
-                       if (!File.Exists (fi.FullName))
-                       #if CF_1_0 || CF_2_0
-                               throw new FileNotFoundException (fi.FullName);
-                       #else
-                               throw new FileNotFoundException (string.Format ("File '{0}' not found.", fi.FullName), fi.FullName);
-                       #endif
-
-                       FileStream stream = null;
-                       try {
-                               stream = new FileStream (fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Read);
-                               return Read (new Image (fi), stream);
-                       } catch (Exception e) {
-                               if (stream != null)
-                                       stream.Close ();
-#if CF_1_0 || CF_2_0
-                               throw new BadImageFormatException ("Invalid PE file: " + file, e);
-#else
-                               throw new BadImageFormatException ("Invalid PE file", file, e);
-#endif
-                       }
-               }
-
-               public static ImageReader Read (byte [] image)
-               {
-                       if (image == null)
-                               throw new ArgumentNullException ("image");
-
-                       if (image.Length == 0)
-                               throw new ArgumentException ("Empty image array");
-
-                       return Read (new Image (), new MemoryStream (image));
-               }
-
-               public static ImageReader Read (Stream stream)
-               {
-                       if (stream == null)
-                               throw new ArgumentNullException ("stream");
-
-                       if (!stream.CanRead)
-                               throw new ArgumentException ("Can not read from stream");
-
-                       return Read (new Image (), stream);
-               }
-
-               public BinaryReader GetReader ()
-               {
-                       return m_binaryReader;
-               }
-
-               public override void VisitImage (Image img)
-               {
-                       m_mdReader = new MetadataReader (this);
-               }
-
-               void SetPositionToAddress (RVA address)
-               {
-                       m_binaryReader.BaseStream.Position = m_image.ResolveVirtualAddress (address);
-               }
-
-               public override void VisitDOSHeader (DOSHeader header)
-               {
-                       header.Start = m_binaryReader.ReadBytes (60);
-                       header.Lfanew = m_binaryReader.ReadUInt32 ();
-                       header.End = m_binaryReader.ReadBytes (64);
-
-                       m_binaryReader.BaseStream.Position = header.Lfanew;
-
-                       if (m_binaryReader.ReadUInt16 () != 0x4550 ||
-                               m_binaryReader.ReadUInt16 () != 0)
-
-                               throw new ImageFormatException ("Invalid PE File Signature");
-               }
-
-               public override void VisitPEFileHeader (PEFileHeader header)
-               {
-                       header.Machine = m_binaryReader.ReadUInt16 ();
-                       header.NumberOfSections = m_binaryReader.ReadUInt16 ();
-                       header.TimeDateStamp = m_binaryReader.ReadUInt32 ();
-                       header.PointerToSymbolTable = m_binaryReader.ReadUInt32 ();
-                       header.NumberOfSymbols = m_binaryReader.ReadUInt32 ();
-                       header.OptionalHeaderSize = m_binaryReader.ReadUInt16 ();
-                       header.Characteristics = (ImageCharacteristics) m_binaryReader.ReadUInt16 ();
-               }
-
-               ulong ReadIntOrLong ()
-               {
-                       return m_image.PEOptionalHeader.StandardFields.IsPE64 ?
-                               m_binaryReader.ReadUInt64 () :
-                               m_binaryReader.ReadUInt32 ();
-               }
-
-               RVA ReadRVA ()
-               {
-                       return m_binaryReader.ReadUInt32 ();
-               }
-
-               DataDirectory ReadDataDirectory ()
-               {
-                       return new DataDirectory (ReadRVA (), m_binaryReader.ReadUInt32 ());
-               }
-
-               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
-               {
-                       header.ImageBase = ReadIntOrLong ();
-                       header.SectionAlignment = m_binaryReader.ReadUInt32 ();
-                       header.FileAlignment = m_binaryReader.ReadUInt32 ();
-                       header.OSMajor = m_binaryReader.ReadUInt16 ();
-                       header.OSMinor = m_binaryReader.ReadUInt16 ();
-                       header.UserMajor = m_binaryReader.ReadUInt16 ();
-                       header.UserMinor = m_binaryReader.ReadUInt16 ();
-                       header.SubSysMajor = m_binaryReader.ReadUInt16 ();
-                       header.SubSysMinor = m_binaryReader.ReadUInt16 ();
-                       header.Reserved = m_binaryReader.ReadUInt32 ();
-                       header.ImageSize = m_binaryReader.ReadUInt32 ();
-                       header.HeaderSize = m_binaryReader.ReadUInt32 ();
-                       header.FileChecksum = m_binaryReader.ReadUInt32 ();
-                       header.SubSystem = (SubSystem) m_binaryReader.ReadUInt16 ();
-                       header.DLLFlags = m_binaryReader.ReadUInt16 ();
-                       header.StackReserveSize = ReadIntOrLong ();
-                       header.StackCommitSize = ReadIntOrLong ();
-                       header.HeapReserveSize = ReadIntOrLong ();
-                       header.HeapCommitSize = ReadIntOrLong ();
-                       header.LoaderFlags = m_binaryReader.ReadUInt32 ();
-                       header.NumberOfDataDir = m_binaryReader.ReadUInt32 ();
-               }
-
-               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
-               {
-                       header.Magic = m_binaryReader.ReadUInt16 ();
-                       header.LMajor = m_binaryReader.ReadByte ();
-                       header.LMinor = m_binaryReader.ReadByte ();
-                       header.CodeSize = m_binaryReader.ReadUInt32 ();
-                       header.InitializedDataSize = m_binaryReader.ReadUInt32 ();
-                       header.UninitializedDataSize = m_binaryReader.ReadUInt32 ();
-                       header.EntryPointRVA = ReadRVA ();
-                       header.BaseOfCode = ReadRVA ();
-                       if (!header.IsPE64)
-                               header.BaseOfData = ReadRVA ();
-               }
-
-               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
-               {
-                       header.ExportTable = ReadDataDirectory ();
-                       header.ImportTable = ReadDataDirectory ();
-                       header.ResourceTable = ReadDataDirectory ();
-                       header.ExceptionTable = ReadDataDirectory ();
-                       header.CertificateTable = ReadDataDirectory ();
-                       header.BaseRelocationTable = ReadDataDirectory ();
-                       header.Debug = ReadDataDirectory ();
-                       header.Copyright = ReadDataDirectory ();
-                       header.GlobalPtr = ReadDataDirectory ();
-                       header.TLSTable = ReadDataDirectory ();
-                       header.LoadConfigTable = ReadDataDirectory ();
-                       header.BoundImport = ReadDataDirectory ();
-                       header.IAT = ReadDataDirectory ();
-                       header.DelayImportDescriptor = ReadDataDirectory ();
-                       header.CLIHeader = ReadDataDirectory ();
-                       header.Reserved = ReadDataDirectory ();
-
-                       if (header.CLIHeader != DataDirectory.Zero)
-                               m_image.CLIHeader = new CLIHeader ();
-                       if (header.ExportTable != DataDirectory.Zero)
-                               m_image.ExportTable = new ExportTable ();
-               }
-
-               public override void VisitSectionCollection (SectionCollection coll)
-               {
-                       for (int i = 0; i < m_image.PEFileHeader.NumberOfSections; i++)
-                               coll.Add (new Section ());
-               }
-
-               public override void VisitSection (Section sect)
-               {
-                       char [] buffer = new char [8];
-                       int read = 0;
-                       while (read < 8) {
-                               char cur = (char) m_binaryReader.ReadSByte ();
-                               if (cur == '\0') {
-                                       m_binaryReader.BaseStream.Position += 8 - read - 1;
-                                       break;
-                               }
-                               buffer [read++] = cur;
-                       }
-                       sect.Name = read == 0 ? string.Empty : new string (buffer, 0, read);
-                       if (sect.Name == Section.Text)
-                               m_image.TextSection = sect;
-
-                       sect.VirtualSize = m_binaryReader.ReadUInt32 ();
-                       sect.VirtualAddress = ReadRVA ();
-                       sect.SizeOfRawData = m_binaryReader.ReadUInt32 ();
-                       sect.PointerToRawData = ReadRVA ();
-                       sect.PointerToRelocations = ReadRVA ();
-                       sect.PointerToLineNumbers = ReadRVA ();
-                       sect.NumberOfRelocations = m_binaryReader.ReadUInt16 ();
-                       sect.NumberOfLineNumbers = m_binaryReader.ReadUInt16 ();
-                       sect.Characteristics = (SectionCharacteristics) m_binaryReader.ReadUInt32 ();
-
-                       long pos = m_binaryReader.BaseStream.Position;
-                       m_binaryReader.BaseStream.Position = sect.PointerToRawData;
-                       sect.Data = m_binaryReader.ReadBytes ((int) sect.SizeOfRawData);
-                       m_binaryReader.BaseStream.Position = pos;
-               }
-
-               public override void VisitImportAddressTable (ImportAddressTable iat)
-               {
-                       if (m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress == RVA.Zero)
-                               return;
-
-                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress);
-
-                       iat.HintNameTableRVA = ReadRVA ();
-               }
-
-               public override void VisitCLIHeader (CLIHeader header)
-               {
-                       if (m_image.PEOptionalHeader.DataDirectories.Debug != DataDirectory.Zero) {
-                               m_image.DebugHeader = new DebugHeader ();
-                               VisitDebugHeader (m_image.DebugHeader);
-                       }
-
-                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.CLIHeader.VirtualAddress);
-                       header.Cb = m_binaryReader.ReadUInt32 ();
-                       header.MajorRuntimeVersion = m_binaryReader.ReadUInt16 ();
-                       header.MinorRuntimeVersion = m_binaryReader.ReadUInt16 ();
-                       header.Metadata = ReadDataDirectory ();
-                       header.Flags = (RuntimeImage) m_binaryReader.ReadUInt32 ();
-                       header.EntryPointToken = m_binaryReader.ReadUInt32 ();
-                       header.Resources = ReadDataDirectory ();
-                       header.StrongNameSignature = ReadDataDirectory ();
-                       header.CodeManagerTable = ReadDataDirectory ();
-                       header.VTableFixups = ReadDataDirectory ();
-                       header.ExportAddressTableJumps = ReadDataDirectory ();
-                       header.ManagedNativeHeader = ReadDataDirectory ();
-
-                       if (header.StrongNameSignature != DataDirectory.Zero) {
-                               SetPositionToAddress (header.StrongNameSignature.VirtualAddress);
-                               header.ImageHash = m_binaryReader.ReadBytes ((int) header.StrongNameSignature.Size);
-                       } else
-                               header.ImageHash = new byte [0];
-
-                       SetPositionToAddress (m_image.CLIHeader.Metadata.VirtualAddress);
-                       m_image.MetadataRoot.Accept (m_mdReader);
-               }
-
-               public override void VisitDebugHeader (DebugHeader header)
-               {
-                       if (m_image.PEOptionalHeader.DataDirectories.Debug == DataDirectory.Zero)
-                               return;
-
-                       long pos = m_binaryReader.BaseStream.Position;
-
-                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.Debug.VirtualAddress);
-                       header.Characteristics = m_binaryReader.ReadUInt32 ();
-                       header.TimeDateStamp = m_binaryReader.ReadUInt32 ();
-                       header.MajorVersion = m_binaryReader.ReadUInt16 ();
-                       header.MinorVersion = m_binaryReader.ReadUInt16 ();
-                       header.Type = (DebugStoreType) m_binaryReader.ReadUInt32 ();
-                       header.SizeOfData = m_binaryReader.ReadUInt32 ();
-                       header.AddressOfRawData = ReadRVA ();
-                       header.PointerToRawData = m_binaryReader.ReadUInt32 ();
-
-                       m_binaryReader.BaseStream.Position = header.PointerToRawData;
-
-                       header.Magic = m_binaryReader.ReadUInt32 ();
-                       header.Signature = new Guid (m_binaryReader.ReadBytes (16));
-                       header.Age = m_binaryReader.ReadUInt32 ();
-                       header.FileName = ReadZeroTerminatedString ();
-
-                       m_binaryReader.BaseStream.Position = pos;
-               }
-
-               string ReadZeroTerminatedString ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       while (true) {
-                               byte chr = m_binaryReader.ReadByte ();
-                               if (chr == 0)
-                                       break;
-                               sb.Append ((char) chr);
-                       }
-                       return sb.ToString ();
-               }
-
-               public override void VisitImportTable (ImportTable it)
-               {
-                       if (m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress == RVA.Zero)
-                               return;
-
-                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress);
-
-                       it.ImportLookupTable = ReadRVA ();
-                       it.DateTimeStamp = m_binaryReader.ReadUInt32 ();
-                       it.ForwardChain = m_binaryReader.ReadUInt32 ();
-                       it.Name = ReadRVA ();
-                       it.ImportAddressTable = ReadRVA ();
-               }
-
-               public override void VisitImportLookupTable (ImportLookupTable ilt)
-               {
-                       if (m_image.ImportTable.ImportLookupTable == RVA.Zero)
-                               return;
-
-                       SetPositionToAddress (m_image.ImportTable.ImportLookupTable);
-
-                       ilt.HintNameRVA = ReadRVA ();
-               }
-
-               public override void VisitHintNameTable (HintNameTable hnt)
-               {
-                       if (m_image.ImportAddressTable.HintNameTableRVA == RVA.Zero)
-                               return;
-
-                       if ((m_image.ImportAddressTable.HintNameTableRVA & 0x80000000) != 0)
-                               return;
-
-                       SetPositionToAddress (m_image.ImportAddressTable.HintNameTableRVA);
-
-                       hnt.Hint = m_binaryReader.ReadUInt16 ();
-
-                       byte [] bytes = m_binaryReader.ReadBytes (11);
-                       hnt.RuntimeMain = Encoding.ASCII.GetString (bytes, 0, bytes.Length);
-
-                       SetPositionToAddress (m_image.ImportTable.Name);
-
-                       bytes = m_binaryReader.ReadBytes (11);
-                       hnt.RuntimeLibrary = Encoding.ASCII.GetString (bytes, 0, bytes.Length);
-
-                       SetPositionToAddress (m_image.PEOptionalHeader.StandardFields.EntryPointRVA);
-                       hnt.EntryPoint = m_binaryReader.ReadUInt16 ();
-                       hnt.RVA = ReadRVA ();
-               }
-
-               public override void VisitExportTable (ExportTable et)
-               {
-                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.ExportTable.VirtualAddress);
-
-                       et.Characteristics = m_binaryReader.ReadUInt32 ();
-                       et.TimeDateStamp = m_binaryReader.ReadUInt32 ();
-                       et.MajorVersion = m_binaryReader.ReadUInt16 ();
-                       et.MinorVersion = m_binaryReader.ReadUInt16 ();
-
-                       //et.Name =
-                       m_binaryReader.ReadUInt32 ();
-
-                       et.Base = m_binaryReader.ReadUInt32 ();
-                       et.NumberOfFunctions = m_binaryReader.ReadUInt32 ();
-                       et.NumberOfNames = m_binaryReader.ReadUInt32 ();
-                       et.AddressOfFunctions = m_binaryReader.ReadUInt32 ();
-                       et.AddressOfNames = m_binaryReader.ReadUInt32 ();
-                       et.AddressOfNameOrdinals = m_binaryReader.ReadUInt32 ();
-
-                       et.AddressesOfFunctions = ReadArrayOfRVA (et.AddressOfFunctions, et.NumberOfFunctions);
-                       et.AddressesOfNames = ReadArrayOfRVA (et.AddressOfNames, et.NumberOfNames);
-                       et.NameOrdinals = ReadArrayOfUInt16 (et.AddressOfNameOrdinals, et.NumberOfNames);
-                       et.Names = new string [et.NumberOfFunctions];
-
-                       for (int i = 0; i < et.NumberOfFunctions; i++) {
-                               if (et.AddressesOfFunctions [i] == 0)
-                                       continue;
-
-                               et.Names [i] = ReadFunctionName (et, i);
-                       }
-               }
-
-               string ReadFunctionName (ExportTable et, int index)
-               {
-                       for (int i = 0; i < et.NumberOfNames; i++) {
-                               if (et.NameOrdinals [i] != index)
-                                       continue;
-
-                               SetPositionToAddress (et.AddressesOfNames [i]);
-                               return ReadZeroTerminatedString ();
-                       }
-
-                       return string.Empty;
-               }
-
-               ushort [] ReadArrayOfUInt16 (RVA position, uint length)
-               {
-                       if (position == RVA.Zero)
-                               return new ushort [0];
-
-                       SetPositionToAddress (position);
-                       ushort [] array = new ushort [length];
-                       for (int i = 0; i < length; i++)
-                               array [i] = m_binaryReader.ReadUInt16 ();
-
-                       return array;
-               }
-
-               RVA [] ReadArrayOfRVA (RVA position, uint length)
-               {
-                       if (position == RVA.Zero)
-                               return new RVA [0];
-
-                       SetPositionToAddress (position);
-                       RVA [] addresses = new RVA [length];
-                       for (int i = 0; i < length; i++)
-                               addresses [i] = m_binaryReader.ReadUInt32 ();
-
-                       return addresses;
-               }
-
-               public override void TerminateImage(Image img)
-               {
-                       m_binaryReader.Close ();
-
-                       try {
-                               ResourceReader resReader = new ResourceReader (img);
-                               img.ResourceDirectoryRoot = resReader.Read ();
-                       } catch {
-                               img.ResourceDirectoryRoot = null;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageWriter.cs
deleted file mode 100644 (file)
index e88465d..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-//
-// ImageWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil.Metadata;
-
-       sealed class ImageWriter : BaseImageVisitor {
-
-               Image m_img;
-               AssemblyKind m_kind;
-               MetadataWriter m_mdWriter;
-               BinaryWriter m_binaryWriter;
-
-               Section m_textSect;
-               MemoryBinaryWriter m_textWriter;
-               Section m_relocSect;
-               MemoryBinaryWriter m_relocWriter;
-               Section m_rsrcSect;
-               MemoryBinaryWriter m_rsrcWriter;
-
-               public ImageWriter (MetadataWriter writer, AssemblyKind kind, BinaryWriter bw)
-               {
-                       m_mdWriter= writer;
-                       m_img = writer.GetMetadataRoot ().GetImage ();
-                       m_kind = kind;
-                       m_binaryWriter = bw;
-
-                       m_textWriter = new MemoryBinaryWriter ();
-                       m_textWriter.BaseStream.Position = 80;
-                       m_relocWriter = new MemoryBinaryWriter ();
-               }
-
-               public Image GetImage ()
-               {
-                       return m_img;
-               }
-
-               public MemoryBinaryWriter GetTextWriter ()
-               {
-                       return m_textWriter;
-               }
-
-               public uint GetAligned (uint integer, uint alignWith)
-               {
-                       return (integer + alignWith - 1) & ~(alignWith - 1);
-               }
-
-               public void Initialize ()
-               {
-                       Image img = m_img;
-                       ResourceWriter resWriter = null;
-
-                       uint sectAlign = img.PEOptionalHeader.NTSpecificFields.SectionAlignment;
-                       uint fileAlign = img.PEOptionalHeader.NTSpecificFields.FileAlignment;
-
-                       m_textSect = img.TextSection;
-                       foreach (Section s in img.Sections) {
-                               if (s.Name == Section.Relocs)
-                                       m_relocSect = s;
-                               else if (s.Name == Section.Resources) {
-                                       m_rsrcSect = s;
-                                       m_rsrcWriter = new MemoryBinaryWriter ();
-
-                                       resWriter = new ResourceWriter (img, m_rsrcSect, m_rsrcWriter);
-                                       resWriter.Write ();
-                               }
-                       }
-
-                       // size computations, fields setting, etc.
-                       uint nbSects = (uint) img.Sections.Count;
-                       img.PEFileHeader.NumberOfSections = (ushort) nbSects;
-
-                       // build the reloc section data
-                       uint relocSize = 12;
-                       m_relocWriter.Write ((uint) 0);
-                       m_relocWriter.Write (relocSize);
-                       m_relocWriter.Write ((ushort) 0);
-                       m_relocWriter.Write ((ushort) 0);
-
-                       m_textSect.VirtualSize = (uint) m_textWriter.BaseStream.Length;
-                       m_relocSect.VirtualSize = (uint) m_relocWriter.BaseStream.Length;
-                       if (m_rsrcSect != null)
-                               m_rsrcSect.VirtualSize = (uint) m_rsrcWriter.BaseStream.Length;
-
-                       // start counting before sections headers
-                       // section start + section header sixe * number of sections
-                       uint headersEnd = 0x178 + 0x28 * nbSects;
-                       uint fileOffset = headersEnd;
-                       uint sectOffset = sectAlign;
-                       uint imageSize = 0;
-
-                       foreach (Section sect in img.Sections) {
-                               fileOffset = GetAligned (fileOffset, fileAlign);
-                               sectOffset = GetAligned (sectOffset, sectAlign);
-
-                               sect.PointerToRawData = new RVA (fileOffset);
-                               sect.VirtualAddress = new RVA (sectOffset);
-                               sect.SizeOfRawData = GetAligned (sect.VirtualSize, fileAlign);
-
-                               fileOffset += sect.SizeOfRawData;
-                               sectOffset += sect.SizeOfRawData;
-                               imageSize += GetAligned (sect.SizeOfRawData, sectAlign);
-                       }
-
-                       if (m_textSect.VirtualAddress.Value != 0x2000)
-                               throw new ImageFormatException ("Wrong RVA for .text section");
-
-                       if (resWriter != null)
-                               resWriter.Patch ();
-
-                       img.PEOptionalHeader.StandardFields.CodeSize = GetAligned (
-                               m_textSect.SizeOfRawData, fileAlign);
-                       img.PEOptionalHeader.StandardFields.InitializedDataSize = m_textSect.SizeOfRawData;
-                       if (m_rsrcSect != null)
-                               img.PEOptionalHeader.StandardFields.InitializedDataSize += m_rsrcSect.SizeOfRawData;
-                       img.PEOptionalHeader.StandardFields.BaseOfCode = m_textSect.VirtualAddress;
-                       img.PEOptionalHeader.StandardFields.BaseOfData = m_relocSect.VirtualAddress;
-
-                       imageSize += headersEnd;
-                       img.PEOptionalHeader.NTSpecificFields.ImageSize = GetAligned (imageSize, sectAlign);
-
-                       img.PEOptionalHeader.DataDirectories.BaseRelocationTable = new DataDirectory (
-                               m_relocSect.VirtualAddress, m_relocSect.VirtualSize);
-                       if (m_rsrcSect != null)
-                               img.PEOptionalHeader.DataDirectories.ResourceTable = new DataDirectory (
-                                       m_rsrcSect.VirtualAddress, (uint) m_rsrcWriter.BaseStream.Length);
-
-                       if (m_kind == AssemblyKind.Dll) {
-                               img.PEFileHeader.Characteristics = ImageCharacteristics.CILOnlyDll;
-                               img.HintNameTable.RuntimeMain = HintNameTable.RuntimeMainDll;
-                               img.PEOptionalHeader.NTSpecificFields.DLLFlags = 0x400;
-                       } else {
-                               img.PEFileHeader.Characteristics = ImageCharacteristics.CILOnlyExe;
-                               img.HintNameTable.RuntimeMain = HintNameTable.RuntimeMainExe;
-                       }
-
-                       switch (m_kind) {
-                       case AssemblyKind.Dll :
-                       case AssemblyKind.Console :
-                               img.PEOptionalHeader.NTSpecificFields.SubSystem = SubSystem.WindowsCui;
-                               break;
-                       case AssemblyKind.Windows :
-                               img.PEOptionalHeader.NTSpecificFields.SubSystem = SubSystem.WindowsGui;
-                               break;
-                       }
-
-                       RVA importTable = new RVA (img.TextSection.VirtualAddress + m_mdWriter.ImportTablePosition);
-
-                       img.PEOptionalHeader.DataDirectories.ImportTable = new DataDirectory (importTable, 0x57);
-
-                       img.ImportTable.ImportLookupTable = new RVA ((uint) importTable + 0x28);
-
-                       img.ImportLookupTable.HintNameRVA = img.ImportAddressTable.HintNameTableRVA =
-                               new RVA ((uint) img.ImportTable.ImportLookupTable + 0x14);
-                       img.ImportTable.Name = new RVA ((uint) img.ImportLookupTable.HintNameRVA + 0xe);
-               }
-
-               public override void VisitDOSHeader (DOSHeader header)
-               {
-                       m_binaryWriter.Write (header.Start);
-                       m_binaryWriter.Write (header.Lfanew);
-                       m_binaryWriter.Write (header.End);
-
-                       m_binaryWriter.Write ((ushort) 0x4550);
-                       m_binaryWriter.Write ((ushort) 0);
-               }
-
-               public override void VisitPEFileHeader (PEFileHeader header)
-               {
-                       m_binaryWriter.Write (header.Machine);
-                       m_binaryWriter.Write (header.NumberOfSections);
-                       m_binaryWriter.Write (header.TimeDateStamp);
-                       m_binaryWriter.Write (header.PointerToSymbolTable);
-                       m_binaryWriter.Write (header.NumberOfSymbols);
-                       m_binaryWriter.Write (header.OptionalHeaderSize);
-                       m_binaryWriter.Write ((ushort) header.Characteristics);
-               }
-
-               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
-               {
-                       WriteIntOrLong (header.ImageBase);
-                       m_binaryWriter.Write (header.SectionAlignment);
-                       m_binaryWriter.Write (header.FileAlignment);
-                       m_binaryWriter.Write (header.OSMajor);
-                       m_binaryWriter.Write (header.OSMinor);
-                       m_binaryWriter.Write (header.UserMajor);
-                       m_binaryWriter.Write (header.UserMinor);
-                       m_binaryWriter.Write (header.SubSysMajor);
-                       m_binaryWriter.Write (header.SubSysMinor);
-                       m_binaryWriter.Write (header.Reserved);
-                       m_binaryWriter.Write (header.ImageSize);
-                       m_binaryWriter.Write (header.HeaderSize);
-                       m_binaryWriter.Write (header.FileChecksum);
-                       m_binaryWriter.Write ((ushort) header.SubSystem);
-                       m_binaryWriter.Write (header.DLLFlags);
-                       WriteIntOrLong (header.StackReserveSize);
-                       WriteIntOrLong (header.StackCommitSize);
-                       WriteIntOrLong (header.HeapReserveSize);
-                       WriteIntOrLong (header.HeapCommitSize);
-                       m_binaryWriter.Write (header.LoaderFlags);
-                       m_binaryWriter.Write (header.NumberOfDataDir);
-               }
-
-               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
-               {
-                       m_binaryWriter.Write (header.Magic);
-                       m_binaryWriter.Write (header.LMajor);
-                       m_binaryWriter.Write (header.LMinor);
-                       m_binaryWriter.Write (header.CodeSize);
-                       m_binaryWriter.Write (header.InitializedDataSize);
-                       m_binaryWriter.Write (header.UninitializedDataSize);
-                       m_binaryWriter.Write (header.EntryPointRVA.Value);
-                       m_binaryWriter.Write (header.BaseOfCode.Value);
-                       if (!header.IsPE64)
-                               m_binaryWriter.Write (header.BaseOfData.Value);
-               }
-
-               void WriteIntOrLong (ulong value)
-               {
-                       if (m_img.PEOptionalHeader.StandardFields.IsPE64)
-                               m_binaryWriter.Write (value);
-                       else
-                               m_binaryWriter.Write ((uint) value);
-               }
-
-               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
-               {
-                       m_binaryWriter.Write (header.ExportTable.VirtualAddress);
-                       m_binaryWriter.Write (header.ExportTable.Size);
-                       m_binaryWriter.Write (header.ImportTable.VirtualAddress);
-                       m_binaryWriter.Write (header.ImportTable.Size);
-                       m_binaryWriter.Write (header.ResourceTable.VirtualAddress);
-                       m_binaryWriter.Write (header.ResourceTable.Size);
-                       m_binaryWriter.Write (header.ExceptionTable.VirtualAddress);
-                       m_binaryWriter.Write (header.ExceptionTable.Size);
-                       m_binaryWriter.Write (header.CertificateTable.VirtualAddress);
-                       m_binaryWriter.Write (header.CertificateTable.Size);
-                       m_binaryWriter.Write (header.BaseRelocationTable.VirtualAddress);
-                       m_binaryWriter.Write (header.BaseRelocationTable.Size);
-                       m_binaryWriter.Write (header.Debug.VirtualAddress);
-                       m_binaryWriter.Write (header.Debug.Size);
-                       m_binaryWriter.Write (header.Copyright.VirtualAddress);
-                       m_binaryWriter.Write (header.Copyright.Size);
-                       m_binaryWriter.Write (header.GlobalPtr.VirtualAddress);
-                       m_binaryWriter.Write (header.GlobalPtr.Size);
-                       m_binaryWriter.Write (header.TLSTable.VirtualAddress);
-                       m_binaryWriter.Write (header.TLSTable.Size);
-                       m_binaryWriter.Write (header.LoadConfigTable.VirtualAddress);
-                       m_binaryWriter.Write (header.LoadConfigTable.Size);
-                       m_binaryWriter.Write (header.BoundImport.VirtualAddress);
-                       m_binaryWriter.Write (header.BoundImport.Size);
-                       m_binaryWriter.Write (header.IAT.VirtualAddress);
-                       m_binaryWriter.Write (header.IAT.Size);
-                       m_binaryWriter.Write (header.DelayImportDescriptor.VirtualAddress);
-                       m_binaryWriter.Write (header.DelayImportDescriptor.Size);
-                       m_binaryWriter.Write (header.CLIHeader.VirtualAddress);
-                       m_binaryWriter.Write (header.CLIHeader.Size);
-                       m_binaryWriter.Write (header.Reserved.VirtualAddress);
-                       m_binaryWriter.Write (header.Reserved.Size);
-               }
-
-               public override void VisitSection (Section sect)
-               {
-                       m_binaryWriter.Write (Encoding.ASCII.GetBytes (sect.Name));
-                       int more = 8 - sect.Name.Length;
-                       for (int i = 0; i < more; i++)
-                               m_binaryWriter.Write ((byte) 0);
-
-                       m_binaryWriter.Write (sect.VirtualSize);
-                       m_binaryWriter.Write (sect.VirtualAddress.Value);
-                       m_binaryWriter.Write (sect.SizeOfRawData);
-                       m_binaryWriter.Write (sect.PointerToRawData.Value);
-                       m_binaryWriter.Write (sect.PointerToRelocations.Value);
-                       m_binaryWriter.Write (sect.PointerToLineNumbers.Value);
-                       m_binaryWriter.Write (sect.NumberOfRelocations);
-                       m_binaryWriter.Write (sect.NumberOfLineNumbers);
-                       m_binaryWriter.Write ((uint) sect.Characteristics);
-               }
-
-               public override void VisitImportAddressTable (ImportAddressTable iat)
-               {
-                       m_textWriter.BaseStream.Position = 0;
-                       m_textWriter.Write (iat.HintNameTableRVA.Value);
-                       m_textWriter.Write (new byte [4]);
-               }
-
-               public override void VisitCLIHeader (CLIHeader header)
-               {
-                       m_textWriter.Write (header.Cb);
-
-                       if (m_mdWriter.TargetRuntime >= TargetRuntime.NET_2_0) {
-                               m_textWriter.Write ((ushort) 2);
-                               m_textWriter.Write ((ushort) 5);
-                       } else {
-                               m_textWriter.Write ((ushort) 2);
-                               m_textWriter.Write ((ushort) 0);
-                       }
-
-                       m_textWriter.Write (header.Metadata.VirtualAddress);
-                       m_textWriter.Write (header.Metadata.Size);
-                       m_textWriter.Write ((uint) header.Flags);
-                       m_textWriter.Write (header.EntryPointToken);
-                       m_textWriter.Write (header.Resources.VirtualAddress);
-                       m_textWriter.Write (header.Resources.Size);
-                       m_textWriter.Write (header.StrongNameSignature.VirtualAddress);
-                       m_textWriter.Write (header.StrongNameSignature.Size);
-                       m_textWriter.Write (header.CodeManagerTable.VirtualAddress);
-                       m_textWriter.Write (header.CodeManagerTable.Size);
-                       m_textWriter.Write (header.VTableFixups.VirtualAddress);
-                       m_textWriter.Write (header.VTableFixups.Size);
-                       m_textWriter.Write (header.ExportAddressTableJumps.VirtualAddress);
-                       m_textWriter.Write (header.ExportAddressTableJumps.Size);
-                       m_textWriter.Write (header.ManagedNativeHeader.VirtualAddress);
-                       m_textWriter.Write (header.ManagedNativeHeader.Size);
-               }
-
-               public override void VisitDebugHeader (DebugHeader header)
-               {
-                       m_textWriter.BaseStream.Position = m_mdWriter.DebugHeaderPosition;
-                       uint sizeUntilData = 0x1c;
-                       header.AddressOfRawData = m_img.TextSection.VirtualAddress + m_mdWriter.DebugHeaderPosition + sizeUntilData;
-                       header.PointerToRawData = 0x200 + m_mdWriter.DebugHeaderPosition + sizeUntilData;
-                       header.SizeOfData = 0x18 + (uint) header.FileName.Length + 1;
-
-                       m_textWriter.Write (header.Characteristics);
-                       m_textWriter.Write (header.TimeDateStamp);
-                       m_textWriter.Write (header.MajorVersion);
-                       m_textWriter.Write (header.MinorVersion);
-                       m_textWriter.Write ((uint) header.Type);
-                       m_textWriter.Write (header.SizeOfData);
-                       m_textWriter.Write (header.AddressOfRawData.Value);
-                       m_textWriter.Write (header.PointerToRawData);
-
-                       m_textWriter.Write (header.Magic);
-                       m_textWriter.Write (header.Signature.ToByteArray ());
-                       m_textWriter.Write (header.Age);
-                       m_textWriter.Write (Encoding.ASCII.GetBytes (header.FileName));
-                       m_textWriter.Write ((byte) 0);
-               }
-
-               public override void VisitImportTable (ImportTable it)
-               {
-                       m_textWriter.BaseStream.Position = m_mdWriter.ImportTablePosition;
-                       m_textWriter.Write (it.ImportLookupTable.Value);
-                       m_textWriter.Write (it.DateTimeStamp);
-                       m_textWriter.Write (it.ForwardChain);
-                       m_textWriter.Write (it.Name.Value);
-                       m_textWriter.Write (it.ImportAddressTable.Value);
-                       m_textWriter.Write (new byte [20]);
-               }
-
-               public override void VisitImportLookupTable (ImportLookupTable ilt)
-               {
-                       m_textWriter.Write (ilt.HintNameRVA.Value);
-                       m_textWriter.Write (new byte [16]);
-               }
-
-               public override void VisitHintNameTable (HintNameTable hnt)
-               {
-                       m_textWriter.Write (hnt.Hint);
-                       m_textWriter.Write (Encoding.ASCII.GetBytes (hnt.RuntimeMain));
-                       m_textWriter.Write ('\0');
-                       m_textWriter.Write (Encoding.ASCII.GetBytes (hnt.RuntimeLibrary));
-                       m_textWriter.Write ('\0');
-                       m_textWriter.Write (new byte [4]);
-
-                       // patch header with ep rva
-                       RVA ep = m_img.TextSection.VirtualAddress +
-                               (uint) m_textWriter.BaseStream.Position;
-                       long pos = m_binaryWriter.BaseStream.Position;
-                       m_binaryWriter.BaseStream.Position = 0xa8;
-                       m_binaryWriter.Write (ep.Value);
-                       m_binaryWriter.BaseStream.Position = pos;
-
-                       // patch reloc Sect with ep
-                       uint reloc = (ep.Value + 2) % 0x1000;
-                       uint rva = (ep.Value + 2) - reloc;
-
-                       m_relocWriter.BaseStream.Position = 0;
-                       m_relocWriter.Write (rva);
-                       m_relocWriter.BaseStream.Position = 8;
-                       m_relocWriter.Write ((ushort) ((3 << 12) | reloc));
-
-                       m_textWriter.Write (hnt.EntryPoint);
-                       m_textWriter.Write (hnt.RVA);
-               }
-
-               public override void TerminateImage (Image img)
-               {
-                       m_binaryWriter.BaseStream.Position = 0x200;
-
-                       WriteSection (m_textSect, m_textWriter);
-                       WriteSection (m_relocSect, m_relocWriter);
-                       if (m_rsrcSect != null)
-                               WriteSection (m_rsrcSect, m_rsrcWriter);
-               }
-
-               void WriteSection (Section sect, MemoryBinaryWriter sectWriter)
-               {
-                       sectWriter.MemoryStream.WriteTo (m_binaryWriter.BaseStream);
-                       m_binaryWriter.Write (new byte [
-                                               sect.SizeOfRawData - sectWriter.BaseStream.Length]);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs
deleted file mode 100644 (file)
index 021cb39..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// Imports.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class ImportAddressTable : IBinaryVisitable {
-
-               public RVA HintNameTableRVA;
-
-               internal ImportAddressTable ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitImportAddressTable (this);
-               }
-       }
-
-       public sealed class ImportTable : IBinaryVisitable {
-
-               public RVA ImportLookupTable;
-               public uint DateTimeStamp;
-               public uint ForwardChain;
-               public RVA Name;
-               public RVA ImportAddressTable;
-
-               internal ImportTable ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitImportTable (this);
-               }
-       }
-
-       public sealed class ImportLookupTable : IBinaryVisitable {
-
-               public RVA HintNameRVA;
-
-               internal ImportLookupTable ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitImportLookupTable (this);
-               }
-       }
-
-       public sealed class HintNameTable : IBinaryVisitable {
-
-               public const string RuntimeMainExe = "_CorExeMain";
-               public const string RuntimeMainDll = "_CorDllMain";
-               public const string RuntimeCorEE = "mscoree.dll";
-
-               public ushort Hint;
-               public string RuntimeMain;
-               public string RuntimeLibrary;
-               public ushort EntryPoint;
-               public RVA RVA;
-
-               internal HintNameTable ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitHintNameTable (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/MemoryBinaryWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/MemoryBinaryWriter.cs
deleted file mode 100644 (file)
index 7d8f590..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// MemoryBinaryWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System.IO;
-       using System.Text;
-
-       internal sealed class MemoryBinaryWriter : BinaryWriter {
-
-               public MemoryStream MemoryStream {
-                       get { return (MemoryStream) this.BaseStream; }
-               }
-
-               public MemoryBinaryWriter () : base (new MemoryStream ())
-               {
-               }
-
-               public MemoryBinaryWriter (Encoding enc) : base (new MemoryStream (), enc)
-               {
-               }
-
-               public void Empty ()
-               {
-                       BaseStream.Position = 0;
-                       BaseStream.SetLength (0);
-               }
-
-               public void Write (MemoryBinaryWriter writer)
-               {
-                       writer.MemoryStream.WriteTo (this.BaseStream);
-               }
-
-               public byte [] ToArray ()
-               {
-                       return MemoryStream.ToArray ();
-               }
-
-               public void QuadAlign ()
-               {
-                       BaseStream.Position += 3;
-                       BaseStream.Position &= ~3;
-
-                       if (BaseStream.Position > BaseStream.Length)
-                               BaseStream.SetLength (BaseStream.Position);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs
deleted file mode 100644 (file)
index f38ee62..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// PEFileHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class PEFileHeader : IHeader, IBinaryVisitable {
-
-               public ushort Machine;
-               public ushort NumberOfSections;
-               public uint TimeDateStamp;
-               public uint PointerToSymbolTable;
-               public uint NumberOfSymbols;
-               public ushort OptionalHeaderSize;
-               public ImageCharacteristics Characteristics;
-
-               internal PEFileHeader ()
-               {
-               }
-
-               public void SetDefaultValues ()
-               {
-                       Machine = 0x14c;
-                       PointerToSymbolTable = 0;
-                       NumberOfSymbols = 0;
-                       OptionalHeaderSize = 0xe0;
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitPEFileHeader (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs
deleted file mode 100644 (file)
index 0f27ff7..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-//
-// PEOptionalHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class PEOptionalHeader : IHeader, IBinaryVisitable {
-
-               public StandardFieldsHeader StandardFields;
-               public NTSpecificFieldsHeader NTSpecificFields;
-               public DataDirectoriesHeader DataDirectories;
-
-               internal PEOptionalHeader ()
-               {
-                       StandardFields = new StandardFieldsHeader ();
-                       NTSpecificFields = new NTSpecificFieldsHeader ();
-                       DataDirectories = new DataDirectoriesHeader ();
-               }
-
-               public void SetDefaultValues ()
-               {
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitPEOptionalHeader (this);
-
-                       StandardFields.Accept (visitor);
-                       NTSpecificFields.Accept (visitor);
-                       DataDirectories.Accept (visitor);
-               }
-
-               public sealed class StandardFieldsHeader : IHeader, IBinaryVisitable {
-
-                       public ushort Magic;
-                       public byte LMajor;
-                       public byte LMinor;
-                       public uint CodeSize;
-                       public uint InitializedDataSize;
-                       public uint UninitializedDataSize;
-                       public RVA EntryPointRVA;
-                       public RVA BaseOfCode;
-                       public RVA BaseOfData;
-
-                       public bool IsPE64 {
-                               get { return Magic == 0x20b; }
-                               set {
-                                       if (value)
-                                               Magic = 0x20b;
-                                       else
-                                               Magic = 0x10b;
-                               }
-                       }
-
-                       internal StandardFieldsHeader ()
-                       {
-                       }
-
-                       public void SetDefaultValues ()
-                       {
-                               Magic = 0x10b;
-                               LMajor = 6;
-                               LMinor = 0;
-                       }
-
-                       public void Accept (IBinaryVisitor visitor)
-                       {
-                               visitor.VisitStandardFieldsHeader (this);
-                       }
-               }
-
-               public sealed class NTSpecificFieldsHeader : IHeader, IBinaryVisitable {
-
-                       public ulong ImageBase;
-                       public uint SectionAlignment;
-                       public uint FileAlignment;
-                       public ushort OSMajor;
-                       public ushort OSMinor;
-                       public ushort UserMajor;
-                       public ushort UserMinor;
-                       public ushort SubSysMajor;
-                       public ushort SubSysMinor;
-                       public uint Reserved;
-                       public uint ImageSize;
-                       public uint HeaderSize;
-                       public uint FileChecksum;
-                       public SubSystem SubSystem;
-                       public ushort DLLFlags;
-                       public ulong StackReserveSize;
-                       public ulong StackCommitSize;
-                       public ulong HeapReserveSize;
-                       public ulong HeapCommitSize;
-                       public uint LoaderFlags;
-                       public uint NumberOfDataDir;
-
-                       internal NTSpecificFieldsHeader ()
-                       {
-                       }
-
-                       public void SetDefaultValues ()
-                       {
-                               ImageBase = 0x400000;
-                               SectionAlignment = 0x2000;
-                               FileAlignment = 0x200;
-                               OSMajor = 4;
-                               OSMinor = 0;
-                               UserMajor = 0;
-                               UserMinor = 0;
-                               SubSysMajor = 4;
-                               SubSysMinor = 0;
-                               Reserved = 0;
-                               HeaderSize = 0x200;
-                               FileChecksum = 0;
-                               DLLFlags = 0;
-                               StackReserveSize = 0x100000;
-                               StackCommitSize = 0x1000;
-                               HeapReserveSize = 0x100000;
-                               HeapCommitSize = 0x1000;
-                               LoaderFlags = 0;
-                               NumberOfDataDir = 0x10;
-                       }
-
-                       public void Accept (IBinaryVisitor visitor)
-                       {
-                               visitor.VisitNTSpecificFieldsHeader (this);
-                       }
-               }
-
-               public sealed class DataDirectoriesHeader : IHeader, IBinaryVisitable {
-
-                       public DataDirectory ExportTable;
-                       public DataDirectory ImportTable;
-                       public DataDirectory ResourceTable;
-                       public DataDirectory ExceptionTable;
-                       public DataDirectory CertificateTable;
-                       public DataDirectory BaseRelocationTable;
-                       public DataDirectory Debug;
-                       public DataDirectory Copyright;
-                       public DataDirectory GlobalPtr;
-                       public DataDirectory TLSTable;
-                       public DataDirectory LoadConfigTable;
-                       public DataDirectory BoundImport;
-                       public DataDirectory IAT;
-                       public DataDirectory DelayImportDescriptor;
-                       public DataDirectory CLIHeader;
-                       public DataDirectory Reserved;
-
-                       internal DataDirectoriesHeader ()
-                       {
-                       }
-
-                       public void SetDefaultValues ()
-                       {
-                               ExportTable = DataDirectory.Zero;
-                               ResourceTable = DataDirectory.Zero;
-                               ExceptionTable = DataDirectory.Zero;
-                               CertificateTable = DataDirectory.Zero;
-                               Debug = DataDirectory.Zero;
-                               Copyright = DataDirectory.Zero;
-                               GlobalPtr = DataDirectory.Zero;
-                               TLSTable = DataDirectory.Zero;
-                               LoadConfigTable = DataDirectory.Zero;
-                               BoundImport = DataDirectory.Zero;
-                               IAT = new DataDirectory (new RVA (0x2000), 8);
-                               DelayImportDescriptor = DataDirectory.Zero;
-                               CLIHeader = new DataDirectory (new RVA (0x2008), 0x48);
-                               Reserved = DataDirectory.Zero;
-                       }
-
-                       public void Accept (IBinaryVisitor visitor)
-                       {
-                               visitor.VisitDataDirectoriesHeader (this);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs
deleted file mode 100644 (file)
index 0c0370b..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// RVA.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public struct RVA {
-
-               public static readonly RVA Zero = new RVA (0);
-
-               uint m_rva;
-
-               public uint Value {
-                       get { return m_rva; }
-                       set { m_rva = value; }
-               }
-
-               public RVA (uint rva)
-               {
-                       m_rva = rva;
-               }
-
-               public override int GetHashCode ()
-               {
-                       return (int) m_rva;
-               }
-
-               public override bool Equals (object other)
-               {
-                       if (other is RVA)
-                               return this.m_rva == ((RVA) other).m_rva;
-
-                       return false;
-               }
-
-               public override string ToString ()
-               {
-                       return string.Format ("0x{0}", m_rva.ToString ("X"));
-               }
-
-               public static bool operator == (RVA one, RVA other)
-               {
-                       return one.m_rva == other.m_rva;
-               }
-
-               public static bool operator != (RVA one, RVA other)
-               {
-                       return one.m_rva != other.m_rva;
-               }
-
-               public static bool operator < (RVA one, RVA other)
-               {
-                       return one.m_rva < other.m_rva;
-               }
-
-               public static bool operator > (RVA one, RVA other)
-               {
-                       return one.m_rva > other.m_rva;
-               }
-
-               public static bool operator <= (RVA one, RVA other)
-               {
-                       return one.m_rva <= other.m_rva;
-               }
-
-               public static bool operator >= (RVA one, RVA other)
-               {
-                       return one.m_rva >= other.m_rva;
-               }
-
-               public static RVA operator + (RVA rva, uint x)
-               {
-                       return new RVA (rva.m_rva + x);
-               }
-
-               public static RVA operator - (RVA rva, uint x)
-               {
-                       return new RVA (rva.m_rva - x);
-               }
-
-               public static implicit operator RVA (uint val)
-               {
-                       return val == 0 ? Zero : new RVA (val);
-               }
-
-               public static implicit operator uint (RVA rva)
-               {
-                       return rva.m_rva;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs
deleted file mode 100644 (file)
index c2b3b3f..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// ResourceDataEntry.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public class ResourceDataEntry : ResourceNode {
-
-               public RVA Data;
-               public uint Size;
-               public uint Codepage;
-               public uint Reserved = 0;
-
-               public byte [] ResourceData;
-
-               public ResourceDataEntry (int offset) : base (offset)
-               {
-               }
-
-               public ResourceDataEntry ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
deleted file mode 100644 (file)
index 5588b3c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// ResourceDirectoryEntry.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public class ResourceDirectoryEntry : ResourceNode {
-
-               private bool m_idByName;
-
-               public int ID;
-               public ResourceDirectoryString Name;
-
-               public bool IdentifiedByName {
-                       get { return m_idByName; }
-               }
-
-               public ResourceNode Child;
-
-               public ResourceDirectoryEntry (ResourceDirectoryString name)
-               {
-                       this.Name = name;
-                       m_idByName = true;
-               }
-
-               public ResourceDirectoryEntry (ResourceDirectoryString name, int offset) : base (offset)
-               {
-                       this.Name = name;
-                       m_idByName = true;
-               }
-
-               public ResourceDirectoryEntry (int id)
-               {
-                       this.ID = id;
-               }
-
-               public ResourceDirectoryEntry (int id, int offset) : base (offset)
-               {
-                       this.ID = id;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs
deleted file mode 100644 (file)
index 8c006e0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ResourceDirectoryString.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public class ResourceDirectoryString : ResourceNode {
-
-               public string String;
-
-               public ResourceDirectoryString (string str)
-               {
-                       this.String = str;
-               }
-
-               public ResourceDirectoryString (string str, int offset) : base (offset)
-               {
-                       this.String = str;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs
deleted file mode 100644 (file)
index 12517bf..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// ResourceDirectoryTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System.Collections;
-
-       public class ResourceDirectoryTable : ResourceNode {
-
-               private ArrayList m_entries;
-
-               public uint Characteristics;
-               public uint TimeDateStamp;
-               public ushort MajorVersion;
-               public ushort MinorVersion;
-
-               public IList Entries {
-                       get { return m_entries; }
-               }
-
-               public ResourceDirectoryTable (int offset) : base (offset)
-               {
-                       m_entries = new ArrayList ();
-               }
-
-               public ResourceDirectoryTable ()
-               {
-                       m_entries = new ArrayList ();
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs
deleted file mode 100644 (file)
index b51ebd5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// ResourceNode.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public abstract class ResourceNode {
-
-               public int Offset;
-
-               internal ResourceNode (int offset)
-               {
-                       this.Offset = offset;
-               }
-
-               internal ResourceNode ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceReader.cs
deleted file mode 100644 (file)
index 694ecea..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// ResourceReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-       using System.IO;
-       using System.Text;
-
-       sealed class ResourceReader {
-
-               Image m_img;
-               Section m_rsrc;
-               BinaryReader m_reader;
-
-               public ResourceReader (Image img)
-               {
-                       m_img = img;
-               }
-
-               public ResourceDirectoryTable Read ()
-               {
-                       m_rsrc = GetResourceSection ();
-                       if (m_rsrc == null)
-                               return null;
-
-                       m_reader = new BinaryReader (new MemoryStream (m_rsrc.Data));
-                       return ReadDirectoryTable ();
-               }
-
-               Section GetResourceSection ()
-               {
-                       foreach (Section s in m_img.Sections)
-                               if (s.Name == Section.Resources)
-                                       return s;
-
-                       return null;
-               }
-
-               int GetOffset ()
-               {
-                       return (int) m_reader.BaseStream.Position;
-               }
-
-               ResourceDirectoryTable ReadDirectoryTable ()
-               {
-                       ResourceDirectoryTable rdt = new ResourceDirectoryTable (GetOffset ());
-                       rdt.Characteristics = m_reader.ReadUInt32 ();
-                       rdt.TimeDateStamp = m_reader.ReadUInt32 ();
-                       rdt.MajorVersion = m_reader.ReadUInt16 ();
-                       rdt.MinorVersion = m_reader.ReadUInt16 ();
-                       ushort nameEntries = m_reader.ReadUInt16 ();
-                       ushort idEntries = m_reader.ReadUInt16 ();
-
-                       for (int i = 0; i < nameEntries; i++)
-                               rdt.Entries.Add (ReadDirectoryEntry ());
-
-                       for (int i = 0; i < idEntries; i++)
-                               rdt.Entries.Add (ReadDirectoryEntry ());
-
-                       return rdt;
-               }
-
-               ResourceDirectoryEntry ReadDirectoryEntry ()
-               {
-                       uint name = m_reader.ReadUInt32 ();
-                       uint child = m_reader.ReadUInt32 ();
-
-                       ResourceDirectoryEntry rde;
-                       if ((name & 0x80000000) != 0)
-                               rde = new ResourceDirectoryEntry (ReadDirectoryString ((int) name & 0x7fffffff), GetOffset ());
-                       else
-                               rde = new ResourceDirectoryEntry ((int) name & 0x7fffffff, GetOffset ());
-
-                       long pos = m_reader.BaseStream.Position;
-                       m_reader.BaseStream.Position = child & 0x7fffffff;
-
-                       if ((child & 0x80000000) != 0)
-                               rde.Child = ReadDirectoryTable ();
-                       else
-                               rde.Child = ReadDataEntry ();
-
-                       m_reader.BaseStream.Position = pos;
-
-                       return rde;
-               }
-
-               ResourceDirectoryString ReadDirectoryString (int offset)
-               {
-                       long pos = m_reader.BaseStream.Position;
-                       m_reader.BaseStream.Position = offset;
-
-                       byte [] str = m_reader.ReadBytes (m_reader.ReadUInt16 ());
-
-                       ResourceDirectoryString rds = new ResourceDirectoryString (
-                               Encoding.Unicode.GetString (str, 0, str.Length),
-                               GetOffset ());
-
-                       m_reader.BaseStream.Position = pos;
-
-                       return rds;
-               }
-
-               ResourceNode ReadDataEntry ()
-               {
-                       ResourceDataEntry rde = new ResourceDataEntry (GetOffset ());
-                       rde.Data = m_reader.ReadUInt32 ();
-                       rde.Size = m_reader.ReadUInt32 ();
-                       rde.Codepage = m_reader.ReadUInt32 ();
-                       rde.Reserved = m_reader.ReadUInt32 ();
-
-                       Section sect = m_img.GetSectionAtVirtualAddress (rde.Data);
-                       byte [] data = new byte [rde.Size];
-                       Buffer.BlockCopy (sect.Data, (int)(long)(rde.Data - sect.VirtualAddress), data, 0, (int)rde.Size);
-                       rde.ResourceData = data;
-
-                       return rde;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceWriter.cs
deleted file mode 100644 (file)
index 5f6de0d..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// ResourceWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Text;
-
-namespace Mono.Cecil.Binary {
-
-       using System.Collections;
-
-       sealed class ResourceWriter {
-
-               Image m_img;
-               Section m_rsrc;
-               MemoryBinaryWriter m_writer;
-
-               ArrayList m_dataEntries;
-               ArrayList m_stringEntries;
-
-               long m_pos;
-
-               public ResourceWriter (Image img, Section rsrc, MemoryBinaryWriter writer)
-               {
-                       m_img = img;
-                       m_rsrc = rsrc;
-                       m_writer = writer;
-
-                       m_dataEntries = new ArrayList ();
-                       m_stringEntries = new ArrayList ();
-               }
-
-               public void Write ()
-               {
-                       if (m_img.ResourceDirectoryRoot == null)
-                               return;
-
-                       ComputeOffset (m_img.ResourceDirectoryRoot);
-                       WriteResourceDirectoryTable (m_img.ResourceDirectoryRoot);
-               }
-
-               public void Patch ()
-               {
-                       foreach (ResourceDataEntry rde in m_dataEntries) {
-                               GotoOffset (rde.Offset);
-                               m_writer.Write ((uint) rde.Data + m_rsrc.VirtualAddress);
-                               RestoreOffset ();
-                       }
-               }
-
-               void ComputeOffset (ResourceDirectoryTable root)
-               {
-                       int offset = 0;
-
-                       Queue directoryTables = new Queue ();
-                       directoryTables.Enqueue (root);
-
-                       while (directoryTables.Count > 0) {
-                               ResourceDirectoryTable rdt = directoryTables.Dequeue () as ResourceDirectoryTable;
-                               rdt.Offset = offset;
-                               offset += 16;
-
-                               foreach (ResourceDirectoryEntry rde in rdt.Entries) {
-                                       rde.Offset = offset;
-                                       offset += 8;
-                                       if (rde.IdentifiedByName)
-                                               m_stringEntries.Add (rde.Name);
-
-                                       if (rde.Child is ResourceDirectoryTable)
-                                               directoryTables.Enqueue (rde.Child);
-                                       else
-                                               m_dataEntries.Add (rde.Child);
-                               }
-                       }
-
-                       foreach (ResourceDataEntry rde in m_dataEntries) {
-                               rde.Offset = offset;
-                               offset += 16;
-                       }
-
-                       foreach (ResourceDirectoryString rds in m_stringEntries) {
-                               rds.Offset = offset;
-                               byte [] str = Encoding.Unicode.GetBytes (rds.String);
-                               offset += 2 + str.Length;
-
-                               offset += 3;
-                               offset &= ~3;
-                       }
-
-                       foreach (ResourceDataEntry rde in m_dataEntries) {
-                               rde.Data = (uint) offset;
-
-                               offset += rde.ResourceData.Length;
-                               offset += 3;
-                               offset &= ~3;
-                       }
-
-                       m_writer.Write (new byte [offset]);
-               }
-
-               void WriteResourceDirectoryTable (ResourceDirectoryTable rdt)
-               {
-                       GotoOffset (rdt.Offset);
-
-                       m_writer.Write (rdt.Characteristics);
-                       m_writer.Write (rdt.TimeDateStamp);
-                       m_writer.Write (rdt.MajorVersion);
-                       m_writer.Write (rdt.MinorVersion);
-
-                       ResourceDirectoryEntry [] namedEntries = GetEntries (rdt, true);
-                       ResourceDirectoryEntry [] idEntries = GetEntries (rdt, false);
-
-                       m_writer.Write ((ushort) namedEntries.Length);
-                       m_writer.Write ((ushort) idEntries.Length);
-
-                       foreach (ResourceDirectoryEntry rde in namedEntries)
-                               WriteResourceDirectoryEntry (rde);
-
-                       foreach (ResourceDirectoryEntry rde in idEntries)
-                               WriteResourceDirectoryEntry (rde);
-
-                       RestoreOffset ();
-               }
-
-               ResourceDirectoryEntry [] GetEntries (ResourceDirectoryTable rdt, bool identifiedByName)
-               {
-                       ArrayList entries = new ArrayList ();
-                       foreach (ResourceDirectoryEntry rde in rdt.Entries)
-                               if (rde.IdentifiedByName == identifiedByName)
-                                       entries.Add (rde);
-
-                       return entries.ToArray (typeof (ResourceDirectoryEntry)) as ResourceDirectoryEntry [];
-               }
-
-               void WriteResourceDirectoryEntry (ResourceDirectoryEntry rde)
-               {
-                       GotoOffset (rde.Offset);
-
-                       if (rde.IdentifiedByName) {
-                               m_writer.Write ((uint) rde.Name.Offset | 0x80000000);
-                               WriteResourceDirectoryString (rde.Name);
-                       } else
-                               m_writer.Write ((uint) rde.ID);
-
-                       if (rde.Child is ResourceDirectoryTable) {
-                               m_writer.Write((uint) rde.Child.Offset | 0x80000000);
-                               WriteResourceDirectoryTable (rde.Child as ResourceDirectoryTable);
-                       } else {
-                               m_writer.Write (rde.Child.Offset);
-                               WriteResourceDataEntry (rde.Child as ResourceDataEntry);
-                       }
-
-                       RestoreOffset ();
-               }
-
-               void WriteResourceDataEntry (ResourceDataEntry rde)
-               {
-                       GotoOffset (rde.Offset);
-
-                       m_writer.Write (0);
-                       m_writer.Write ((uint) rde.ResourceData.Length);
-                       m_writer.Write (rde.Codepage);
-                       m_writer.Write (rde.Reserved);
-
-                       m_writer.BaseStream.Position = rde.Data;
-                       m_writer.Write (rde.ResourceData);
-
-                       RestoreOffset ();
-               }
-
-               void WriteResourceDirectoryString (ResourceDirectoryString name)
-               {
-                       GotoOffset (name.Offset);
-
-                       byte [] str = Encoding.Unicode.GetBytes (name.String);
-                       m_writer.Write ((ushort) str.Length);
-                       m_writer.Write (str);
-
-                       RestoreOffset ();
-               }
-
-               void GotoOffset (int offset)
-               {
-                       m_pos = m_writer.BaseStream.Position;
-                       m_writer.BaseStream.Position = offset;
-               }
-
-               void RestoreOffset ()
-               {
-                       m_writer.BaseStream.Position = m_pos;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs
deleted file mode 100644 (file)
index 84afacf..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// RuntimeImage.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Cecil.Binary {
-
-       [Flags]
-       public enum RuntimeImage : uint {
-               ILOnly = 0x0000001,
-               F32BitsRequired = 0x0000002,
-               StrongNameSigned = 0x0000008,
-               TrackDebugData = 0x00010000
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs
deleted file mode 100644 (file)
index a05714b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// Section.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public sealed class Section : IHeader, IBinaryVisitable {
-
-               public const string Text = ".text";
-               public const string Resources = ".rsrc";
-               public const string Relocs = ".reloc";
-               public const string SData = ".sdata";
-
-               public uint VirtualSize;
-               public RVA VirtualAddress;
-               public uint SizeOfRawData;
-               public RVA PointerToRawData;
-               public RVA PointerToRelocations;
-               public RVA PointerToLineNumbers;
-               public ushort NumberOfRelocations;
-               public ushort NumberOfLineNumbers;
-               public SectionCharacteristics Characteristics;
-
-               public string Name;
-               public byte [] Data;
-
-               internal Section ()
-               {
-               }
-
-               public void SetDefaultValues ()
-               {
-                       PointerToLineNumbers = RVA.Zero;
-                       NumberOfLineNumbers = 0;
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitSection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs
deleted file mode 100644 (file)
index 66d97ed..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// SectionCharacteristics.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-
-       [Flags]
-       public enum SectionCharacteristics : uint {
-               TypeNoPad = 0x0000008,
-               ContainsCode = 0x00000020,
-               ContainsInitializedData = 0x00000040,
-               ContainsUninitializedData = 0x00000080,
-               LnkOther = 0x0000100,
-               LnkInfo = 0x000200,
-               LnkRemove = 0x0000800,
-               LnkCOMDAT = 0x00001000,
-               GPRel = 0x00008000,
-               MemPurgeable = 0x00020000,
-               MemLocked = 0x00040000,
-               MemPreload = 0x00080000,
-               Align1Bytes = 0x00100000,
-               Align2Bytes = 0x00200000,
-               Align4Bytes = 0x00300000,
-               Align8Bytes = 0x00400000,
-               Align16Bytes = 0x00500000,
-               Align32Bytes = 0x00600000,
-               Align64Bytes = 0x00700000,
-               Align128Bytes = 0x00800000,
-               Align256Bytes = 0x00900000,
-               Align512Bytes = 0x00a00000,
-               Align1024Bytes = 0x00b00000,
-               Align2048Bytes = 0x00c00000,
-               Align4096Bytes = 0x00d00000,
-               Align8192Bytes = 0x00e00000,
-               LnkNRelocOvfl = 0x01000000,
-               MemDiscardable = 0x02000000,
-               MemNotCached = 0x04000000,
-               MemNotPaged = 0x08000000,
-               MemShared = 0x10000000,
-               MemExecute = 0x20000000,
-               MemoryRead = 0x40000000,
-               MemoryWrite = 0x80000000
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs
deleted file mode 100644 (file)
index 2d90eee..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// SectionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       using System;
-       using System.Collections;
-
-       public sealed class SectionCollection : ICollection, IBinaryVisitable {
-
-               IList m_items;
-
-               public Section this [int index]
-               {
-                       get { return m_items [index] as Section; }
-                       set { m_items [index] = value; }
-               }
-
-               public int Count {
-                       get { return m_items.Count; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               internal SectionCollection ()
-               {
-                       m_items = new ArrayList (4);
-               }
-
-               internal void Add (Section value)
-               {
-                       m_items.Add (value);
-               }
-
-               internal void Clear ()
-               {
-                       m_items.Clear ();
-               }
-
-               public bool Contains (Section value)
-               {
-                       return m_items.Contains (value);
-               }
-
-               public int IndexOf (Section value)
-               {
-                       return m_items.IndexOf (value);
-               }
-
-               internal void Insert (int index, Section value)
-               {
-                       m_items.Insert (index, value);
-               }
-
-               internal void Remove (Section value)
-               {
-                       m_items.Remove (value);
-               }
-
-               internal void RemoveAt (int index)
-               {
-                       m_items.Remove (index);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       m_items.CopyTo (ary, index);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return m_items.GetEnumerator ();
-               }
-
-               public void Accept (IBinaryVisitor visitor)
-               {
-                       visitor.VisitSectionCollection (this);
-
-                       for (int i = 0; i < m_items.Count; i++)
-                               this [i].Accept (visitor);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs
deleted file mode 100644 (file)
index 2cab910..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// SubSystem.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-       public enum SubSystem : ushort {
-               Unknown = 0x0,
-               Native = 0x1,
-               WindowsGui = 0x2,
-               WindowsCui = 0x3,
-               PosixCui = 0x7,
-               WindowsCeGui = 0x9,
-               EfiApplication = 0x10,
-               EfiBootServiceDriver = 0x11,
-               EfiRuntimeDriver = 0x12,
-               EfiRom = 0x13,
-               Xbox = 0x14,
-               NexusAgent = 0x15
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs
deleted file mode 100644 (file)
index d6e5051..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// BaseCodeVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public abstract class BaseCodeVisitor : ICodeVisitor {
-
-               public virtual void VisitMethodBody (MethodBody body)
-               {
-               }
-
-               public virtual void VisitInstructionCollection (InstructionCollection instructions)
-               {
-               }
-
-               public virtual void VisitInstruction (Instruction instr)
-               {
-               }
-
-               public virtual void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh)
-               {
-               }
-
-               public virtual void VisitExceptionHandler (ExceptionHandler eh)
-               {
-               }
-
-               public virtual void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
-               {
-               }
-
-               public virtual void VisitVariableDefinition (VariableDefinition var)
-               {
-               }
-
-               public virtual void VisitScopeCollection (ScopeCollection scopes)
-               {
-               }
-
-               public virtual void VisitScope (Scope s)
-               {
-               }
-
-               public virtual void TerminateMethodBody (MethodBody body)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs
deleted file mode 100644 (file)
index 7f70e24..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-//
-// CilWorker.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using SR = System.Reflection;
-
-       public sealed class CilWorker {
-
-               MethodBody m_mbody;
-               InstructionCollection m_instrs;
-
-               internal CilWorker (MethodBody body)
-               {
-                       m_mbody = body;
-                       m_instrs = m_mbody.Instructions;
-               }
-
-               public MethodBody GetBody ()
-               {
-                       return m_mbody;
-               }
-
-               public Instruction Create (OpCode opcode)
-               {
-                       if (opcode.OperandType != OperandType.InlineNone)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode);
-               }
-
-               public Instruction Create (OpCode opcode, TypeReference type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (opcode.OperandType != OperandType.InlineType &&
-                               opcode.OperandType != OperandType.InlineTok)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, type);
-               }
-
-               public Instruction Create (OpCode opcode, CallSite site)
-               {
-                       if (site == null)
-                               throw new ArgumentNullException ("site");
-                       if (opcode.Code != Code.Calli)
-                               throw new ArgumentException ("code");
-
-                       return FinalCreate (opcode, site);
-               }
-
-               public Instruction Create (OpCode opcode, MethodReference method)
-               {
-                       if (method == null)
-                               throw new ArgumentNullException ("method");
-                       if (opcode.OperandType != OperandType.InlineMethod &&
-                               opcode.OperandType != OperandType.InlineTok)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, method);
-               }
-
-               public Instruction Create (OpCode opcode, FieldReference field)
-               {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
-                       if (opcode.OperandType != OperandType.InlineField &&
-                               opcode.OperandType != OperandType.InlineTok)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, field);
-               }
-
-               public Instruction Create (OpCode opcode, string str)
-               {
-                       if (str == null)
-                               throw new ArgumentNullException ("str");
-                       if (opcode.OperandType != OperandType.InlineString)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, str);
-               }
-
-               public Instruction Create (OpCode opcode, sbyte b)
-               {
-                       if (opcode.OperandType != OperandType.ShortInlineI &&
-                               opcode != OpCodes.Ldc_I4_S)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, b);
-               }
-
-               public Instruction Create (OpCode opcode, byte b)
-               {
-                       if (opcode.OperandType == OperandType.ShortInlineVar)
-                               return Create (opcode, m_mbody.Variables [b]);
-
-                       if (opcode.OperandType == OperandType.ShortInlineParam)
-                               return Create (opcode, CodeReader.GetParameter (m_mbody, b));
-
-                       if (opcode.OperandType != OperandType.ShortInlineI ||
-                               opcode == OpCodes.Ldc_I4_S)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, b);
-               }
-
-               public Instruction Create (OpCode opcode, int i)
-               {
-                       if (opcode.OperandType == OperandType.InlineVar)
-                               return Create (opcode, m_mbody.Variables [i]);
-
-                       if (opcode.OperandType == OperandType.InlineParam)
-                               return Create (opcode, CodeReader.GetParameter (m_mbody, i));
-
-                       if (opcode.OperandType != OperandType.InlineI)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, i);
-               }
-
-               public Instruction Create (OpCode opcode, long l)
-               {
-                       if (opcode.OperandType != OperandType.InlineI8)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, l);
-               }
-
-               public Instruction Create (OpCode opcode, float f)
-               {
-                       if (opcode.OperandType != OperandType.ShortInlineR)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, f);
-               }
-
-               public Instruction Create (OpCode opcode, double d)
-               {
-                       if (opcode.OperandType != OperandType.InlineR)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, d);
-               }
-
-               public Instruction Create (OpCode opcode, Instruction label)
-               {
-                       if (label == null)
-                               throw new ArgumentNullException ("label");
-                       if (opcode.OperandType != OperandType.InlineBrTarget &&
-                               opcode.OperandType != OperandType.ShortInlineBrTarget)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, label);
-               }
-
-               public Instruction Create (OpCode opcode, Instruction [] labels)
-               {
-                       if (labels == null)
-                               throw new ArgumentNullException ("labels");
-                       if (opcode.OperandType != OperandType.InlineSwitch)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, labels);
-               }
-
-               public Instruction Create (OpCode opcode, VariableDefinition var)
-               {
-                       if (var == null)
-                               throw new ArgumentNullException ("var");
-                       if (opcode.OperandType != OperandType.ShortInlineVar &&
-                               opcode.OperandType != OperandType.InlineVar)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, var);
-               }
-
-               public Instruction Create (OpCode opcode, ParameterDefinition param)
-               {
-                       if (param == null)
-                               throw new ArgumentNullException ("param");
-                       if (opcode.OperandType != OperandType.ShortInlineParam &&
-                               opcode.OperandType != OperandType.InlineParam)
-                               throw new ArgumentException ("opcode");
-
-                       return FinalCreate (opcode, param);
-               }
-
-               static Instruction FinalCreate (OpCode opcode)
-               {
-                       return FinalCreate (opcode, null);
-               }
-
-               static Instruction FinalCreate (OpCode opcode, object operand)
-               {
-                       return new Instruction (opcode, operand);
-               }
-
-               public Instruction Emit (OpCode opcode)
-               {
-                       Instruction instr = Create (opcode);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, TypeReference type)
-               {
-                       Instruction instr = Create (opcode, type);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, MethodReference meth)
-               {
-                       Instruction instr = Create (opcode, meth);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, CallSite site)
-               {
-                       Instruction instr = Create (opcode, site);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, FieldReference field)
-               {
-                       Instruction instr = Create (opcode, field);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, string str)
-               {
-                       Instruction instr = Create (opcode, str);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, byte b)
-               {
-                       Instruction instr = Create (opcode, b);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, sbyte b)
-               {
-                       Instruction instr = Create (opcode, b);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, int i)
-               {
-                       Instruction instr = Create (opcode, i);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, long l)
-               {
-                       Instruction instr = Create (opcode, l);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, float f)
-               {
-                       Instruction instr = Create (opcode, f);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, double d)
-               {
-                       Instruction instr = Create (opcode, d);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, Instruction target)
-               {
-                       Instruction instr = Create (opcode, target);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, Instruction [] targets)
-               {
-                       Instruction instr = Create (opcode, targets);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, VariableDefinition var)
-               {
-                       Instruction instr = Create (opcode, var);
-                       Append (instr);
-                       return instr;
-               }
-
-               public Instruction Emit (OpCode opcode, ParameterDefinition param)
-               {
-                       Instruction instr = Create (opcode, param);
-                       Append (instr);
-                       return instr;
-               }
-
-               public void InsertBefore (Instruction target, Instruction instr)
-               {
-                       int index = m_instrs.IndexOf (target);
-                       if (index == -1)
-                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-                       m_instrs.Insert (index, instr);
-                       instr.Previous = target.Previous;
-                       if (target.Previous != null)
-                               target.Previous.Next = instr;
-                       target.Previous = instr;
-                       instr.Next = target;
-               }
-
-               public void InsertAfter (Instruction target, Instruction instr)
-               {
-                       int index = m_instrs.IndexOf (target);
-                       if (index == -1)
-                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-                       m_instrs.Insert (index + 1, instr);
-                       instr.Next = target.Next;
-                       if (target.Next != null)
-                               target.Next.Previous = instr;
-                       target.Next = instr;
-                       instr.Previous = target;
-               }
-
-               public void Append (Instruction instr)
-               {
-                       Instruction last = null, current = instr;
-                       if (m_instrs.Count > 0)
-                               last = m_instrs [m_instrs.Count - 1];
-
-                       if (last != null) {
-                               last.Next = instr;
-                               current.Previous = last;
-                       }
-
-                       m_instrs.Add (current);
-               }
-
-               public void Replace (Instruction old, Instruction instr)
-               {
-                       int index = m_instrs.IndexOf (old);
-                       if (index == -1)
-                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-                       InsertAfter (old, instr);
-                       Remove (old);
-               }
-
-               public void Remove (Instruction instr)
-               {
-                       if (!m_instrs.Contains (instr))
-                               throw new ArgumentException ("Instruction not in method body");
-
-                       if (instr.Previous != null)
-                               instr.Previous.Next = instr.Next;
-                       if (instr.Next != null)
-                               instr.Next.Previous = instr.Previous;
-                       m_instrs.Remove (instr);
-               }
-       }
-}
index af70ab52de10a8a69a4a895fc143baac76d2493b..bd18b842a951850ac72f5c181ed979efb294e51b 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 16 15:37:23 +0100 2007
-//
-// (C) 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
index 9fe965f5569a962ebdb8f631b43c4f36e5ce9bcd..c780cc7ce21b853a9200dca156385f8ba92de147 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Cecil.PE;
+using Mono.Collections.Generic;
+
+using RVA = System.UInt32;
+
 namespace Mono.Cecil.Cil {
 
-       using System;
-       using System.Collections;
-       using System.IO;
+       sealed class CodeReader : ByteBuffer {
+
+               readonly internal MetadataReader reader;
+
+               int start;
+               Section code_section;
 
-       using Mono.Cecil;
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
+               MethodDefinition method;
+               MethodBody body;
+
+               int Offset {
+                       get { return base.position - start; }
+               }
+
+               CodeReader (Section section, MetadataReader reader)
+                       : base (section.Data)
+               {
+                       this.code_section = section;
+                       this.reader = reader;
+               }
+
+               public static CodeReader CreateCodeReader (MetadataReader metadata)
+               {
+                       return new CodeReader (metadata.image.MetadataSection, metadata);
+               }
+
+               public MethodBody ReadMethodBody (MethodDefinition method)
+               {
+                       this.method = method;
+                       this.body = new MethodBody (method);
+
+                       reader.context = method;
+
+                       ReadMethodBody ();
+
+                       return this.body;
+               }
 
-       sealed class CodeReader : BaseCodeVisitor {
+               public void MoveTo (int rva)
+               {
+                       if (!IsInSection (rva)) {
+                               code_section = reader.image.GetSectionAtVirtualAddress ((uint) rva);
+                               Reset (code_section.Data);
+                       }
 
-               ReflectionReader m_reflectReader;
-               MetadataRoot m_root;
-               IDictionary m_instructions;
+                       base.position = rva - (int) code_section.VirtualAddress;
+               }
 
-               public CodeReader (ReflectionReader reflectReader)
+               bool IsInSection (int rva)
                {
-                       m_reflectReader = reflectReader;
-                       m_root = m_reflectReader.MetadataRoot;
-                       m_instructions = new Hashtable ();
+                       return code_section.VirtualAddress <= rva && rva < code_section.VirtualAddress + code_section.SizeOfRawData;
                }
 
-               public override void VisitMethodBody (MethodBody body)
+               void ReadMethodBody ()
                {
-                       MethodDefinition meth = body.Method;
-                       MethodBody methBody = body;
-                       BinaryReader br = m_reflectReader.Module.ImageReader.MetadataReader.GetDataReader (meth.RVA);
+                       MoveTo (method.RVA);
 
-                       // lets read the method
-                       int flags = br.ReadByte ();
+                       var flags = ReadByte ();
                        switch (flags & 0x3) {
-                       case (int) MethodHeader.TinyFormat :
-                               methBody.CodeSize = flags >> 2;
-                               methBody.MaxStack = 8;
-                               ReadCilBody (methBody, br);
+                       case 0x2: // tiny
+                               body.code_size = flags >> 2;
+                               body.MaxStackSize = 8;
+                               ReadCode ();
                                break;
-                       case (int) MethodHeader.FatFormat :
-                               br.BaseStream.Position--;
-                               int fatflags = br.ReadUInt16 ();
-                               //int headersize = (fatflags >> 12) & 0xf;
-                               methBody.MaxStack = br.ReadUInt16 ();
-                               methBody.CodeSize = br.ReadInt32 ();
-                               methBody.LocalVarToken = br.ReadInt32 ();
-                               body.InitLocals = (fatflags & (int) MethodHeader.InitLocals) != 0;
-                               if (methBody.LocalVarToken != 0)
-                                       VisitVariableDefinitionCollection (methBody.Variables);
-                               ReadCilBody (methBody, br);
-                               if ((fatflags & (int) MethodHeader.MoreSects) != 0)
-                                       ReadSection (methBody, br);
+                       case 0x3: // fat
+                               base.position--;
+                               ReadFatMethod ();
                                break;
+                       default:
+                               throw new InvalidOperationException ();
+                       }
+
+                       var symbol_reader = reader.module.SymbolReader;
+
+                       if (symbol_reader != null) {
+                               var instructions = body.Instructions;
+                               symbol_reader.Read (body, offset => GetInstruction (instructions, offset));
                        }
                }
 
-               public static uint GetRid (int token)
+               void ReadFatMethod ()
                {
-                       return (uint) token & 0x00ffffff;
+                       var flags = ReadUInt16 ();
+                       body.max_stack_size = ReadUInt16 ();
+                       body.code_size = (int) ReadUInt32 ();
+                       body.local_var_token = new MetadataToken (ReadUInt32 ());
+                       body.init_locals = (flags & 0x10) != 0;
+
+                       if (body.LocalVarToken.RID != 0)
+                               body.variables = ReadVariables (body.local_var_token);
+
+                       ReadCode ();
+
+                       if ((flags & 0x8) != 0)
+                               ReadSection ();
                }
 
-               public static ParameterDefinition GetParameter (MethodBody body, int index)
+               public VariableDefinitionCollection ReadVariables (MetadataToken local_var_token)
                {
-                       if (body.Method.HasThis) {
-                               if (index == 0)
-                                       return body.Method.This;
-                               index--;
-                       }
+                       var position = reader.position;
+                       var variables = reader.ReadVariables (local_var_token);
+                       reader.position = position;
 
-                       return body.Method.Parameters [index];
+                       return variables;
                }
 
-               public static VariableDefinition GetVariable (MethodBody body, int index)
+               void ReadCode ()
                {
-                       return body.Variables [index];
+                       start = position;
+                       var code_size = body.code_size;
+                       var end = start + code_size;
+                       var instructions = body.instructions = new InstructionCollection (code_size / 3);
+
+                       while (position < end) {
+                               var offset = base.position - start;
+                               var opcode = ReadOpCode ();
+                               var current = new Instruction (offset, opcode);
+
+                               if (opcode.OperandType != OperandType.InlineNone)
+                                       current.operand = ReadOperand (current);
+
+                               instructions.Add (current);
+                       }
+
+                       ResolveBranches (instructions);
                }
 
-               void ReadCilBody (MethodBody body, BinaryReader br)
+               OpCode ReadOpCode ()
                {
-                       long start = br.BaseStream.Position;
-                       Instruction last = null;
-                       m_instructions.Clear();
-                       InstructionCollection code = body.Instructions;
-                       GenericContext context = new GenericContext (body.Method);
+                       var il_opcode = ReadByte ();
+                       return il_opcode != 0xfe
+                               ? OpCodes.OneByteOpCode [il_opcode]
+                               : OpCodes.TwoBytesOpCode [ReadByte ()];
+               }
 
-                       while (br.BaseStream.Position < start + body.CodeSize) {
-                               OpCode op;
-                               long offset = br.BaseStream.Position - start;
-                               int cursor = br.ReadByte ();
-                               if (cursor == 0xfe)
-                                       op = OpCodes.TwoBytesOpCode [br.ReadByte ()];
-                               else
-                                       op = OpCodes.OneByteOpCode [cursor];
+               object ReadOperand (Instruction instruction)
+               {
+                       switch (instruction.opcode.OperandType) {
+                       case OperandType.InlineSwitch:
+                               var length = ReadInt32 ();
+                               var base_offset = Offset + (4 * length);
+                               var branches = new int [length];
+                               for (int i = 0; i < length; i++)
+                                       branches [i] = base_offset + ReadInt32 ();
+                               return branches;
+                       case OperandType.ShortInlineBrTarget:
+                               return ReadSByte () + Offset;
+                       case OperandType.InlineBrTarget:
+                               return ReadInt32 () + Offset;
+                       case OperandType.ShortInlineI:
+                               if (instruction.opcode == OpCodes.Ldc_I4_S)
+                                       return ReadSByte ();
+
+                               return ReadByte ();
+                       case OperandType.InlineI:
+                               return ReadInt32 ();
+                       case OperandType.ShortInlineR:
+                               return ReadSingle ();
+                       case OperandType.InlineR:
+                               return ReadDouble ();
+                       case OperandType.InlineI8:
+                               return ReadInt64 ();
+                       case OperandType.ShortInlineVar:
+                               return GetVariable (ReadByte ());
+                       case OperandType.InlineVar:
+                               return GetVariable (ReadUInt16 ());
+                       case OperandType.ShortInlineArg:
+                               return GetParameter (ReadByte ());
+                       case OperandType.InlineArg:
+                               return GetParameter (ReadUInt16 ());
+                       case OperandType.InlineSig:
+                               return GetCallSite (ReadToken ());
+                       case OperandType.InlineString:
+                               return GetString (ReadToken ());
+                       case OperandType.InlineTok:
+                       case OperandType.InlineType:
+                       case OperandType.InlineMethod:
+                       case OperandType.InlineField:
+                               return reader.LookupToken (ReadToken ());
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
 
-                               Instruction instr = new Instruction ((int) offset, op);
-                               switch (op.OperandType) {
-                               case OperandType.InlineNone :
-                                       break;
-                               case OperandType.InlineSwitch :
-                                       uint length = br.ReadUInt32 ();
-                                       int [] branches = new int [length];
-                                       int [] buf = new int [length];
-                                       for (int i = 0; i < length; i++)
-                                               buf [i] = br.ReadInt32 ();
-                                       for (int i = 0; i < length; i++)
-                                               branches [i] = Convert.ToInt32 (br.BaseStream.Position - start + buf [i]);
-                                       instr.Operand = branches;
-                                       break;
-                               case OperandType.ShortInlineBrTarget :
-                                       sbyte sbrtgt = br.ReadSByte ();
-                                       instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + sbrtgt);
-                                       break;
-                               case OperandType.InlineBrTarget :
-                                       int brtgt = br.ReadInt32 ();
-                                       instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + brtgt);
-                                       break;
-                               case OperandType.ShortInlineI :
-                                       if (op == OpCodes.Ldc_I4_S)
-                                               instr.Operand = br.ReadSByte ();
-                                       else
-                                               instr.Operand = br.ReadByte ();
-                                       break;
-                               case OperandType.ShortInlineVar :
-                                       instr.Operand = GetVariable (body, br.ReadByte ());
-                                       break;
-                               case OperandType.ShortInlineParam :
-                                       instr.Operand = GetParameter (body, br.ReadByte ());
-                                       break;
-                               case OperandType.InlineSig :
-                                       instr.Operand = GetCallSiteAt (br.ReadInt32 (), context);
-                                       break;
-                               case OperandType.InlineI :
-                                       instr.Operand = br.ReadInt32 ();
-                                       break;
-                               case OperandType.InlineVar :
-                                       instr.Operand = GetVariable (body, br.ReadInt16 ());
-                                       break;
-                               case OperandType.InlineParam :
-                                       instr.Operand = GetParameter (body, br.ReadInt16 ());
-                                       break;
-                               case OperandType.InlineI8 :
-                                       instr.Operand = br.ReadInt64 ();
-                                       break;
-                               case OperandType.ShortInlineR :
-                                       instr.Operand = br.ReadSingle ();
-                                       break;
-                               case OperandType.InlineR :
-                                       instr.Operand = br.ReadDouble ();
-                                       break;
-                               case OperandType.InlineString :
-                                       instr.Operand = m_root.Streams.UserStringsHeap [GetRid (br.ReadInt32 ())];
-                                       break;
-                               case OperandType.InlineField :
-                               case OperandType.InlineMethod :
-                               case OperandType.InlineType :
-                               case OperandType.InlineTok :
-                                       MetadataToken token = new MetadataToken (br.ReadInt32 ());
-                                       switch (token.TokenType) {
-                                       case TokenType.TypeDef:
-                                               instr.Operand = m_reflectReader.GetTypeDefAt (token.RID);
-                                               break;
-                                       case TokenType.TypeRef:
-                                               instr.Operand = m_reflectReader.GetTypeRefAt (token.RID);
-                                               break;
-                                       case TokenType.TypeSpec:
-                                               instr.Operand = m_reflectReader.GetTypeSpecAt (token.RID, context);
-                                               break;
-                                       case TokenType.Field:
-                                               instr.Operand = m_reflectReader.GetFieldDefAt (token.RID);
-                                               break;
-                                       case TokenType.Method:
-                                               instr.Operand = m_reflectReader.GetMethodDefAt (token.RID);
-                                               break;
-                                       case TokenType.MethodSpec:
-                                               instr.Operand = m_reflectReader.GetMethodSpecAt (token.RID, context);
-                                               break;
-                                       case TokenType.MemberRef:
-                                               instr.Operand = m_reflectReader.GetMemberRefAt (token.RID, context);
-                                               break;
-                                       default:
-                                               throw new ReflectionException ("Wrong token: " + token);
-                                       }
-                                       break;
-                               }
+               public string GetString (MetadataToken token)
+               {
+                       return reader.image.UserStringHeap.Read (token.RID);
+               }
 
-                               m_instructions.Add (instr.Offset, instr);
+               public ParameterDefinition GetParameter (int index)
+               {
+                       return body.GetParameter (index);
+               }
 
-                               if (last != null) {
-                                       last.Next = instr;
-                                       instr.Previous = last;
-                               }
+               public VariableDefinition GetVariable (int index)
+               {
+                       return body.Variables [index];
+               }
 
-                               last = instr;
+               public CallSite GetCallSite (MetadataToken token)
+               {
+                       return reader.ReadCallSite (token);
+               }
 
-                               code.Add (instr);
-                       }
+               void ResolveBranches (Collection<Instruction> instructions)
+               {
+                       var items = instructions.items;
+                       var size = instructions.size;
 
-                       // resolve branches
-                       foreach (Instruction i in code) {
-                               switch (i.OpCode.OperandType) {
+                       for (int i = 0; i < size; i++) {
+                               var instruction = items [i];
+                               switch (instruction.opcode.OperandType) {
                                case OperandType.ShortInlineBrTarget:
                                case OperandType.InlineBrTarget:
-                                       i.Operand = GetInstruction (body, (int) i.Operand);
+                                       instruction.operand = GetInstruction ((int) instruction.operand);
                                        break;
                                case OperandType.InlineSwitch:
-                                       int [] lbls = (int []) i.Operand;
-                                       Instruction [] instrs = new Instruction [lbls.Length];
-                                       for (int j = 0; j < lbls.Length; j++)
-                                               instrs [j] = GetInstruction (body, lbls [j]);
-                                       i.Operand = instrs;
+                                       var offsets = (int []) instruction.operand;
+                                       var branches = new Instruction [offsets.Length];
+                                       for (int j = 0; j < offsets.Length; j++)
+                                               branches [j] = GetInstruction (offsets [j]);
+
+                                       instruction.operand = branches;
                                        break;
                                }
                        }
+               }
 
-                       if (m_reflectReader.SymbolReader != null)
-                               m_reflectReader.SymbolReader.Read (body, m_instructions);
+               Instruction GetInstruction (int offset)
+               {
+                       return GetInstruction (body.Instructions, offset);
                }
 
-               Instruction GetInstruction (MethodBody body, int offset)
+               static Instruction GetInstruction (Collection<Instruction> instructions, int offset)
                {
-                       Instruction instruction = m_instructions [offset] as Instruction;
-                       if (instruction != null)
-                               return instruction;
+                       var size = instructions.size;
+                       var items = instructions.items;
+                       if (offset < 0 || offset > items [size - 1].offset)
+                               return null;
+
+                       int min = 0;
+                       int max = size - 1;
+                       while (min <= max) {
+                               int mid = min + ((max - min) / 2);
+                               var instruction = items [mid];
+                               var instruction_offset = instruction.offset;
+
+                               if (offset == instruction_offset)
+                                       return instruction;
+
+                               if (offset < instruction_offset)
+                                       max = mid - 1;
+                               else
+                                       min = mid + 1;
+                       }
 
-                       return body.Instructions.Outside;
+                       return null;
                }
 
-               void ReadSection (MethodBody body, BinaryReader br)
+               void ReadSection ()
                {
-                       br.BaseStream.Position += 3;
-                       br.BaseStream.Position &= ~3;
+                       Align (4);
 
-                       byte flags = br.ReadByte ();
-                       if ((flags & (byte) MethodDataSection.FatFormat) == 0) {
-                               int length = br.ReadByte () / 12;
-                               br.ReadBytes (2);
+                       const byte fat_format = 0x40;
+                       const byte more_sects = 0x80;
 
-                               for (int i = 0; i < length; i++) {
-                                       ExceptionHandler eh = new ExceptionHandler (
-                                               (ExceptionHandlerType) (br.ReadInt16 () & 0x7));
-                                       eh.TryStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
-                                       eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + Convert.ToInt32 (br.ReadByte ()));
-                                       eh.HandlerStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
-                                       eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + Convert.ToInt32 (br.ReadByte ()));
-                                       ReadExceptionHandlerEnd (eh, br, body);
-                                       body.ExceptionHandlers.Add (eh);
-                               }
-                       } else {
-                               br.BaseStream.Position--;
-                               int length = (br.ReadInt32 () >> 8) / 24;
-                               if ((flags & (int) MethodDataSection.EHTable) == 0)
-                                       br.ReadBytes (length * 24);
-                               for (int i = 0; i < length; i++) {
-                                       ExceptionHandler eh = new ExceptionHandler (
-                                               (ExceptionHandlerType) (br.ReadInt32 () & 0x7));
-                                       eh.TryStart = GetInstruction (body, br.ReadInt32 ());
-                                       eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + br.ReadInt32 ());
-                                       eh.HandlerStart = GetInstruction (body, br.ReadInt32 ());
-                                       eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + br.ReadInt32 ());
-                                       ReadExceptionHandlerEnd (eh, br, body);
-                                       body.ExceptionHandlers.Add (eh);
-                               }
-                       }
+                       var flags = ReadByte ();
+                       if ((flags & fat_format) == 0)
+                               ReadSmallSection ();
+                       else
+                               ReadFatSection ();
+
+                       if ((flags & more_sects) != 0)
+                               ReadSection ();
+               }
+
+               void ReadSmallSection ()
+               {
+                       var count = ReadByte () / 12;
+                       Advance (2);
 
-                       if ((flags & (byte) MethodDataSection.MoreSects) != 0)
-                               ReadSection (body, br);
+                       ReadExceptionHandlers (
+                               count,
+                               () => (int) ReadUInt16 (),
+                               () => (int) ReadByte ());
                }
 
-               void ReadExceptionHandlerEnd (ExceptionHandler eh, BinaryReader br, MethodBody body)
+               void ReadFatSection ()
                {
-                       switch (eh.Type) {
-                       case ExceptionHandlerType.Catch :
-                               MetadataToken token = new MetadataToken (br.ReadInt32 ());
-                               eh.CatchType = m_reflectReader.GetTypeDefOrRef (token, new GenericContext (body.Method));
+                       position--;
+                       var count = (ReadInt32 () >> 8) / 24;
+
+                       ReadExceptionHandlers (
+                               count,
+                               ReadInt32,
+                               ReadInt32);
+               }
+
+               // inline ?
+               void ReadExceptionHandlers (int count, Func<int> read_entry, Func<int> read_length)
+               {
+                       for (int i = 0; i < count; i++) {
+                               var handler = new ExceptionHandler (
+                                       (ExceptionHandlerType) (read_entry () & 0x7));
+
+                               handler.TryStart = GetInstruction (read_entry ());
+                               handler.TryEnd = GetInstruction (handler.TryStart.Offset + read_length ());
+
+                               handler.HandlerStart = GetInstruction (read_entry ());
+                               handler.HandlerEnd = GetInstruction (handler.HandlerStart.Offset + read_length ());
+
+                               ReadExceptionHandlerSpecific (handler);
+
+                               this.body.ExceptionHandlers.Add (handler);
+                       }
+               }
+
+               void ReadExceptionHandlerSpecific (ExceptionHandler handler)
+               {
+                       switch (handler.HandlerType) {
+                       case ExceptionHandlerType.Catch:
+                               handler.CatchType = (TypeReference) reader.LookupToken (ReadToken ());
+                               break;
+                       case ExceptionHandlerType.Filter:
+                               handler.FilterStart = GetInstruction (ReadInt32 ());
+                               handler.FilterEnd = handler.HandlerStart.Previous;
+                               break;
+                       default:
+                               Advance (4);
                                break;
-                       case ExceptionHandlerType.Filter :
-                               eh.FilterStart = GetInstruction (body, br.ReadInt32 ());
-                               eh.FilterEnd = GetInstruction (body, eh.HandlerStart.Previous.Offset);
+                       }
+               }
+
+               void Align (int align)
+               {
+                       align--;
+                       Advance (((position + align) & ~align) - position);
+               }
+
+               public MetadataToken ReadToken ()
+               {
+                       return new MetadataToken (ReadUInt32 ());
+               }
+
+#if !READ_ONLY
+
+               public ByteBuffer PatchRawMethodBody (MethodDefinition method, CodeWriter writer, out MethodSymbols symbols)
+               {
+                       var buffer = new ByteBuffer ();
+                       symbols = new MethodSymbols (method.Name);
+
+                       this.method = method;
+                       reader.context = method;
+
+                       MoveTo (method.RVA);
+
+                       var flags = ReadByte ();
+
+                       MetadataToken local_var_token;
+
+                       switch (flags & 0x3) {
+                       case 0x2: // tiny
+                               buffer.WriteByte (flags);
+                               local_var_token = MetadataToken.Zero;
+                               symbols.code_size = flags >> 2;
+                               PatchRawCode (buffer, symbols.code_size, writer);
                                break;
-                       default :
-                               br.ReadInt32 ();
+                       case 0x3: // fat
+                               base.position--;
+
+                               PatchRawFatMethod (buffer, symbols, writer, out local_var_token);
                                break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       var symbol_reader = reader.module.SymbolReader;
+                       if (symbol_reader != null && writer.metadata.write_symbols) {
+                               symbols.method_token = GetOriginalToken (writer.metadata, method);
+                               symbols.local_var_token = local_var_token;
+                               symbol_reader.Read (symbols);
                        }
+
+                       return buffer;
+               }
+
+               void PatchRawFatMethod (ByteBuffer buffer, MethodSymbols symbols, CodeWriter writer, out MetadataToken local_var_token)
+               {
+                       var flags = ReadUInt16 ();
+                       buffer.WriteUInt16 (flags);
+                       buffer.WriteUInt16 (ReadUInt16 ());
+                       symbols.code_size = ReadInt32 ();
+                       buffer.WriteInt32 (symbols.code_size);
+                       local_var_token = ReadToken ();
+
+                       if (local_var_token.RID > 0) {
+                               var variables = symbols.variables = ReadVariables (local_var_token);
+                               buffer.WriteUInt32 (variables != null
+                                       ? writer.GetStandAloneSignature (symbols.variables).ToUInt32 ()
+                                       : 0);
+                       } else
+                               buffer.WriteUInt32 (0);
+
+                       PatchRawCode (buffer, symbols.code_size, writer);
+
+                       if ((flags & 0x8) != 0)
+                               PatchRawSection (buffer, writer.metadata);
                }
 
-               CallSite GetCallSiteAt (int token, GenericContext context)
+               static MetadataToken GetOriginalToken (MetadataBuilder metadata, MethodDefinition method)
                {
-                       StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
-                       MethodSig ms = m_reflectReader.SigReader.GetStandAloneMethodSig (
-                               sasTable [(int) GetRid (token) - 1].Signature);
-                       CallSite cs = new CallSite (ms.HasThis, ms.ExplicitThis,
-                               ms.MethCallConv, m_reflectReader.GetMethodReturnType (ms, context));
-                       cs.MetadataToken = new MetadataToken (token);
+                       MetadataToken original;
+                       if (metadata.TryGetOriginalMethodToken (method.token, out original))
+                               return original;
+
+                       return MetadataToken.Zero;
+               }
+
+               void PatchRawCode (ByteBuffer buffer, int code_size, CodeWriter writer)
+               {
+                       var metadata = writer.metadata;
+                       buffer.WriteBytes (ReadBytes (code_size));
+                       var end = buffer.position;
+                       buffer.position -= code_size;
+
+                       while (buffer.position < end) {
+                               OpCode opcode;
+                               var il_opcode = buffer.ReadByte ();
+                               if (il_opcode != 0xfe) {
+                                       opcode = OpCodes.OneByteOpCode [il_opcode];
+                               } else {
+                                       var il_opcode2 = buffer.ReadByte ();
+                                       opcode = OpCodes.TwoBytesOpCode [il_opcode2];
+                               }
 
-                       for (int i = 0; i < ms.ParamCount; i++) {
-                               Param p = ms.Parameters [i];
-                               cs.Parameters.Add (m_reflectReader.BuildParameterDefinition (i, p, context));
+                               switch (opcode.OperandType) {
+                               case OperandType.ShortInlineI:
+                               case OperandType.ShortInlineBrTarget:
+                               case OperandType.ShortInlineVar:
+                               case OperandType.ShortInlineArg:
+                                       buffer.position += 1;
+                                       break;
+                               case OperandType.InlineVar:
+                               case OperandType.InlineArg:
+                                       buffer.position += 2;
+                                       break;
+                               case OperandType.InlineBrTarget:
+                               case OperandType.ShortInlineR:
+                               case OperandType.InlineI:
+                                       buffer.position += 4;
+                                       break;
+                               case OperandType.InlineI8:
+                               case OperandType.InlineR:
+                                       buffer.position += 8;
+                                       break;
+                               case OperandType.InlineSwitch:
+                                       var length = buffer.ReadInt32 ();
+                                       buffer.position += length * 4;
+                                       break;
+                               case OperandType.InlineString:
+                                       var @string = GetString (new MetadataToken (buffer.ReadUInt32 ()));
+                                       buffer.position -= 4;
+                                       buffer.WriteUInt32 (
+                                               new MetadataToken (
+                                                       TokenType.String,
+                                                       metadata.user_string_heap.GetStringIndex (@string)).ToUInt32 ());
+                                       break;
+                               case OperandType.InlineSig:
+                                       var call_site = GetCallSite (new MetadataToken (buffer.ReadUInt32 ()));
+                                       buffer.position -= 4;
+                                       buffer.WriteUInt32 (writer.GetStandAloneSignature (call_site).ToUInt32 ());
+                                       break;
+                               case OperandType.InlineTok:
+                               case OperandType.InlineType:
+                               case OperandType.InlineMethod:
+                               case OperandType.InlineField:
+                                       var provider = reader.LookupToken (new MetadataToken (buffer.ReadUInt32 ()));
+                                       buffer.position -= 4;
+                                       buffer.WriteUInt32 (metadata.LookupToken (provider).ToUInt32 ());
+                                       break;
+                               }
                        }
+               }
+
+               void PatchRawSection (ByteBuffer buffer, MetadataBuilder metadata)
+               {
+                       var position = base.position;
+                       Align (4);
+                       buffer.WriteBytes (base.position - position);
+
+                       const byte fat_format = 0x40;
+                       const byte more_sects = 0x80;
+
+                       var flags = ReadByte ();
+                       if ((flags & fat_format) == 0) {
+                               buffer.WriteByte (flags);
+                               PatchRawSmallSection (buffer, metadata);
+                       } else
+                               PatchRawFatSection (buffer, metadata);
+
+                       if ((flags & more_sects) != 0)
+                               PatchRawSection (buffer, metadata);
+               }
+
+               void PatchRawSmallSection (ByteBuffer buffer, MetadataBuilder metadata)
+               {
+                       var length = ReadByte ();
+                       buffer.WriteByte (length);
+                       Advance (2);
+
+                       buffer.WriteUInt16 (0);
 
-                       ReflectionReader.CreateSentinelIfNeeded (cs, ms);
+                       var count = length / 12;
 
-                       return cs;
+                       PatchRawExceptionHandlers (buffer, metadata, count, false);
                }
 
-               public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+               void PatchRawFatSection (ByteBuffer buffer, MetadataBuilder metadata)
                {
-                       MethodBody body = variables.Container as MethodBody;
-                       if (body == null || body.LocalVarToken == 0)
-                               return;
+                       position--;
+                       var length = ReadInt32 ();
+                       buffer.WriteInt32 (length);
 
-                       StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
-                       StandAloneSigRow sasRow = sasTable [(int) GetRid (body.LocalVarToken) - 1];
-                       LocalVarSig sig = m_reflectReader.SigReader.GetLocalVarSig (sasRow.Signature);
-                       for (int i = 0; i < sig.Count; i++) {
-                               LocalVarSig.LocalVariable lv = sig.LocalVariables [i];
-                               TypeReference varType = m_reflectReader.GetTypeRefFromSig (
-                                       lv.Type, new GenericContext (body.Method));
+                       var count = (length >> 8) / 24;
 
-                               if (lv.ByRef)
-                                       varType = new ReferenceType (varType);
-                               if ((lv.Constraint & Constraint.Pinned) != 0)
-                                       varType = new PinnedType (varType);
+                       PatchRawExceptionHandlers (buffer, metadata, count, true);
+               }
 
-                               varType = m_reflectReader.GetModifierType (lv.CustomMods, varType);
+               void PatchRawExceptionHandlers (ByteBuffer buffer, MetadataBuilder metadata, int count, bool fat_entry)
+               {
+                       const int fat_entry_size = 16;
+                       const int small_entry_size = 6;
+
+                       for (int i = 0; i < count; i++) {
+                               ExceptionHandlerType handler_type;
+                               if (fat_entry) {
+                                       var type = ReadUInt32 ();
+                                       handler_type = (ExceptionHandlerType) (type & 0x7);
+                                       buffer.WriteUInt32 (type);
+                               } else {
+                                       var type = ReadUInt16 ();
+                                       handler_type = (ExceptionHandlerType) (type & 0x7);
+                                       buffer.WriteUInt16 (type);
+                               }
 
-                               body.Variables.Add (new VariableDefinition (
-                                               string.Concat ("V_", i), i, body.Method, varType));
+                               buffer.WriteBytes (ReadBytes (fat_entry ? fat_entry_size : small_entry_size));
+
+                               switch (handler_type) {
+                               case ExceptionHandlerType.Catch:
+                                       var exception = reader.LookupToken (ReadToken ());
+                                       buffer.WriteUInt32 (metadata.LookupToken (exception).ToUInt32 ());
+                                       break;
+                               default:
+                                       buffer.WriteUInt32 (ReadUInt32 ());
+                                       break;
+                               }
                        }
                }
+
+#endif
+
        }
 }
index f6abc5029fc0fae229f7c8a7ed7925ad92424b11..8bf072241dbdf045dfefcbf485ee3970a24657ac 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Cil {
+using System;
+using System.Collections.Generic;
+
+using Mono.Collections.Generic;
 
-       using System;
-       using System.Collections;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
 
-       using Mono.Cecil;
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
+using RVA = System.UInt32;
 
-       sealed class CodeWriter : BaseCodeVisitor {
+#if !READ_ONLY
 
-               ReflectionWriter m_reflectWriter;
-               MemoryBinaryWriter m_binaryWriter;
-               MemoryBinaryWriter m_codeWriter;
+namespace Mono.Cecil.Cil {
 
-               IDictionary m_localSigCache;
-               IDictionary m_standaloneSigCache;
+       sealed class CodeWriter : ByteBuffer {
 
-               IDictionary m_stackSizes;
+               readonly RVA code_base;
+               internal readonly MetadataBuilder metadata;
+               readonly Dictionary<uint, MetadataToken> standalone_signatures;
 
-               bool stripped;
+               RVA current;
+               MethodBody body;
 
-               public bool Stripped {
-                       get { return stripped; }
-                       set { stripped = value; }
+               public CodeWriter (MetadataBuilder metadata)
+                       : base (0)
+               {
+                       this.code_base = metadata.text_map.GetNextRVA (TextSegment.CLIHeader);
+                       this.current = code_base;
+                       this.metadata = metadata;
+                       this.standalone_signatures = new Dictionary<uint, MetadataToken> ();
                }
 
-               public CodeWriter (ReflectionWriter reflectWriter, MemoryBinaryWriter writer)
+               public RVA WriteMethodBody (MethodDefinition method)
                {
-                       m_reflectWriter = reflectWriter;
-                       m_binaryWriter = writer;
-                       m_codeWriter = new MemoryBinaryWriter ();
+                       var rva = BeginMethod ();
 
-                       m_localSigCache = new Hashtable ();
-                       m_standaloneSigCache = new Hashtable ();
+                       if (IsUnresolved (method)) {
+                               if (method.rva == 0)
+                                       return 0;
 
-                       m_stackSizes = new Hashtable ();
-               }
+                               WriteUnresolvedMethodBody (method);
+                       } else {
+                               if (IsEmptyMethodBody (method.Body))
+                                       return 0;
 
-               public RVA WriteMethodBody (MethodDefinition meth)
-               {
-                       if (meth.Body == null)
-                               return RVA.Zero;
+                               WriteResolvedMethodBody (method);
+                       }
 
-                       RVA ret = m_reflectWriter.MetadataWriter.GetDataCursor ();
-                       meth.Body.Accept (this);
-                       return ret;
-               }
+                       Align (4);
 
-               public override void VisitMethodBody (MethodBody body)
-               {
-                       m_codeWriter.Empty ();
+                       EndMethod ();
+                       return rva;
                }
 
-               void WriteToken (MetadataToken token)
+               static bool IsEmptyMethodBody (MethodBody body)
                {
-                       if (token.RID == 0)
-                               m_codeWriter.Write (0);
-                       else
-                               m_codeWriter.Write (token.ToUInt ());
+                       return body.instructions.IsNullOrEmpty ()
+                               && body.variables.IsNullOrEmpty ();
                }
 
-               static int GetParameterIndex (MethodBody body, ParameterDefinition p)
+               static bool IsUnresolved (MethodDefinition method)
                {
-                       int idx = body.Method.Parameters.IndexOf (p);
-                       if (idx == -1 && p == body.Method.This)
-                               return 0;
-                       if (body.Method.HasThis)
-                               idx++;
-
-                       return idx;
+                       return method.HasBody && method.HasImage && method.body == null;
                }
 
-               public override void VisitInstructionCollection (InstructionCollection instructions)
+               void WriteUnresolvedMethodBody (MethodDefinition method)
                {
-                       MethodBody body = instructions.Container;
-                       long start = m_codeWriter.BaseStream.Position;
-
-                       ComputeMaxStack (instructions);
+                       var code_reader = metadata.module.Read (method, (_, reader) => reader.code);
 
-                       foreach (Instruction instr in instructions) {
+                       MethodSymbols symbols;
+                       var buffer = code_reader.PatchRawMethodBody (method, this, out symbols);
 
-                               instr.Offset = (int) (m_codeWriter.BaseStream.Position - start);
+                       WriteBytes (buffer);
 
-                               if (instr.OpCode.Size == 1)
-                                       m_codeWriter.Write (instr.OpCode.Op2);
-                               else {
-                                       m_codeWriter.Write (instr.OpCode.Op1);
-                                       m_codeWriter.Write (instr.OpCode.Op2);
-                               }
-
-                               if (instr.OpCode.OperandType != OperandType.InlineNone &&
-                                       instr.Operand == null)
-                                       throw new ReflectionException ("OpCode {0} have null operand", instr.OpCode.Name);
-
-                               switch (instr.OpCode.OperandType) {
-                               case OperandType.InlineNone :
-                                       break;
-                               case OperandType.InlineSwitch :
-                                       Instruction [] targets = (Instruction []) instr.Operand;
-                                       for (int i = 0; i < targets.Length + 1; i++)
-                                               m_codeWriter.Write ((uint) 0);
-                                       break;
-                               case OperandType.ShortInlineBrTarget :
-                                       m_codeWriter.Write ((byte) 0);
-                                       break;
-                               case OperandType.InlineBrTarget :
-                                       m_codeWriter.Write (0);
-                                       break;
-                               case OperandType.ShortInlineI :
-                                       if (instr.OpCode == OpCodes.Ldc_I4_S)
-                                               m_codeWriter.Write ((sbyte) instr.Operand);
-                                       else
-                                               m_codeWriter.Write ((byte) instr.Operand);
-                                       break;
-                               case OperandType.ShortInlineVar :
-                                       m_codeWriter.Write ((byte) body.Variables.IndexOf (
-                                               (VariableDefinition) instr.Operand));
-                                       break;
-                               case OperandType.ShortInlineParam :
-                                       m_codeWriter.Write ((byte) GetParameterIndex (body, (ParameterDefinition) instr.Operand));
-                                       break;
-                               case OperandType.InlineSig :
-                                       WriteToken (GetCallSiteToken ((CallSite) instr.Operand));
-                                       break;
-                               case OperandType.InlineI :
-                                       m_codeWriter.Write ((int) instr.Operand);
-                                       break;
-                               case OperandType.InlineVar :
-                                       m_codeWriter.Write ((short) body.Variables.IndexOf (
-                                               (VariableDefinition) instr.Operand));
-                                       break;
-                               case OperandType.InlineParam :
-                                       m_codeWriter.Write ((short) GetParameterIndex (
-                                                       body, (ParameterDefinition) instr.Operand));
-                                       break;
-                               case OperandType.InlineI8 :
-                                       m_codeWriter.Write ((long) instr.Operand);
-                                       break;
-                               case OperandType.ShortInlineR :
-                                       m_codeWriter.Write ((float) instr.Operand);
-                                       break;
-                               case OperandType.InlineR :
-                                       m_codeWriter.Write ((double) instr.Operand);
-                                       break;
-                               case OperandType.InlineString :
-                                       WriteToken (new MetadataToken (TokenType.String,
-                                                       m_reflectWriter.MetadataWriter.AddUserString (instr.Operand as string)));
-                                       break;
-                               case OperandType.InlineField :
-                               case OperandType.InlineMethod :
-                               case OperandType.InlineType :
-                               case OperandType.InlineTok :
-                                       if (instr.Operand is TypeReference)
-                                               WriteToken (GetTypeToken ((TypeReference) instr.Operand));
-                                       else if (instr.Operand is GenericInstanceMethod)
-                                               WriteToken (m_reflectWriter.GetMethodSpecToken (instr.Operand as GenericInstanceMethod));
-                                       else if (instr.Operand is MemberReference)
-                                               WriteToken (m_reflectWriter.GetMemberRefToken ((MemberReference) instr.Operand));
-                                       else if (instr.Operand is IMetadataTokenProvider)
-                                               WriteToken (((IMetadataTokenProvider) instr.Operand).MetadataToken);
-                                       else
-                                               throw new ReflectionException (
-                                                       string.Format ("Wrong operand for {0} OpCode: {1}",
-                                                               instr.OpCode.OperandType,
-                                                               instr.Operand.GetType ().FullName));
-                                       break;
-                               }
-                       }
+                       if (symbols.instructions.IsNullOrEmpty ())
+                               return;
 
-                       // patch branches
-                       long pos = m_codeWriter.BaseStream.Position;
-
-                       foreach (Instruction instr in instructions) {
-                               switch (instr.OpCode.OperandType) {
-                               case OperandType.InlineSwitch :
-                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-                                       Instruction [] targets = (Instruction []) instr.Operand;
-                                       m_codeWriter.Write ((uint) targets.Length);
-                                       foreach (Instruction tgt in targets)
-                                               m_codeWriter.Write ((tgt.Offset - (instr.Offset +
-                                                       instr.OpCode.Size + (4 * (targets.Length + 1)))));
-                                       break;
-                               case OperandType.ShortInlineBrTarget :
-                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-                                       m_codeWriter.Write ((byte) (((Instruction) instr.Operand).Offset -
-                                               (instr.Offset + instr.OpCode.Size + 1)));
-                                       break;
-                               case OperandType.InlineBrTarget :
-                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-                                       m_codeWriter.Write(((Instruction) instr.Operand).Offset -
-                                               (instr.Offset + instr.OpCode.Size + 4));
-                                       break;
-                               }
-                       }
+                       symbols.method_token = method.token;
+                       symbols.local_var_token = GetLocalVarToken (buffer, symbols);
 
-                       m_codeWriter.BaseStream.Position = pos;
+                       var symbol_writer = metadata.symbol_writer;
+                       if (symbol_writer != null)
+                               symbol_writer.Write (symbols);
                }
 
-               MetadataToken GetTypeToken (TypeReference type)
+               static MetadataToken GetLocalVarToken (ByteBuffer buffer, MethodSymbols symbols)
                {
-                       return m_reflectWriter.GetTypeDefOrRefToken (type);
+                       if (symbols.variables.IsNullOrEmpty ())
+                               return MetadataToken.Zero;
+
+                       buffer.position = 8;
+                       return new MetadataToken (buffer.ReadUInt32 ());
                }
 
-               MetadataToken GetCallSiteToken (CallSite cs)
+               void WriteResolvedMethodBody (MethodDefinition method)
                {
-                       uint sig;
-                       int sentinel = cs.GetSentinel ();
-                       if (sentinel > 0)
-                               sig = m_reflectWriter.SignatureWriter.AddMethodDefSig (
-                                       m_reflectWriter.GetMethodDefSig (cs));
+                       body = method.Body;
+                       ComputeHeader ();
+                       if (RequiresFatHeader ())
+                               WriteFatHeader ();
                        else
-                               sig = m_reflectWriter.SignatureWriter.AddMethodRefSig (
-                                       m_reflectWriter.GetMethodRefSig (cs));
+                               WriteByte ((byte) (0x2 | (body.CodeSize << 2))); // tiny
 
-                       if (m_standaloneSigCache.Contains (sig))
-                               return (MetadataToken) m_standaloneSigCache [sig];
+                       WriteInstructions ();
 
-                       StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
-                       StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (sig);
+                       if (body.HasExceptionHandlers)
+                               WriteExceptionHandlers ();
 
-                       sasTable.Rows.Add(sasRow);
-
-                       MetadataToken token = new MetadataToken (TokenType.Signature, (uint) sasTable.Rows.Count);
-                       m_standaloneSigCache [sig] = token;
-                       return token;
+                       var symbol_writer = metadata.symbol_writer;
+                       if (symbol_writer != null)
+                               symbol_writer.Write (body);
                }
 
-               static int GetLength (Instruction start, Instruction end, InstructionCollection instructions)
+               void WriteFatHeader ()
                {
-                       Instruction last = instructions [instructions.Count - 1];
-                       return (end == instructions.Outside ? last.Offset + last.GetSize () : end.Offset) - start.Offset;
+                       var body = this.body;
+                       byte flags = 0x3;       // fat
+                       if (body.InitLocals)
+                               flags |= 0x10;  // init locals
+                       if (body.HasExceptionHandlers)
+                               flags |= 0x8;   // more sections
+
+                       WriteByte (flags);
+                       WriteByte (0x30);
+                       WriteInt16 ((short) body.max_stack_size);
+                       WriteInt32 (body.code_size);
+                       body.local_var_token = body.HasVariables
+                               ? GetStandAloneSignature (body.Variables)
+                               : MetadataToken.Zero;
+                       WriteMetadataToken (body.local_var_token);
                }
 
-               static bool IsRangeFat (Instruction start, Instruction end, InstructionCollection instructions)
+               void WriteInstructions ()
                {
-                       return GetLength (start, end, instructions) >= 256 ||
-                               start.Offset >= 65536;
-               }
-
-               static bool IsFat (ExceptionHandlerCollection seh)
-               {
-                       for (int i = 0; i < seh.Count; i++) {
-                               ExceptionHandler eh = seh [i];
-                               if (IsRangeFat (eh.TryStart, eh.TryEnd, seh.Container.Instructions))
-                                       return true;
-
-                               if (IsRangeFat (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions))
-                                       return true;
-
-                               switch (eh.Type) {
-                               case ExceptionHandlerType.Filter :
-                                       if (IsRangeFat (eh.FilterStart, eh.FilterEnd, seh.Container.Instructions))
-                                               return true;
-                                       break;
-                               }
+                       var instructions = body.Instructions;
+                       var items = instructions.items;
+                       var size = instructions.size;
+
+                       for (int i = 0; i < size; i++) {
+                               var instruction = items [i];
+                               WriteOpCode (instruction.opcode);
+                               WriteOperand (instruction);
                        }
-
-                       return false;
                }
 
-               void WriteExceptionHandlerCollection (ExceptionHandlerCollection seh)
+               void WriteOpCode (OpCode opcode)
                {
-                       m_codeWriter.QuadAlign ();
-
-                       if (seh.Count < 0x15 && !IsFat (seh)) {
-                               m_codeWriter.Write ((byte) MethodDataSection.EHTable);
-                               m_codeWriter.Write ((byte) (seh.Count * 12 + 4));
-                               m_codeWriter.Write (new byte [2]);
-                               foreach (ExceptionHandler eh in seh) {
-                                       m_codeWriter.Write ((ushort) eh.Type);
-                                       m_codeWriter.Write ((ushort) eh.TryStart.Offset);
-                                       m_codeWriter.Write ((byte) (eh.TryEnd.Offset - eh.TryStart.Offset));
-                                       m_codeWriter.Write ((ushort) eh.HandlerStart.Offset);
-                                       m_codeWriter.Write ((byte) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
-                                       WriteHandlerSpecific (eh);
-                               }
+                       if (opcode.Size == 1) {
+                               WriteByte (opcode.Op2);
                        } else {
-                               m_codeWriter.Write ((byte) (MethodDataSection.FatFormat | MethodDataSection.EHTable));
-                               WriteFatBlockSize (seh);
-                               foreach (ExceptionHandler eh in seh) {
-                                       m_codeWriter.Write ((uint) eh.Type);
-                                       m_codeWriter.Write ((uint) eh.TryStart.Offset);
-                                       m_codeWriter.Write ((uint) (eh.TryEnd.Offset - eh.TryStart.Offset));
-                                       m_codeWriter.Write ((uint) eh.HandlerStart.Offset);
-                                       m_codeWriter.Write ((uint) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
-                                       WriteHandlerSpecific (eh);
-                               }
+                               WriteByte (opcode.Op1);
+                               WriteByte (opcode.Op2);
                        }
                }
 
-               void WriteFatBlockSize (ExceptionHandlerCollection seh)
+               void WriteOperand (Instruction instruction)
                {
-                       int size = seh.Count * 24 + 4;
-                       m_codeWriter.Write ((byte) (size & 0xff));
-                       m_codeWriter.Write ((byte) ((size >> 8) & 0xff));
-                       m_codeWriter.Write ((byte) ((size >> 16) & 0xff));
-               }
+                       var opcode = instruction.opcode;
+                       var operand_type = opcode.OperandType;
+                       if (operand_type == OperandType.InlineNone)
+                               return;
 
-               void WriteHandlerSpecific (ExceptionHandler eh)
-               {
-                       switch (eh.Type) {
-                       case ExceptionHandlerType.Catch :
-                               WriteToken (GetTypeToken (eh.CatchType));
+                       var operand = instruction.operand;
+                       if (operand == null)
+                               throw new ArgumentException ();
+
+                       switch (operand_type) {
+                       case OperandType.InlineSwitch: {
+                               var targets = (Instruction []) operand;
+                               WriteInt32 (targets.Length);
+                               var diff = instruction.Offset + opcode.Size + (4 * (targets.Length + 1));
+                               for (int i = 0; i < targets.Length; i++)
+                                       WriteInt32 (GetTargetOffset (targets [i]) - diff);
                                break;
-                       case ExceptionHandlerType.Filter :
-                               m_codeWriter.Write ((uint) eh.FilterStart.Offset);
+                       }
+                       case OperandType.ShortInlineBrTarget: {
+                               var target = (Instruction) operand;
+                               WriteSByte ((sbyte) (GetTargetOffset (target) - (instruction.Offset + opcode.Size + 1)));
                                break;
-                       default :
-                               m_codeWriter.Write (0);
+                       }
+                       case OperandType.InlineBrTarget: {
+                               var target = (Instruction) operand;
+                               WriteInt32 (GetTargetOffset (target) - (instruction.Offset + opcode.Size + 4));
                                break;
                        }
+                       case OperandType.ShortInlineVar:
+                               WriteByte ((byte) GetVariableIndex ((VariableDefinition) operand));
+                               break;
+                       case OperandType.ShortInlineArg:
+                               WriteByte ((byte) GetParameterIndex ((ParameterDefinition) operand));
+                               break;
+                       case OperandType.InlineVar:
+                               WriteInt16 ((short) GetVariableIndex ((VariableDefinition) operand));
+                               break;
+                       case OperandType.InlineArg:
+                               WriteInt16 ((short) GetParameterIndex ((ParameterDefinition) operand));
+                               break;
+                       case OperandType.InlineSig:
+                               WriteMetadataToken (GetStandAloneSignature ((CallSite) operand));
+                               break;
+                       case OperandType.ShortInlineI:
+                               if (opcode == OpCodes.Ldc_I4_S)
+                                       WriteSByte ((sbyte) operand);
+                               else
+                                       WriteByte ((byte) operand);
+                               break;
+                       case OperandType.InlineI:
+                               WriteInt32 ((int) operand);
+                               break;
+                       case OperandType.InlineI8:
+                               WriteInt64 ((long) operand);
+                               break;
+                       case OperandType.ShortInlineR:
+                               WriteSingle ((float) operand);
+                               break;
+                       case OperandType.InlineR:
+                               WriteDouble ((double) operand);
+                               break;
+                       case OperandType.InlineString:
+                               WriteMetadataToken (
+                                       new MetadataToken (
+                                               TokenType.String,
+                                               GetUserStringIndex ((string) operand)));
+                               break;
+                       case OperandType.InlineType:
+                       case OperandType.InlineField:
+                       case OperandType.InlineMethod:
+                       case OperandType.InlineTok:
+                               WriteMetadataToken (metadata.LookupToken ((IMetadataTokenProvider) operand));
+                               break;
+                       default:
+                               throw new ArgumentException ();
+                       }
                }
 
-               public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+               int GetTargetOffset (Instruction instruction)
                {
-                       MethodBody body = variables.Container as MethodBody;
-                       if (body == null || stripped)
-                               return;
-
-                       uint sig = m_reflectWriter.SignatureWriter.AddLocalVarSig (
-                                       GetLocalVarSig (variables));
-
-                       if (m_localSigCache.Contains (sig)) {
-                               body.LocalVarToken = (int) m_localSigCache [sig];
-                               return;
+                       if (instruction == null) {
+                               var last = body.instructions [body.instructions.size - 1];
+                               return last.offset + last.GetSize ();
                        }
 
-                       StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
-                       StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (
-                               sig);
-
-                       sasTable.Rows.Add (sasRow);
-                       body.LocalVarToken = sasTable.Rows.Count;
-                       m_localSigCache [sig] = body.LocalVarToken;
+                       return instruction.offset;
                }
 
-               public override void TerminateMethodBody (MethodBody body)
+               uint GetUserStringIndex (string @string)
                {
-                       long pos = m_binaryWriter.BaseStream.Position;
-
-                       if (body.HasVariables || body.HasExceptionHandlers
-                               || m_codeWriter.BaseStream.Length >= 64 || body.MaxStack > 8) {
-
-                               MethodHeader header = MethodHeader.FatFormat;
-                               if (body.InitLocals)
-                                       header |= MethodHeader.InitLocals;
-                               if (body.HasExceptionHandlers)
-                                       header |= MethodHeader.MoreSects;
-
-                               m_binaryWriter.Write ((byte) header);
-                               m_binaryWriter.Write ((byte) 0x30); // (header size / 4) << 4
-                               m_binaryWriter.Write ((short) body.MaxStack);
-                               m_binaryWriter.Write ((int) m_codeWriter.BaseStream.Length);
-                               // the token should be zero if there are no variables
-                               int token = body.HasVariables ? ((int) TokenType.Signature | body.LocalVarToken) : 0;
-                               m_binaryWriter.Write (token);
-
-                               if (body.HasExceptionHandlers)
-                                       WriteExceptionHandlerCollection (body.ExceptionHandlers);
-                       } else
-                               m_binaryWriter.Write ((byte) ((byte) MethodHeader.TinyFormat |
-                                       m_codeWriter.BaseStream.Length << 2));
-
-                       m_binaryWriter.Write (m_codeWriter);
-                       m_binaryWriter.QuadAlign ();
+                       if (@string == null)
+                               return 0;
 
-                       m_reflectWriter.MetadataWriter.AddData (
-                               (int) (m_binaryWriter.BaseStream.Position - pos));
+                       return metadata.user_string_heap.GetStringIndex (@string);
                }
 
-               public LocalVarSig.LocalVariable GetLocalVariableSig (VariableDefinition var)
+               static int GetVariableIndex (VariableDefinition variable)
                {
-                       LocalVarSig.LocalVariable lv = new LocalVarSig.LocalVariable ();
-                       TypeReference type = var.VariableType;
-
-                       lv.CustomMods = m_reflectWriter.GetCustomMods (type);
+                       return variable.Index;
+               }
 
-                       if (type is PinnedType) {
-                               lv.Constraint |= Constraint.Pinned;
-                               type = (type as PinnedType).ElementType;
-                       }
+               int GetParameterIndex (ParameterDefinition parameter)
+               {
+                       if (body.method.HasThis) {
+                               if (parameter == body.this_parameter)
+                                       return 0;
 
-                       if (type is ReferenceType) {
-                               lv.ByRef = true;
-                               type = (type as ReferenceType).ElementType;
+                               return parameter.Index + 1;
                        }
 
-                       lv.Type = m_reflectWriter.GetSigType (type);
+                       return parameter.Index;
+               }
 
-                       return lv;
+               bool RequiresFatHeader ()
+               {
+                       var body = this.body;
+                       return body.CodeSize >= 64
+                               || body.InitLocals
+                               || body.HasVariables
+                               || body.HasExceptionHandlers
+                               || body.MaxStackSize > 8;
                }
 
-               public LocalVarSig GetLocalVarSig (VariableDefinitionCollection vars)
+               void ComputeHeader ()
                {
-                       LocalVarSig lvs = new LocalVarSig ();
-                       lvs.CallingConvention |= 0x7;
-                       lvs.Count = vars.Count;
-                       lvs.LocalVariables = new LocalVarSig.LocalVariable [lvs.Count];
-                       for (int i = 0; i < lvs.Count; i++) {
-                               lvs.LocalVariables [i] = GetLocalVariableSig (vars [i]);
+                       int offset = 0;
+                       var instructions = body.instructions;
+                       var items = instructions.items;
+                       var count = instructions.size;
+                       var stack_size = 0;
+                       var max_stack = 0;
+                       Dictionary<Instruction, int> stack_sizes = null;
+
+                       if (body.HasExceptionHandlers)
+                               ComputeExceptionHandlerStackSize (ref stack_sizes);
+
+                       for (int i = 0; i < count; i++) {
+                               var instruction = items [i];
+                               instruction.offset = offset;
+                               offset += instruction.GetSize ();
+
+                               ComputeStackSize (instruction, ref stack_sizes, ref stack_size, ref max_stack);
                        }
 
-                       return lvs;
+                       body.code_size = offset;
+                       body.max_stack_size = max_stack;
                }
 
-               void ComputeMaxStack (InstructionCollection instructions)
+               void ComputeExceptionHandlerStackSize (ref Dictionary<Instruction, int> stack_sizes)
                {
-                       int current = 0;
-                       int max = 0;
-                       m_stackSizes.Clear ();
+                       var exception_handlers = body.ExceptionHandlers;
 
-                       foreach (ExceptionHandler eh in instructions.Container.ExceptionHandlers) {
-                               switch (eh.Type) {
-                               case ExceptionHandlerType.Catch :
-                               case ExceptionHandlerType.Filter :
-                                       m_stackSizes [eh.HandlerStart] = 1;
-                                       max = 1;
+                       for (int i = 0; i < exception_handlers.Count; i++) {
+                               var exception_handler = exception_handlers [i];
+
+                               switch (exception_handler.HandlerType) {
+                               case ExceptionHandlerType.Catch:
+                                       AddExceptionStackSize (exception_handler.HandlerStart, ref stack_sizes);
+                                       break;
+                               case ExceptionHandlerType.Filter:
+                                       AddExceptionStackSize (exception_handler.FilterStart, ref stack_sizes);
+                                       AddExceptionStackSize (exception_handler.HandlerStart, ref stack_sizes);
                                        break;
                                }
                        }
+               }
 
-                       foreach (Instruction instr in instructions) {
+               static void AddExceptionStackSize (Instruction handler_start, ref Dictionary<Instruction, int> stack_sizes)
+               {
+                       if (handler_start == null)
+                               return;
 
-                               object savedSize = m_stackSizes [instr];
-                               if (savedSize != null)
-                                       current = (int) savedSize;
+                       if (stack_sizes == null)
+                               stack_sizes = new Dictionary<Instruction, int> ();
 
-                               current -= GetPopDelta (instructions.Container.Method, instr, current);
+                       stack_sizes [handler_start] = 1;
+               }
 
-                               if (current < 0)
-                                       current = 0;
+               static void ComputeStackSize (Instruction instruction, ref Dictionary<Instruction, int> stack_sizes, ref int stack_size, ref int max_stack)
+               {
+                       int computed_size;
+                       if (stack_sizes != null && stack_sizes.TryGetValue (instruction, out computed_size))
+                               stack_size = computed_size;
 
-                               current += GetPushDelta (instr);
+                       max_stack = System.Math.Max (max_stack, stack_size);
+                       ComputeStackDelta (instruction, ref stack_size);
+                       max_stack = System.Math.Max (max_stack, stack_size);
 
-                               if (current > max)
-                                       max = current;
+                       CopyBranchStackSize (instruction, ref stack_sizes, stack_size);
+                       ComputeStackSize (instruction, ref stack_size);
+               }
 
-                               // for forward branches, copy the stack size for the instruction that is being branched to
-                               switch (instr.OpCode.OperandType) {
-                                       case OperandType.InlineBrTarget:
-                                       case OperandType.ShortInlineBrTarget:
-                                               m_stackSizes [instr.Operand] = current;
-                                       break;
-                                       case OperandType.InlineSwitch:
-                                               foreach (Instruction target in (Instruction []) instr.Operand)
-                                                       m_stackSizes [target] = current;
-                                       break;
-                               }
+               static void CopyBranchStackSize (Instruction instruction, ref Dictionary<Instruction, int> stack_sizes, int stack_size)
+               {
+                       if (stack_size == 0)
+                               return;
 
-                               switch (instr.OpCode.FlowControl) {
-                               case FlowControl.Branch:
-                               case FlowControl.Throw:
-                               case FlowControl.Return:
-                                       // next statement is not reachable from this statement, so reset the stack depth to 0
-                                       current = 0;
-                                       break;
-                               }
+                       switch (instruction.opcode.OperandType) {
+                       case OperandType.ShortInlineBrTarget:
+                       case OperandType.InlineBrTarget:
+                               CopyBranchStackSize (ref stack_sizes, (Instruction) instruction.operand, stack_size);
+                               break;
+                       case OperandType.InlineSwitch:
+                               var targets = (Instruction[]) instruction.operand;
+                               for (int i = 0; i < targets.Length; i++)
+                                       CopyBranchStackSize (ref stack_sizes, targets [i], stack_size);
+                               break;
                        }
-
-                       instructions.Container.MaxStack = max + 1; // you never know
                }
 
-               static int GetPushDelta (Instruction instruction)
+               static void CopyBranchStackSize (ref Dictionary<Instruction, int> stack_sizes, Instruction target, int stack_size)
                {
-                       OpCode code = instruction.OpCode;
-                       switch (code.StackBehaviourPush) {
-                       case StackBehaviour.Push0:
-                               return 0;
+                       if (stack_sizes == null)
+                               stack_sizes = new Dictionary<Instruction, int> ();
 
-                       case StackBehaviour.Push1:
-                       case StackBehaviour.Pushi:
-                       case StackBehaviour.Pushi8:
-                       case StackBehaviour.Pushr4:
-                       case StackBehaviour.Pushr8:
-                       case StackBehaviour.Pushref:
-                               return 1;
+                       int branch_stack_size = stack_size;
 
-                       case StackBehaviour.Push1_push1:
-                               return 2;
+                       int computed_size;
+                       if (stack_sizes.TryGetValue (target, out computed_size))
+                               branch_stack_size = System.Math.Max (branch_stack_size, computed_size);
 
-                       case StackBehaviour.Varpush:
-                               if (code.FlowControl != FlowControl.Call)
-                                       break;
+                       stack_sizes [target] = branch_stack_size;
+               }
 
-                               IMethodSignature method = (IMethodSignature) instruction.Operand;
-                               return IsVoid (method.ReturnType.ReturnType) ? 0 : 1;
+               static void ComputeStackSize (Instruction instruction, ref int stack_size)
+               {
+                       switch (instruction.opcode.FlowControl) {
+                       case FlowControl.Branch:
+                       case FlowControl.Break:
+                       case FlowControl.Throw:
+                       case FlowControl.Return:
+                               stack_size = 0;
+                               break;
                        }
+               }
 
-                       throw new NotSupportedException ();
+               static void ComputeStackDelta (Instruction instruction, ref int stack_size)
+               {
+                       switch (instruction.opcode.FlowControl) {
+                       case FlowControl.Call: {
+                               var method = (IMethodSignature) instruction.operand;
+                               stack_size -= (method.HasParameters ? method.Parameters.Count : 0)
+                                       + (method.HasThis && instruction.opcode.Code != Code.Newobj ? 1 : 0);
+                               stack_size += (method.ReturnType.etype == ElementType.Void ? 0 : 1)
+                                       + (method.HasThis && instruction.opcode.Code == Code.Newobj ? 1 : 0);
+                               break;
+                       }
+                       default:
+                               ComputePopDelta (instruction.opcode.StackBehaviourPop, ref stack_size);
+                               ComputePushDelta (instruction.opcode.StackBehaviourPush, ref stack_size);
+                               break;
+                       }
                }
 
-               static int GetPopDelta (MethodDefinition current, Instruction instruction, int height)
+               static void ComputePopDelta (StackBehaviour pop_behavior, ref int stack_size)
                {
-                       OpCode code = instruction.OpCode;
-                       switch (code.StackBehaviourPop) {
-                       case StackBehaviour.Pop0:
-                               return 0;
+                       switch (pop_behavior) {
                        case StackBehaviour.Popi:
                        case StackBehaviour.Popref:
                        case StackBehaviour.Pop1:
-                               return 1;
-
+                               stack_size--;
+                               break;
                        case StackBehaviour.Pop1_pop1:
                        case StackBehaviour.Popi_pop1:
                        case StackBehaviour.Popi_popi:
@@ -538,40 +453,186 @@ namespace Mono.Cecil.Cil {
                        case StackBehaviour.Popi_popr8:
                        case StackBehaviour.Popref_pop1:
                        case StackBehaviour.Popref_popi:
-                               return 2;
-
+                               stack_size -= 2;
+                               break;
                        case StackBehaviour.Popi_popi_popi:
                        case StackBehaviour.Popref_popi_popi:
                        case StackBehaviour.Popref_popi_popi8:
                        case StackBehaviour.Popref_popi_popr4:
                        case StackBehaviour.Popref_popi_popr8:
                        case StackBehaviour.Popref_popi_popref:
-                               return 3;
-
+                               stack_size -= 3;
+                               break;
                        case StackBehaviour.PopAll:
-                               return height;
+                               stack_size = 0;
+                               break;
+                       }
+               }
 
-                       case StackBehaviour.Varpop:
-                               if (code == OpCodes.Ret)
-                                       return IsVoid (current.ReturnType.ReturnType) ? 0 : 1;
+               static void ComputePushDelta (StackBehaviour push_behaviour, ref int stack_size)
+               {
+                       switch (push_behaviour) {
+                       case StackBehaviour.Push1:
+                       case StackBehaviour.Pushi:
+                       case StackBehaviour.Pushi8:
+                       case StackBehaviour.Pushr4:
+                       case StackBehaviour.Pushr8:
+                       case StackBehaviour.Pushref:
+                               stack_size++;
+                               break;
+                       case StackBehaviour.Push1_push1:
+                               stack_size += 2;
+                               break;
+                       }
+               }
 
-                               if (code.FlowControl != FlowControl.Call)
-                                       break;
+               void WriteExceptionHandlers ()
+               {
+                       Align (4);
+
+                       var handlers = body.ExceptionHandlers;
+
+                       if (handlers.Count < 0x15 && !RequiresFatSection (handlers))
+                               WriteSmallSection (handlers);
+                       else
+                               WriteFatSection (handlers);
+               }
+
+               static bool RequiresFatSection (Collection<ExceptionHandler> handlers)
+               {
+                       for (int i = 0; i < handlers.Count; i++) {
+                               var handler = handlers [i];
+
+                               if (IsFatRange (handler.TryStart, handler.TryEnd))
+                                       return true;
+
+                               if (IsFatRange (handler.HandlerStart, handler.HandlerEnd))
+                                       return true;
 
-                               IMethodSignature method = (IMethodSignature) instruction.Operand;
-                               int count = method.HasParameters ? method.Parameters.Count : 0;
-                               if (method.HasThis && code != OpCodes.Newobj)
-                                       ++count;
+                               if (handler.HandlerType == ExceptionHandlerType.Filter
+                                       && IsFatRange (handler.FilterStart, handler.FilterEnd))
+                                       return true;
+                       }
+
+                       return false;
+               }
+
+               static bool IsFatRange (Instruction start, Instruction end)
+               {
+                       if (end == null)
+                               return true;
+
+                       return end.Offset - start.Offset > 255 || start.Offset > 65535;
+               }
+
+               void WriteSmallSection (Collection<ExceptionHandler> handlers)
+               {
+                       const byte eh_table = 0x1;
+
+                       WriteByte (eh_table);
+                       WriteByte ((byte) (handlers.Count * 12 + 4));
+                       WriteBytes (2);
+
+                       WriteExceptionHandlers (
+                               handlers,
+                               i => WriteUInt16 ((ushort) i),
+                               i => WriteByte ((byte) i));
+               }
+
+               void WriteFatSection (Collection<ExceptionHandler> handlers)
+               {
+                       const byte eh_table = 0x1;
+                       const byte fat_format = 0x40;
+
+                       WriteByte (eh_table | fat_format);
+
+                       int size = handlers.Count * 24 + 4;
+                       WriteByte ((byte) (size & 0xff));
+                       WriteByte ((byte) ((size >> 8) & 0xff));
+                       WriteByte ((byte) ((size >> 16) & 0xff));
+
+                       WriteExceptionHandlers (handlers, WriteInt32, WriteInt32);
+               }
+
+               void WriteExceptionHandlers (Collection<ExceptionHandler> handlers, Action<int> write_entry, Action<int> write_length)
+               {
+                       for (int i = 0; i < handlers.Count; i++) {
+                               var handler = handlers [i];
+
+                               write_entry ((int) handler.HandlerType);
+
+                               write_entry (handler.TryStart.Offset);
+                               write_length (GetTargetOffset (handler.TryEnd) - handler.TryStart.Offset);
+
+                               write_entry (handler.HandlerStart.Offset);
+                               write_length (GetTargetOffset (handler.HandlerEnd) - handler.HandlerStart.Offset);
+
+                               WriteExceptionHandlerSpecific (handler);
+                       }
+               }
 
-                               return count;
+               void WriteExceptionHandlerSpecific (ExceptionHandler handler)
+               {
+                       switch (handler.HandlerType) {
+                       case ExceptionHandlerType.Catch:
+                               WriteMetadataToken (metadata.LookupToken (handler.CatchType));
+                               break;
+                       case ExceptionHandlerType.Filter:
+                               WriteInt32 (handler.FilterStart.Offset);
+                               break;
+                       default:
+                               WriteInt32 (0);
+                               break;
                        }
+               }
+
+               public MetadataToken GetStandAloneSignature (Collection<VariableDefinition> variables)
+               {
+                       var signature = metadata.GetLocalVariableBlobIndex (variables);
 
-                       throw new NotSupportedException ();
+                       return GetStandAloneSignatureToken (signature);
                }
 
-               static bool IsVoid (TypeReference type)
+               public MetadataToken GetStandAloneSignature (CallSite call_site)
                {
-                       return type.FullName == Constants.Void;
+                       var signature = metadata.GetCallSiteBlobIndex (call_site);
+                       var token = GetStandAloneSignatureToken (signature);
+                       call_site.MetadataToken = token;
+                       return token;
+               }
+
+               MetadataToken GetStandAloneSignatureToken (uint signature)
+               {
+                       MetadataToken token;
+                       if (standalone_signatures.TryGetValue (signature, out token))
+                               return token;
+
+                       token = new MetadataToken (TokenType.Signature, metadata.AddStandAloneSignature (signature));
+                       standalone_signatures.Add (signature, token);
+                       return token;
+               }
+
+               RVA BeginMethod ()
+               {
+                       return current;
+               }
+
+               void WriteMetadataToken (MetadataToken token)
+               {
+                       WriteUInt32 (token.ToUInt32 ());
+               }
+
+               void Align (int align)
+               {
+                       align--;
+                       WriteBytes (((position + align) & ~align) - position);
+               }
+
+               void EndMethod ()
+               {
+                       current = (RVA) (code_base + position);
                }
        }
 }
+
+#endif
index 1b40c443bff01cf4eb1b6808de52c8da6bc2ed6c..e46d2c1d8241e456e039c0cd092c39ee73549b61 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil.Cil {
 
-       using System;
+       public enum DocumentType {
+               Other,
+               Text,
+       }
+
+       public enum DocumentHashAlgorithm {
+               None,
+               MD5,
+               SHA1,
+       }
+
+       public enum DocumentLanguage {
+               Other,
+               C,
+               Cpp,
+               CSharp,
+               Basic,
+               Java,
+               Cobol,
+               Pascal,
+               Cil,
+               JScript,
+               Smc,
+               MCpp,
+       }
+
+       public enum DocumentLanguageVendor {
+               Other,
+               Microsoft,
+       }
 
-       public class Document {
+       public sealed class Document {
 
-               string m_url;
+               string url;
 
-               Guid m_type;
-               DocumentHashAlgorithm m_hashAlgorithm;
-               Guid m_language;
-               Guid m_languageVendor;
+               byte type;
+               byte hash_algorithm;
+               byte language;
+               byte language_vendor;
 
-               byte [] m_hash;
+               byte [] hash;
 
                public string Url {
-                       get { return m_url; }
-                       set { m_url = value; }
+                       get { return url; }
+                       set { url = value; }
                }
 
-               public Guid Type {
-                       get { return m_type; }
-                       set { m_type = value; }
+               public DocumentType Type {
+                       get { return (DocumentType) type; }
+                       set { type = (byte) value; }
                }
 
                public DocumentHashAlgorithm HashAlgorithm {
-                       get { return m_hashAlgorithm; }
-                       set { m_hashAlgorithm = value; }
+                       get { return (DocumentHashAlgorithm) hash_algorithm; }
+                       set { hash_algorithm = (byte) value; }
                }
 
-               public Guid Language {
-                       get { return m_language; }
-                       set { m_language = value; }
+               public DocumentLanguage Language {
+                       get { return (DocumentLanguage) language; }
+                       set { language = (byte) value; }
                }
 
-               public Guid LanguageVendor {
-                       get { return m_languageVendor; }
-                       set { m_languageVendor = value; }
+               public DocumentLanguageVendor LanguageVendor {
+                       get { return (DocumentLanguageVendor) language_vendor; }
+                       set { language_vendor = (byte) value; }
                }
 
                public byte [] Hash {
-                       get { return m_hash; }
-                       set { m_hash = value; }
+                       get { return hash; }
+                       set { hash = value; }
                }
 
                public Document (string url)
                {
-                       m_url = url;
-                       m_hash = new byte [0];
+                       this.url = url;
+                       this.hash = Empty<byte>.Array;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
deleted file mode 100644 (file)
index cd5791f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// DocumentHashAlgorithm.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum DocumentHashAlgorithm {
-               [Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)] None,
-               [Guid (0x406ea660, 0x64cf, 0x4c82, 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99)] MD5,
-               [Guid (0xff1816ec, 0xaa5e, 0x4d10, 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60)] SHA1
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs
deleted file mode 100644 (file)
index cc7defc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// DocumentLanguage.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-
-       public abstract class DocumentLanguage {
-#if CF_2_0
-               public static readonly Guid None = new Guid ("00000000-0000-0000-0000-000000000000");
-               public static readonly Guid C = new Guid ("63a08714-fc37-11d2-904c-00c04fa302a1");
-               public static readonly Guid Cpp = new Guid ("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
-               public static readonly Guid CSharp = new Guid ("3f5162f8-07c6-11d3-9053-00c04fa302a1");
-               public static readonly Guid Basic = new Guid ("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
-               public static readonly Guid Java = new Guid ("3a12d0b4-c26c-11d0-b442-00a0244a1dd2");
-               public static readonly Guid Cobol = new Guid ("af046cd1-d0e1-11d2-977c-00a0c9b4d50c");
-               public static readonly Guid Pascal = new Guid ("af046cd2-d0e1-11d2-977c-00a0c9b4d50c");
-               public static readonly Guid CIL = new Guid ("af046cd3-d0e1-11d2-977c-00a0c9b4d50c");
-               public static readonly Guid JScript = new Guid ("3a12d0b6-c26c-11d0-b442-00a0244a1dd2");
-               public static readonly Guid SMC = new Guid ("0d9b9f7b-6611-11d3-bd2a-0000f80849bd");
-               public static readonly Guid MCpp = new Guid ("4b35fde8-07c6-11d3-9053-00c04fa302a1");
-#else
-               public static readonly Guid None = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00);
-               public static readonly Guid C = new Guid (0x63a08714, 0xfc37, 0x11d2, 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-               public static readonly Guid Cpp = new Guid (0x3a12d0b7, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-               public static readonly Guid CSharp = new Guid (0x3f5162f8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-               public static readonly Guid Basic = new Guid (0x3a12d0b8, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-               public static readonly Guid Java = new Guid (0x3a12d0b4, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-               public static readonly Guid Cobol = new Guid (0xaf046cd1, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-               public static readonly Guid Pascal = new Guid (0xaf046cd2, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-               public static readonly Guid CIL = new Guid (0xaf046cd3, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-               public static readonly Guid JScript = new Guid (0x3a12d0b6, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-               public static readonly Guid SMC = new Guid (0xd9b9f7b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
-               public static readonly Guid MCpp = new Guid (0x4b35fde8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-#endif
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs
deleted file mode 100644 (file)
index d070abb..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// DocumentLanguageVendor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-
-       public abstract class DocumentLanguageVendor {
-#if CF_2_0
-               public static readonly Guid Other = new Guid ("00000000-0000-0000-0000-000000000000");
-               public static readonly Guid Microsoft = new Guid ("994b45c4-e6e9-11d2-903f-00c04fa302a1");
-#else
-               public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-               public static readonly Guid Microsoft = new Guid (0x994b45c4, 0xe6e9, 0x11d2, 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-#endif
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs
deleted file mode 100644 (file)
index 9df7764..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// DocumentType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-
-       public abstract class DocumentType {
-
-               public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-               public static readonly Guid Text = new Guid (0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x00, 0x00, 0xf8, 0x08, 0x49, 0xbd);
-       }
-}
index d1ee7bf66e6b6420c998da59c49d5713fe06ea00..a76f8f397b206d1e7e61f0e317dd78e37d2388bf 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Cil {
 
-       using Mono.Cecil;
+       public enum ExceptionHandlerType {
+               Catch = 0,
+               Filter = 1,
+               Finally = 2,
+               Fault = 4,
+       }
 
-       public sealed class ExceptionHandler : ICodeVisitable {
+       public sealed class ExceptionHandler {
 
-               Instruction m_tryStart;
-               Instruction m_tryEnd;
-               Instruction m_filterStart;
-               Instruction m_filterEnd;
-               Instruction m_handlerStart;
-               Instruction m_handlerEnd;
+               Instruction try_start;
+               Instruction try_end;
+               Instruction filter_start;
+               Instruction filter_end;
+               Instruction handler_start;
+               Instruction handler_end;
 
-               TypeReference m_catchType;
-               ExceptionHandlerType m_type;
+               TypeReference catch_type;
+               ExceptionHandlerType handler_type;
 
                public Instruction TryStart {
-                       get { return m_tryStart; }
-                       set { m_tryStart = value; }
+                       get { return try_start; }
+                       set { try_start = value; }
                }
 
                public Instruction TryEnd {
-                       get { return m_tryEnd; }
-                       set { m_tryEnd = value; }
+                       get { return try_end; }
+                       set { try_end = value; }
                }
 
                public Instruction FilterStart {
-                       get { return m_filterStart; }
-                       set { m_filterStart = value; }
+                       get { return filter_start; }
+                       set { filter_start = value; }
                }
 
                public Instruction FilterEnd {
-                       get { return m_filterEnd; }
-                       set { m_filterEnd = value; }
+                       get { return filter_end; }
+                       set { filter_end = value; }
                }
 
                public Instruction HandlerStart {
-                       get { return m_handlerStart; }
-                       set { m_handlerStart = value; }
+                       get { return handler_start; }
+                       set { handler_start = value; }
                }
 
                public Instruction HandlerEnd {
-                       get { return m_handlerEnd; }
-                       set { m_handlerEnd = value; }
+                       get { return handler_end; }
+                       set { handler_end = value; }
                }
 
                public TypeReference CatchType {
-                       get { return m_catchType; }
-                       set { m_catchType = value; }
-               }
-
-               public ExceptionHandlerType Type {
-                       get { return m_type; }
-                       set { m_type = value; }
+                       get { return catch_type; }
+                       set { catch_type = value; }
                }
 
-               public ExceptionHandler (ExceptionHandlerType type)
-               {
-                       m_type = type;
+               public ExceptionHandlerType HandlerType {
+                       get { return handler_type; }
+                       set { handler_type = value; }
                }
 
-               public void Accept (ICodeVisitor visitor)
+               public ExceptionHandler (ExceptionHandlerType handlerType)
                {
-                       visitor.VisitExceptionHandler (this);
+                       this.handler_type = handlerType;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
deleted file mode 100644 (file)
index dd2b11a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ExceptionHandlerCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ExceptionHandlerCollection : CollectionBase, ICodeVisitable {
-
-               MethodBody m_container;
-
-               public ExceptionHandler this [int index] {
-                       get { return List [index] as ExceptionHandler; }
-                       set { List [index] = value; }
-               }
-
-               public MethodBody Container {
-                       get { return m_container; }
-               }
-
-               public ExceptionHandlerCollection (MethodBody container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (ExceptionHandler value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (ExceptionHandler value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (ExceptionHandler value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, ExceptionHandler value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (ExceptionHandler value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is ExceptionHandler))
-                               throw new ArgumentException ("Must be of type " + typeof (ExceptionHandler).FullName);
-               }
-
-               public void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitExceptionHandlerCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs
deleted file mode 100644 (file)
index 28b8b7c..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ExceptionHandlerType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum ExceptionHandlerType {
-               Catch = 0x0000,
-               Filter = 0x0001,
-               Finally = 0x0002,
-               Fault = 0x0004
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs
deleted file mode 100644 (file)
index e08104d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// FlowControl.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum FlowControl {
-               Branch,
-               Break,
-               Call,
-               Cond_Branch,
-               Meta,
-               Next,
-               Phi,
-               Return,
-               Throw
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs
deleted file mode 100644 (file)
index 7755dee..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// GuidAttribute.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using System.Reflection;
-
-       [AttributeUsage (AttributeTargets.Field)]
-       public sealed class GuidAttribute : Attribute {
-
-               private Guid m_guid;
-
-               public Guid Guid {
-                       get { return m_guid; }
-               }
-
-               GuidAttribute ()
-               {
-                       m_guid = new Guid ();
-               }
-
-               public GuidAttribute (
-                       uint a,
-                       ushort b,
-                       ushort c,
-                       byte d,
-                       byte e,
-                       byte f,
-                       byte g,
-                       byte h,
-                       byte i,
-                       byte j,
-                       byte k)
-               {
-                       m_guid = new Guid ((int) a, (short) b, (short) c, d, e, f, g, h, i, j, k);
-               }
-
-               public static int GetValueFromGuid (Guid id, Type enumeration)
-               {
-                       foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
-                               if (id == GetGuidAttribute (fi).Guid)
-                                       return (int) fi.GetValue (null);
-
-                       return -1;
-               }
-
-               public static Guid GetGuidFromValue (int value, Type enumeration)
-               {
-                       foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
-                               if (value == (int) fi.GetValue (null))
-                                       return GetGuidAttribute (fi).Guid;
-
-                       return new Guid ();
-               }
-
-               static GuidAttribute GetGuidAttribute (FieldInfo fi)
-               {
-                       GuidAttribute [] attributes = fi.GetCustomAttributes (typeof (GuidAttribute), false) as GuidAttribute [];
-                       if (attributes == null || attributes.Length != 1)
-                               return new GuidAttribute ();
-
-                       return attributes [0];
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs
deleted file mode 100644 (file)
index 91571d8..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// ICodeVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public interface ICodeVisitable {
-               void Accept (ICodeVisitor visitor);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs
deleted file mode 100644 (file)
index c02335e..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ICodeVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public interface ICodeVisitor {
-
-               void VisitMethodBody (MethodBody body);
-               void VisitInstructionCollection (InstructionCollection instructions);
-               void VisitInstruction (Instruction instr);
-               void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh);
-               void VisitExceptionHandler (ExceptionHandler eh);
-               void VisitVariableDefinitionCollection (VariableDefinitionCollection variables);
-               void VisitVariableDefinition (VariableDefinition var);
-               void VisitScopeCollection (ScopeCollection scopes);
-               void VisitScope (Scope scope);
-
-               void TerminateMethodBody (MethodBody body);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs
new file mode 100644 (file)
index 0000000..1300b3e
--- /dev/null
@@ -0,0 +1,278 @@
+//
+// ILProcessor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil.Cil {
+
+       public sealed class ILProcessor {
+
+               readonly MethodBody body;
+               readonly Collection<Instruction> instructions;
+
+               public MethodBody Body {
+                       get { return body; }
+               }
+
+               internal ILProcessor (MethodBody body)
+               {
+                       this.body = body;
+                       this.instructions = body.Instructions;
+               }
+
+               public Instruction Create (OpCode opcode)
+               {
+                       return Instruction.Create (opcode);
+               }
+
+               public Instruction Create (OpCode opcode, TypeReference type)
+               {
+                       return Instruction.Create (opcode, type);
+               }
+
+               public Instruction Create (OpCode opcode, CallSite site)
+               {
+                       return Instruction.Create (opcode, site);
+               }
+
+               public Instruction Create (OpCode opcode, MethodReference method)
+               {
+                       return Instruction.Create (opcode, method);
+               }
+
+               public Instruction Create (OpCode opcode, FieldReference field)
+               {
+                       return Instruction.Create (opcode, field);
+               }
+
+               public Instruction Create (OpCode opcode, string value)
+               {
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, sbyte value)
+               {
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, byte value)
+               {
+                       if (opcode.OperandType == OperandType.ShortInlineVar)
+                               return Instruction.Create (opcode, body.Variables [value]);
+
+                       if (opcode.OperandType == OperandType.ShortInlineArg)
+                               return Instruction.Create (opcode, body.GetParameter (value));
+
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, int value)
+               {
+                       if (opcode.OperandType == OperandType.InlineVar)
+                               return Instruction.Create (opcode, body.Variables [value]);
+
+                       if (opcode.OperandType == OperandType.InlineArg)
+                               return Instruction.Create (opcode, body.GetParameter (value));
+
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, long value)
+               {
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, float value)
+               {
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, double value)
+               {
+                       return Instruction.Create (opcode, value);
+               }
+
+               public Instruction Create (OpCode opcode, Instruction target)
+               {
+                       return Instruction.Create (opcode, target);
+               }
+
+               public Instruction Create (OpCode opcode, Instruction [] targets)
+               {
+                       return Instruction.Create (opcode, targets);
+               }
+
+               public Instruction Create (OpCode opcode, VariableDefinition variable)
+               {
+                       return Instruction.Create (opcode, variable);
+               }
+
+               public Instruction Create (OpCode opcode, ParameterDefinition parameter)
+               {
+                       return Instruction.Create (opcode, parameter);
+               }
+
+               public void Emit (OpCode opcode)
+               {
+                       Append (Create (opcode));
+               }
+
+               public void Emit (OpCode opcode, TypeReference type)
+               {
+                       Append (Create (opcode, type));
+               }
+
+               public void Emit (OpCode opcode, MethodReference method)
+               {
+                       Append (Create (opcode, method));
+               }
+
+               public void Emit (OpCode opcode, CallSite site)
+               {
+                       Append (Create (opcode, site));
+               }
+
+               public void Emit (OpCode opcode, FieldReference field)
+               {
+                       Append (Create (opcode, field));
+               }
+
+               public void Emit (OpCode opcode, string value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, byte value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, sbyte value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, int value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, long value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, float value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, double value)
+               {
+                       Append (Create (opcode, value));
+               }
+
+               public void Emit (OpCode opcode, Instruction target)
+               {
+                       Append (Create (opcode, target));
+               }
+
+               public void Emit (OpCode opcode, Instruction [] targets)
+               {
+                       Append (Create (opcode, targets));
+               }
+
+               public void Emit (OpCode opcode, VariableDefinition variable)
+               {
+                       Append (Create (opcode, variable));
+               }
+
+               public void Emit (OpCode opcode, ParameterDefinition parameter)
+               {
+                       Append (Create (opcode, parameter));
+               }
+
+               public void InsertBefore (Instruction target, Instruction instruction)
+               {
+                       if (target == null)
+                               throw new ArgumentNullException ("target");
+                       if (instruction == null)
+                               throw new ArgumentNullException ("instruction");
+
+                       var index = instructions.IndexOf (target);
+                       if (index == -1)
+                               throw new ArgumentOutOfRangeException ("target");
+
+                       instructions.Insert (index, instruction);
+               }
+
+               public void InsertAfter (Instruction target, Instruction instruction)
+               {
+                       if (target == null)
+                               throw new ArgumentNullException ("target");
+                       if (instruction == null)
+                               throw new ArgumentNullException ("instruction");
+
+                       var index = instructions.IndexOf (target);
+                       if (index == -1)
+                               throw new ArgumentOutOfRangeException ("target");
+
+                       instructions.Insert (index + 1, instruction);
+               }
+
+               public void Append (Instruction instruction)
+               {
+                       if (instruction == null)
+                               throw new ArgumentNullException ("instruction");
+
+                       instructions.Add (instruction);
+               }
+
+               public void Replace (Instruction target, Instruction instruction)
+               {
+                       if (target == null)
+                               throw new ArgumentNullException ("target");
+                       if (instruction == null)
+                               throw new ArgumentNullException ("instruction");
+
+                       InsertAfter (target, instruction);
+                       Remove (target);
+               }
+
+               public void Remove (Instruction instruction)
+               {
+                       if (instruction == null)
+                               throw new ArgumentNullException ("instruction");
+
+                       if (!instructions.Remove (instruction))
+                               throw new ArgumentOutOfRangeException ("instruction");
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs
deleted file mode 100644 (file)
index f7db241..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Document.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public interface IScopeProvider {
-
-               ScopeCollection Scopes { get; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs
deleted file mode 100644 (file)
index 646e62e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// ISymbolReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Mono.Cecil.Cil {
-
-       public interface ISymbolReader : IDisposable {
-
-               void Read (MethodBody body, IDictionary instructions);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs
deleted file mode 100644 (file)
index 945c7a0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// ISymbolStoreFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public interface ISymbolStoreFactory {
-
-               ISymbolReader CreateReader (ModuleDefinition module, string assemblyFileName);
-               ISymbolWriter CreateWriter (ModuleDefinition module, string assemblyFileName);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs
deleted file mode 100644 (file)
index 3e28bf0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ISymbolWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-
-       public interface ISymbolWriter : IDisposable {
-
-               void Write (MethodBody body);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
deleted file mode 100644 (file)
index 9f64797..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IVariableDefinitionProvider.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public interface IVariableDefinitionProvider {
-
-               VariableDefinitionCollection Variables { get; }
-       }
-}
index 7e9a5defddfc5dad0b5666b77aa581bdd4ea170f..e8d36c4b38493a9752673ff8b5754354d7617441 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
 namespace Mono.Cecil.Cil {
 
-       public sealed class Instruction : ICodeVisitable {
+       public sealed class Instruction {
 
-               int m_offset;
-               OpCode m_opCode;
-               object m_operand;
+               internal int offset;
+               internal OpCode opcode;
+               internal object operand;
 
-               Instruction m_previous;
-               Instruction m_next;
+               internal Instruction previous;
+               internal Instruction next;
 
-               SequencePoint m_sequencePoint;
+               SequencePoint sequence_point;
 
                public int Offset {
-                       get { return m_offset; }
-                       set { m_offset = value; }
+                       get { return offset; }
+                       set { offset = value; }
                }
 
                public OpCode OpCode {
-                       get { return m_opCode; }
-                       set { m_opCode = value; }
+                       get { return opcode; }
+                       set { opcode = value; }
                }
 
                public object Operand {
-                       get { return m_operand; }
-                       set { m_operand = value; }
+                       get { return operand; }
+                       set { operand = value; }
                }
 
                public Instruction Previous {
-                       get { return m_previous; }
-                       set { m_previous = value; }
+                       get { return previous; }
+                       set { previous = value; }
                }
 
                public Instruction Next {
-                       get { return m_next; }
-                       set { m_next = value; }
+                       get { return next; }
+                       set { next = value; }
                }
 
                public SequencePoint SequencePoint {
-                       get { return m_sequencePoint; }
-                       set { m_sequencePoint = value; }
-               }
-
-               internal Instruction (int offset, OpCode opCode, object operand) : this (offset, opCode)
-               {
-                       m_operand = operand;
+                       get { return sequence_point; }
+                       set { sequence_point = value; }
                }
 
                internal Instruction (int offset, OpCode opCode)
                {
-                       m_offset = offset;
-                       m_opCode = opCode;
-               }
-
-               internal Instruction (OpCode opCode, object operand) : this (0, opCode, operand)
-               {
+                       this.offset = offset;
+                       this.opcode = opCode;
                }
 
-               internal Instruction (OpCode opCode) : this (0, opCode)
+               internal Instruction (OpCode opcode, object operand)
                {
+                       this.opcode = opcode;
+                       this.operand = operand;
                }
 
                public int GetSize ()
                {
-                       int size = m_opCode.Size;
+                       int size = opcode.Size;
 
-                       switch (m_opCode.OperandType) {
+                       switch (opcode.OperandType) {
                        case OperandType.InlineSwitch:
-                               size += (1 + ((Instruction []) m_operand).Length) * 4;
-                               break;
+                               return size + (1 + ((Instruction []) operand).Length) * 4;
                        case OperandType.InlineI8:
                        case OperandType.InlineR:
-                               size += 8;
-                               break;
+                               return size + 8;
                        case OperandType.InlineBrTarget:
                        case OperandType.InlineField:
                        case OperandType.InlineI:
@@ -108,26 +102,220 @@ namespace Mono.Cecil.Cil {
                        case OperandType.InlineTok:
                        case OperandType.InlineType:
                        case OperandType.ShortInlineR:
-                               size += 4;
-                               break;
-                       case OperandType.InlineParam:
+                       case OperandType.InlineSig:
+                               return size + 4;
+                       case OperandType.InlineArg:
                        case OperandType.InlineVar:
-                               size += 2;
-                               break;
+                               return size + 2;
                        case OperandType.ShortInlineBrTarget:
                        case OperandType.ShortInlineI:
-                       case OperandType.ShortInlineParam:
+                       case OperandType.ShortInlineArg:
                        case OperandType.ShortInlineVar:
-                               size += 1;
+                               return size + 1;
+                       default:
+                               return size;
+                       }
+               }
+
+               public override string ToString ()
+               {
+                       var instruction = new StringBuilder ();
+
+                       AppendLabel (instruction, this);
+                       instruction.Append (':');
+                       instruction.Append (' ');
+                       instruction.Append (opcode.Name);
+
+                       if (operand == null)
+                               return instruction.ToString ();
+
+                       instruction.Append (' ');
+
+                       switch (opcode.OperandType) {
+                       case OperandType.ShortInlineBrTarget:
+                       case OperandType.InlineBrTarget:
+                               AppendLabel (instruction, (Instruction) operand);
+                               break;
+                       case OperandType.InlineSwitch:
+                               var labels = (Instruction []) operand;
+                               for (int i = 0; i < labels.Length; i++) {
+                                       if (i > 0)
+                                               instruction.Append (',');
+
+                                       AppendLabel (instruction, labels [i]);
+                               }
+                               break;
+                       case OperandType.InlineString:
+                               instruction.Append ('\"');
+                               instruction.Append (operand);
+                               instruction.Append ('\"');
+                               break;
+                       default:
+                               instruction.Append (operand);
                                break;
                        }
 
-                       return size;
+                       return instruction.ToString ();
+               }
+
+               static void AppendLabel (StringBuilder builder, Instruction instruction)
+               {
+                       builder.Append ("IL_");
+                       builder.Append (instruction.offset.ToString ("x4"));
+               }
+
+               public static Instruction Create (OpCode opcode)
+               {
+                       if (opcode.OperandType != OperandType.InlineNone)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, null);
+               }
+
+               public static Instruction Create (OpCode opcode, TypeReference type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       if (opcode.OperandType != OperandType.InlineType &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, type);
+               }
+
+               public static Instruction Create (OpCode opcode, CallSite site)
+               {
+                       if (site == null)
+                               throw new ArgumentNullException ("site");
+                       if (opcode.Code != Code.Calli)
+                               throw new ArgumentException ("code");
+
+                       return new Instruction (opcode, site);
+               }
+
+               public static Instruction Create (OpCode opcode, MethodReference method)
+               {
+                       if (method == null)
+                               throw new ArgumentNullException ("method");
+                       if (opcode.OperandType != OperandType.InlineMethod &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, method);
                }
 
-               public void Accept (ICodeVisitor visitor)
+               public static Instruction Create (OpCode opcode, FieldReference field)
                {
-                       visitor.VisitInstruction (this);
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       if (opcode.OperandType != OperandType.InlineField &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, field);
+               }
+
+               public static Instruction Create (OpCode opcode, string value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+                       if (opcode.OperandType != OperandType.InlineString)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, sbyte value)
+               {
+                       if (opcode.OperandType != OperandType.ShortInlineI &&
+                               opcode != OpCodes.Ldc_I4_S)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, byte value)
+               {
+                       if (opcode.OperandType != OperandType.ShortInlineI ||
+                               opcode == OpCodes.Ldc_I4_S)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, int value)
+               {
+                       if (opcode.OperandType != OperandType.InlineI)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, long value)
+               {
+                       if (opcode.OperandType != OperandType.InlineI8)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, float value)
+               {
+                       if (opcode.OperandType != OperandType.ShortInlineR)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, double value)
+               {
+                       if (opcode.OperandType != OperandType.InlineR)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, value);
+               }
+
+               public static Instruction Create (OpCode opcode, Instruction target)
+               {
+                       if (target == null)
+                               throw new ArgumentNullException ("target");
+                       if (opcode.OperandType != OperandType.InlineBrTarget &&
+                               opcode.OperandType != OperandType.ShortInlineBrTarget)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, target);
+               }
+
+               public static Instruction Create (OpCode opcode, Instruction [] targets)
+               {
+                       if (targets == null)
+                               throw new ArgumentNullException ("targets");
+                       if (opcode.OperandType != OperandType.InlineSwitch)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, targets);
+               }
+
+               public static Instruction Create (OpCode opcode, VariableDefinition variable)
+               {
+                       if (variable == null)
+                               throw new ArgumentNullException ("variable");
+                       if (opcode.OperandType != OperandType.ShortInlineVar &&
+                               opcode.OperandType != OperandType.InlineVar)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, variable);
+               }
+
+               public static Instruction Create (OpCode opcode, ParameterDefinition parameter)
+               {
+                       if (parameter == null)
+                               throw new ArgumentNullException ("parameter");
+                       if (opcode.OperandType != OperandType.ShortInlineArg &&
+                               opcode.OperandType != OperandType.InlineArg)
+                               throw new ArgumentException ("opcode");
+
+                       return new Instruction (opcode, parameter);
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs
deleted file mode 100644 (file)
index 190750b..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// InstructionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Sep 28 17:54:43 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class InstructionCollection : CollectionBase, ICodeVisitable {
-
-               MethodBody m_container;
-               public readonly Instruction Outside = new Instruction (int.MaxValue, OpCodes.Nop);
-
-               public Instruction this [int index] {
-                       get { return List [index] as Instruction; }
-                       set { List [index] = value; }
-               }
-
-               public MethodBody Container {
-                       get { return m_container; }
-               }
-
-               public InstructionCollection (MethodBody container)
-               {
-                       m_container = container;
-               }
-
-               internal void Add (Instruction value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (Instruction value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (Instruction value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               internal void Insert (int index, Instruction value)
-               {
-                       List.Insert (index, value);
-               }
-
-               internal void Remove (Instruction value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is Instruction))
-                               throw new ArgumentException ("Must be of type " + typeof (Instruction).FullName);
-               }
-
-               public void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitInstructionCollection (this);
-               }
-       }
-}
index 70a7049a8ef8373f6d4301795862aa61d24c431f..b57900e5ac4935dd01e5e7dfcea85a0712c51ab1 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Cil {
+using System;
+
+using Mono.Collections.Generic;
 
-       using Mono.Cecil;
+namespace Mono.Cecil.Cil {
 
-       public sealed class MethodBody : IVariableDefinitionProvider, IScopeProvider, ICodeVisitable {
+       public sealed class MethodBody : IVariableDefinitionProvider {
 
-               MethodDefinition m_method;
-               int m_maxStack;
-               int m_codeSize;
-               bool m_initLocals;
-               int m_localVarToken;
+               readonly internal MethodDefinition method;
 
-               InstructionCollection m_instructions;
-               ExceptionHandlerCollection m_exceptions;
-               VariableDefinitionCollection m_variables;
-               ScopeCollection m_scopes;
+               internal ParameterDefinition this_parameter;
+               internal int max_stack_size;
+               internal int code_size;
+               internal bool init_locals;
+               internal MetadataToken local_var_token;
 
-               private CilWorker m_cilWorker;
+               internal Collection<Instruction> instructions;
+               internal Collection<ExceptionHandler> exceptions;
+               internal Collection<VariableDefinition> variables;
+               Scope scope;
 
                public MethodDefinition Method {
-                       get { return m_method; }
+                       get { return method; }
                }
 
-               public int MaxStack {
-                       get { return m_maxStack; }
-                       set { m_maxStack = value; }
+               public int MaxStackSize {
+                       get { return max_stack_size; }
+                       set { max_stack_size = value; }
                }
 
                public int CodeSize {
-                       get { return m_codeSize; }
-                       set { m_codeSize = value; }
+                       get { return code_size; }
                }
 
                public bool InitLocals {
-                       get { return m_initLocals; }
-                       set { m_initLocals = value; }
+                       get { return init_locals; }
+                       set { init_locals = value; }
                }
 
-               public int LocalVarToken {
-                       get { return m_localVarToken; }
-                       set { m_localVarToken = value; }
+               public MetadataToken LocalVarToken {
+                       get { return local_var_token; }
+                       set { local_var_token = value; }
                }
 
-               public CilWorker CilWorker {
-                       get {
-                               if (m_cilWorker == null)
-                                       m_cilWorker = new CilWorker (this);
-                               return m_cilWorker;
-                       }
-                       set { m_cilWorker = value; }
-               }
-
-               public InstructionCollection Instructions {
-                       get { return m_instructions; }
+               public Collection<Instruction> Instructions {
+                       get { return instructions ?? (instructions = new InstructionCollection ()); }
                }
 
                public bool HasExceptionHandlers {
-                       get { return m_exceptions != null && m_exceptions.Count > 0; }
+                       get { return !exceptions.IsNullOrEmpty (); }
                }
 
-               public ExceptionHandlerCollection ExceptionHandlers {
-                       get {
-                               if (m_exceptions == null)
-                                       m_exceptions = new ExceptionHandlerCollection (this);
-                               return m_exceptions;
-                       }
+               public Collection<ExceptionHandler> ExceptionHandlers {
+                       get { return exceptions ?? (exceptions = new Collection<ExceptionHandler> ()); }
                }
 
                public bool HasVariables {
-                       get { return m_variables != null && m_variables.Count > 0; }
+                       get { return !variables.IsNullOrEmpty (); }
                }
 
-               public VariableDefinitionCollection Variables {
-                       get {
-                               if (m_variables == null)
-                                       m_variables = new VariableDefinitionCollection (this);
-                               return m_variables;
-                       }
+               public Collection<VariableDefinition> Variables {
+                       get { return variables ?? (variables = new VariableDefinitionCollection ()); }
                }
 
-               public bool HasScopes {
-                       get { return m_scopes != null && m_scopes.Count > 0; }
+               public Scope Scope {
+                       get { return scope; }
+                       set { scope = value; }
                }
 
-               public ScopeCollection Scopes {
+               public ParameterDefinition ThisParameter {
                        get {
-                               if (m_scopes == null)
-                                       m_scopes = new ScopeCollection (this);
-                               return m_scopes;
+                               if (method == null || method.DeclaringType == null)
+                                       throw new NotSupportedException ();
+
+                               return this_parameter ?? (this_parameter = new ParameterDefinition ("0", ParameterAttributes.None, method.DeclaringType));
                        }
                }
 
-               public MethodBody (MethodDefinition meth)
+               public MethodBody (MethodDefinition method)
                {
-                       m_method = meth;
-                       // there is always a RET instruction (if a body is present)
-                       m_instructions = new InstructionCollection (this);
+                       this.method = method;
                }
 
-               internal static Instruction GetInstruction (MethodBody oldBody, MethodBody newBody, Instruction i)
+               public ILProcessor GetILProcessor ()
                {
-                       int pos = oldBody.Instructions.IndexOf (i);
-                       if (pos > -1 && pos < newBody.Instructions.Count)
-                               return newBody.Instructions [pos];
-
-                       return newBody.Instructions.Outside;
+                       return new ILProcessor (this);
                }
+       }
 
-               internal static MethodBody Clone (MethodBody body, MethodDefinition parent, ImportContext context)
-               {
-                       MethodBody nb = new MethodBody (parent);
-                       nb.MaxStack = body.MaxStack;
-                       nb.InitLocals = body.InitLocals;
-                       nb.CodeSize = body.CodeSize;
-
-                       CilWorker worker = nb.CilWorker;
-
-                       if (body.HasVariables) {
-                               foreach (VariableDefinition var in body.Variables)
-                                       nb.Variables.Add (new VariableDefinition (
-                                               var.Name, var.Index, parent,
-                                               context.Import (var.VariableType)));
-                       }
-
-                       foreach (Instruction instr in body.Instructions) {
-                               Instruction ni = new Instruction (instr.OpCode);
-
-                               switch (instr.OpCode.OperandType) {
-                               case OperandType.InlineParam :
-                               case OperandType.ShortInlineParam :
-                                       if (instr.Operand == body.Method.This)
-                                               ni.Operand = nb.Method.This;
-                                       else {
-                                               int param = body.Method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-                                               ni.Operand = parent.Parameters [param];
-                                       }
-                                       break;
-                               case OperandType.InlineVar :
-                               case OperandType.ShortInlineVar :
-                                       int var = body.Variables.IndexOf ((VariableDefinition) instr.Operand);
-                                       ni.Operand = nb.Variables [var];
-                                       break;
-                               case OperandType.InlineField :
-                                       ni.Operand = context.Import ((FieldReference) instr.Operand);
-                                       break;
-                               case OperandType.InlineMethod :
-                                       ni.Operand = context.Import ((MethodReference) instr.Operand);
-                                       break;
-                               case OperandType.InlineType :
-                                       ni.Operand = context.Import ((TypeReference) instr.Operand);
-                                       break;
-                               case OperandType.InlineTok :
-                                       if (instr.Operand is TypeReference)
-                                               ni.Operand = context.Import ((TypeReference) instr.Operand);
-                                       else if (instr.Operand is FieldReference)
-                                               ni.Operand = context.Import ((FieldReference) instr.Operand);
-                                       else if (instr.Operand is MethodReference)
-                                               ni.Operand = context.Import ((MethodReference) instr.Operand);
-                                       break;
-                               case OperandType.ShortInlineBrTarget :
-                               case OperandType.InlineBrTarget :
-                               case OperandType.InlineSwitch :
-                                       break;
-                               default :
-                                       ni.Operand = instr.Operand;
-                                       break;
-                               }
-
-                               worker.Append (ni);
-                       }
+       public interface IVariableDefinitionProvider {
+               bool HasVariables { get; }
+               Collection<VariableDefinition> Variables { get; }
+       }
 
-                       for (int i = 0; i < body.Instructions.Count; i++) {
-                               Instruction instr = nb.Instructions [i];
-                               Instruction oldi = body.Instructions [i];
+       class VariableDefinitionCollection : Collection<VariableDefinition> {
 
-                               if (instr.OpCode.OperandType == OperandType.InlineSwitch) {
-                                       Instruction [] olds = (Instruction []) oldi.Operand;
-                                       Instruction [] targets = new Instruction [olds.Length];
+               internal VariableDefinitionCollection ()
+               {
+               }
 
-                                       for (int j = 0; j < targets.Length; j++)
-                                               targets [j] = GetInstruction (body, nb, olds [j]);
+               internal VariableDefinitionCollection (int capacity)
+                       : base (capacity)
+               {
+               }
 
-                                       instr.Operand = targets;
-                               } else if (instr.OpCode.OperandType == OperandType.ShortInlineBrTarget || instr.OpCode.OperandType == OperandType.InlineBrTarget)
-                                       instr.Operand = GetInstruction (body, nb, (Instruction) oldi.Operand);
-                       }
+               protected override void OnAdd (VariableDefinition item, int index)
+               {
+                       item.index = index;
+               }
 
-                       if (!body.HasExceptionHandlers)
-                               return nb;
-
-                       foreach (ExceptionHandler eh in body.ExceptionHandlers) {
-                               ExceptionHandler neh = new ExceptionHandler (eh.Type);
-                               neh.TryStart = GetInstruction (body, nb, eh.TryStart);
-                               neh.TryEnd = GetInstruction (body, nb, eh.TryEnd);
-                               neh.HandlerStart = GetInstruction (body, nb, eh.HandlerStart);
-                               neh.HandlerEnd = GetInstruction (body, nb, eh.HandlerEnd);
-
-                               switch (eh.Type) {
-                               case ExceptionHandlerType.Catch :
-                                       neh.CatchType = context.Import (eh.CatchType);
-                                       break;
-                               case ExceptionHandlerType.Filter :
-                                       neh.FilterStart = GetInstruction (body, nb, eh.FilterStart);
-                                       neh.FilterEnd = GetInstruction (body, nb, eh.FilterEnd);
-                                       break;
-                               }
-
-                               nb.ExceptionHandlers.Add (neh);
-                       }
+               protected override void OnInsert (VariableDefinition item, int index)
+               {
+                       item.index = index;
 
-                       return nb;
+                       for (int i = index; i < size; i++)
+                               items [i].index = i + 1;
                }
 
-               public void Simplify ()
+               protected override void OnSet (VariableDefinition item, int index)
                {
-                       foreach (Instruction i in this.Instructions) {
-                               if (i.OpCode.OpCodeType != OpCodeType.Macro)
-                                       continue;
-
-                               switch (i.OpCode.Code) {
-                               case Code.Ldarg_0 :
-                                       Modify (i, OpCodes.Ldarg,
-                                               CodeReader.GetParameter (this, 0));
-                                       break;
-                               case Code.Ldarg_1 :
-                                       Modify (i, OpCodes.Ldarg,
-                                               CodeReader.GetParameter (this, 1));
-                                       break;
-                               case Code.Ldarg_2 :
-                                       Modify (i, OpCodes.Ldarg,
-                                               CodeReader.GetParameter (this, 2));
-                                       break;
-                               case Code.Ldarg_3 :
-                                       Modify (i, OpCodes.Ldarg,
-                                               CodeReader.GetParameter (this, 3));
-                                       break;
-                               case Code.Ldloc_0 :
-                                       Modify (i, OpCodes.Ldloc,
-                                               CodeReader.GetVariable (this, 0));
-                                       break;
-                               case Code.Ldloc_1 :
-                                       Modify (i, OpCodes.Ldloc,
-                                               CodeReader.GetVariable (this, 1));
-                                       break;
-                               case Code.Ldloc_2 :
-                                       Modify (i, OpCodes.Ldloc,
-                                               CodeReader.GetVariable (this, 2));
-                                       break;
-                               case Code.Ldloc_3 :
-                                       Modify (i, OpCodes.Ldloc,
-                                               CodeReader.GetVariable (this, 3));
-                                       break;
-                               case Code.Stloc_0 :
-                                       Modify (i, OpCodes.Stloc,
-                                               CodeReader.GetVariable (this, 0));
-                                       break;
-                               case Code.Stloc_1 :
-                                       Modify (i, OpCodes.Stloc,
-                                               CodeReader.GetVariable (this, 1));
-                                       break;
-                               case Code.Stloc_2 :
-                                       Modify (i, OpCodes.Stloc,
-                                               CodeReader.GetVariable (this, 2));
-                                       break;
-                               case Code.Stloc_3 :
-                                       Modify (i, OpCodes.Stloc,
-                                               CodeReader.GetVariable (this, 3));
-                                       break;
-                               case Code.Ldarg_S :
-                                       i.OpCode = OpCodes.Ldarg;
-                                       break;
-                               case Code.Ldarga_S :
-                                       i.OpCode = OpCodes.Ldarga;
-                                       break;
-                               case Code.Starg_S :
-                                       i.OpCode = OpCodes.Starg;
-                                       break;
-                               case Code.Ldloc_S :
-                                       i.OpCode = OpCodes.Ldloc;
-                                       break;
-                               case Code.Ldloca_S :
-                                       i.OpCode = OpCodes.Ldloca;
-                                       break;
-                               case Code.Stloc_S :
-                                       i.OpCode = OpCodes.Stloc;
-                                       break;
-                               case Code.Ldc_I4_M1 :
-                                       Modify (i, OpCodes.Ldc_I4, -1);
-                                       break;
-                               case Code.Ldc_I4_0 :
-                                       Modify (i, OpCodes.Ldc_I4, 0);
-                                       break;
-                               case Code.Ldc_I4_1 :
-                                       Modify (i, OpCodes.Ldc_I4, 1);
-                                       break;
-                               case Code.Ldc_I4_2 :
-                                       Modify (i, OpCodes.Ldc_I4, 2);
-                                       break;
-                               case Code.Ldc_I4_3 :
-                                       Modify (i, OpCodes.Ldc_I4, 3);
-                                       break;
-                               case Code.Ldc_I4_4 :
-                                       Modify (i, OpCodes.Ldc_I4, 4);
-                                       break;
-                               case Code.Ldc_I4_5 :
-                                       Modify (i, OpCodes.Ldc_I4, 5);
-                                       break;
-                               case Code.Ldc_I4_6 :
-                                       Modify (i, OpCodes.Ldc_I4, 6);
-                                       break;
-                               case Code.Ldc_I4_7 :
-                                       Modify (i, OpCodes.Ldc_I4, 7);
-                                       break;
-                               case Code.Ldc_I4_8 :
-                                       Modify (i, OpCodes.Ldc_I4, 8);
-                                       break;
-                               case Code.Ldc_I4_S :
-                                       i.OpCode = OpCodes.Ldc_I4;
-                                       i.Operand = (int) (sbyte) i.Operand;
-                                       break;
-                               case Code.Br_S :
-                                       i.OpCode = OpCodes.Br;
-                                       break;
-                               case Code.Brfalse_S :
-                                       i.OpCode = OpCodes.Brfalse;
-                                       break;
-                               case Code.Brtrue_S :
-                                       i.OpCode = OpCodes.Brtrue;
-                                       break;
-                               case Code.Beq_S :
-                                       i.OpCode = OpCodes.Beq;
-                                       break;
-                               case Code.Bge_S :
-                                       i.OpCode = OpCodes.Bge;
-                                       break;
-                               case Code.Bgt_S :
-                                       i.OpCode = OpCodes.Bgt;
-                                       break;
-                               case Code.Ble_S :
-                                       i.OpCode = OpCodes.Ble;
-                                       break;
-                               case Code.Blt_S :
-                                       i.OpCode = OpCodes.Blt;
-                                       break;
-                               case Code.Bne_Un_S :
-                                       i.OpCode = OpCodes.Bne_Un;
-                                       break;
-                               case Code.Bge_Un_S :
-                                       i.OpCode = OpCodes.Bge_Un;
-                                       break;
-                               case Code.Bgt_Un_S :
-                                       i.OpCode = OpCodes.Bgt_Un;
-                                       break;
-                               case Code.Ble_Un_S :
-                                       i.OpCode = OpCodes.Ble_Un;
-                                       break;
-                               case Code.Blt_Un_S :
-                                       i.OpCode = OpCodes.Blt_Un;
-                                       break;
-                               case Code.Leave_S :
-                                       i.OpCode = OpCodes.Leave;
-                                       break;
-                               }
-                       }
+                       item.index = index;
                }
 
-               public void Optimize ()
+               protected override void OnRemove (VariableDefinition item, int index)
                {
-                       foreach (Instruction instr in m_instructions) {
-                               int index;
-                               switch (instr.OpCode.Code) {
-                               case Code.Ldarg:
-                                       index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-                                       if (index == -1 && instr.Operand == m_method.This)
-                                               index = 0;
-                                       else if (m_method.HasThis)
-                                               index++;
-
-                                       switch (index) {
-                                       case 0:
-                                               Modify (instr, OpCodes.Ldarg_0, null);
-                                               break;
-                                       case 1:
-                                               Modify (instr, OpCodes.Ldarg_1, null);
-                                               break;
-                                       case 2:
-                                               Modify (instr, OpCodes.Ldarg_2, null);
-                                               break;
-                                       case 3:
-                                               Modify (instr, OpCodes.Ldarg_3, null);
-                                               break;
-                                       default:
-                                               if (index < 256)
-                                                       Modify (instr, OpCodes.Ldarg_S, instr.Operand);
-                                               break;
-                                       }
-                                       break;
-                               case Code.Ldloc:
-                                       index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
-                                       switch (index) {
-                                       case 0:
-                                               Modify (instr, OpCodes.Ldloc_0, null);
-                                               break;
-                                       case 1:
-                                               Modify (instr, OpCodes.Ldloc_1, null);
-                                               break;
-                                       case 2:
-                                               Modify (instr, OpCodes.Ldloc_2, null);
-                                               break;
-                                       case 3:
-                                               Modify (instr, OpCodes.Ldloc_3, null);
-                                               break;
-                                       default:
-                                               if (index < 256)
-                                                       Modify (instr, OpCodes.Ldloc_S, instr.Operand);
-                                               break;
-                                       }
-                                       break;
-                               case Code.Stloc:
-                                       index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
-                                       switch (index) {
-                                       case 0:
-                                               Modify (instr, OpCodes.Stloc_0, null);
-                                               break;
-                                       case 1:
-                                               Modify (instr, OpCodes.Stloc_1, null);
-                                               break;
-                                       case 2:
-                                               Modify (instr, OpCodes.Stloc_2, null);
-                                               break;
-                                       case 3:
-                                               Modify (instr, OpCodes.Stloc_3, null);
-                                               break;
-                                       default:
-                                               if (index < 256)
-                                                       Modify (instr, OpCodes.Stloc_S, instr.Operand);
-                                               break;
-                                       }
-                                       break;
-                               case Code.Ldarga:
-                                       index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-                                       if (index == -1 && instr.Operand == m_method.This)
-                                               index = 0;
-                                       else if (m_method.HasThis)
-                                               index++;
-                                       if (index < 256)
-                                               Modify (instr, OpCodes.Ldarga_S, instr.Operand);
-                                       break;
-                               case Code.Ldloca:
-                                       if (m_variables.IndexOf ((VariableDefinition) instr.Operand) < 256)
-                                               Modify (instr, OpCodes.Ldloca_S, instr.Operand);
-                                       break;
-                               case Code.Ldc_I4:
-                                       int i = (int) instr.Operand;
-                                       switch (i) {
-                                       case -1:
-                                               Modify (instr, OpCodes.Ldc_I4_M1, null);
-                                               break;
-                                       case 0:
-                                               Modify (instr, OpCodes.Ldc_I4_0, null);
-                                               break;
-                                       case 1:
-                                               Modify (instr, OpCodes.Ldc_I4_1, null);
-                                               break;
-                                       case 2:
-                                               Modify (instr, OpCodes.Ldc_I4_2, null);
-                                               break;
-                                       case 3:
-                                               Modify (instr, OpCodes.Ldc_I4_3, null);
-                                               break;
-                                       case 4:
-                                               Modify (instr, OpCodes.Ldc_I4_4, null);
-                                               break;
-                                       case 5:
-                                               Modify (instr, OpCodes.Ldc_I4_5, null);
-                                               break;
-                                       case 6:
-                                               Modify (instr, OpCodes.Ldc_I4_6, null);
-                                               break;
-                                       case 7:
-                                               Modify (instr, OpCodes.Ldc_I4_7, null);
-                                               break;
-                                       case 8:
-                                               Modify (instr, OpCodes.Ldc_I4_8, null);
-                                               break;
-                                       default:
-                                               if (i >= -128 && i < 128)
-                                                       Modify (instr, OpCodes.Ldc_I4_S, (sbyte) i);
-                                               break;
-                                       }
-                                       break;
-                               }
-                       }
+                       item.index = -1;
 
-                       OptimizeBranches ();
+                       for (int i = index + 1; i < size; i++)
+                               items [i].index = i - 1;
                }
+       }
 
-               void OptimizeBranches ()
-               {
-                       ComputeOffsets ();
+       class InstructionCollection : Collection<Instruction> {
 
-                       foreach (Instruction instr in m_instructions) {
-                               if (instr.OpCode.OperandType != OperandType.InlineBrTarget)
-                                       continue;
+               internal InstructionCollection ()
+               {
+               }
 
-                               if (OptimizeBranch (instr))
-                                       ComputeOffsets ();
-                       }
+               internal InstructionCollection (int capacity)
+                       : base (capacity)
+               {
                }
 
-               static bool OptimizeBranch (Instruction instr)
+               protected override void OnAdd (Instruction item, int index)
                {
-                       int offset = ((Instruction) instr.Operand).Offset - (instr.Offset + instr.OpCode.Size + 4);
-                       if (! (offset >= -128 && offset <= 127))
-                               return false;
-
-                       switch (instr.OpCode.Code) {
-                       case Code.Br:
-                               instr.OpCode = OpCodes.Br_S;
-                               break;
-                       case Code.Brfalse:
-                               instr.OpCode = OpCodes.Brfalse_S;
-                               break;
-                       case Code.Brtrue:
-                               instr.OpCode = OpCodes.Brtrue_S;
-                               break;
-                       case Code.Beq:
-                               instr.OpCode = OpCodes.Beq_S;
-                               break;
-                       case Code.Bge:
-                               instr.OpCode = OpCodes.Bge_S;
-                               break;
-                       case Code.Bgt:
-                               instr.OpCode = OpCodes.Bgt_S;
-                               break;
-                       case Code.Ble:
-                               instr.OpCode = OpCodes.Ble_S;
-                               break;
-                       case Code.Blt:
-                               instr.OpCode = OpCodes.Blt_S;
-                               break;
-                       case Code.Bne_Un:
-                               instr.OpCode = OpCodes.Bne_Un_S;
-                               break;
-                       case Code.Bge_Un:
-                               instr.OpCode = OpCodes.Bge_Un_S;
-                               break;
-                       case Code.Bgt_Un:
-                               instr.OpCode = OpCodes.Bgt_Un_S;
-                               break;
-                       case Code.Ble_Un:
-                               instr.OpCode = OpCodes.Ble_Un_S;
-                               break;
-                       case Code.Blt_Un:
-                               instr.OpCode = OpCodes.Blt_Un_S;
-                               break;
-                       case Code.Leave:
-                               instr.OpCode = OpCodes.Leave_S;
-                               break;
-                       }
+                       if (index == 0)
+                               return;
 
-                       return true;
+                       var previous = items [index - 1];
+                       previous.next = item;
+                       item.previous = previous;
                }
 
-               void ComputeOffsets ()
+               protected override void OnInsert (Instruction item, int index)
                {
-                       int offset = 0;
+                       if (size == 0)
+                               return;
+
+                       var current = items [index];
+                       if (current == null) {
+                               var last = items [index - 1];
+                               last.next = item;
+                               item.previous = last;
+                               return;
+                       }
 
-                       foreach (Instruction instr in m_instructions) {
-                               instr.Offset = offset;
-                               offset += instr.GetSize ();
+                       var previous = current.previous;
+                       if (previous != null) {
+                               previous.next = item;
+                               item.previous = previous;
                        }
+
+                       current.previous = item;
+                       item.next = current;
                }
 
-               static void Modify (Instruction i, OpCode op, object operand)
+               protected override void OnSet (Instruction item, int index)
                {
-                       i.OpCode = op;
-                       i.Operand = operand;
+                       var current = items [index];
+
+                       item.previous = current.previous;
+                       item.next = current.next;
+
+                       current.previous = null;
+                       current.next = null;
                }
 
-               public void Accept (ICodeVisitor visitor)
+               protected override void OnRemove (Instruction item, int index)
                {
-                       visitor.VisitMethodBody (this);
-                       if (HasVariables)
-                               m_variables.Accept (visitor);
-                       m_instructions.Accept (visitor);
-                       if (HasExceptionHandlers)
-                               m_exceptions.Accept (visitor);
-                       if (HasScopes)
-                               m_scopes.Accept (visitor);
-
-                       visitor.TerminateMethodBody (this);
+                       var previous = item.previous;
+                       if (previous != null)
+                               previous.next = item.next;
+
+                       var next = item.next;
+                       if (next != null)
+                               next.previous = item.previous;
+
+                       item.previous = null;
+                       item.next = null;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodDataSection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodDataSection.cs
deleted file mode 100644 (file)
index 295ccdb..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// MethodDataSection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       internal enum MethodDataSection : ushort {
-               EHTable = 0x1,
-               OptILTable = 0x2,
-               FatFormat = 0x40,
-               MoreSects = 0x80
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodHeader.cs
deleted file mode 100644 (file)
index c90ce2f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// MethodHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       internal enum MethodHeader : ushort {
-               TinyFormat = 0x2,
-               FatFormat = 0x3,
-               MoreSects = 0x8,
-               InitLocals = 0x10
-       }
-}
index 829fc2f03444c2c6d8f0e3ede5e412269e919d04..aad4ba4b9d0eaa9b890c8dc35435b2eb660e83b8 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Cil {
 
+       public enum FlowControl {
+               Branch,
+               Break,
+               Call,
+               Cond_Branch,
+               Meta,
+               Next,
+               Phi,
+               Return,
+               Throw,
+       }
+
+       public enum OpCodeType {
+               Annotation,
+               Macro,
+               Nternal,
+               Objmodel,
+               Prefix,
+               Primitive,
+       }
+
+       public enum OperandType {
+               InlineBrTarget,
+               InlineField,
+               InlineI,
+               InlineI8,
+               InlineMethod,
+               InlineNone,
+               InlinePhi,
+               InlineR,
+               InlineSig,
+               InlineString,
+               InlineSwitch,
+               InlineTok,
+               InlineType,
+               InlineVar,
+               InlineArg,
+               ShortInlineBrTarget,
+               ShortInlineI,
+               ShortInlineR,
+               ShortInlineVar,
+               ShortInlineArg,
+       }
+
+       public enum StackBehaviour {
+               Pop0,
+               Pop1,
+               Pop1_pop1,
+               Popi,
+               Popi_pop1,
+               Popi_popi,
+               Popi_popi8,
+               Popi_popi_popi,
+               Popi_popr4,
+               Popi_popr8,
+               Popref,
+               Popref_pop1,
+               Popref_popi,
+               Popref_popi_popi,
+               Popref_popi_popi8,
+               Popref_popi_popr4,
+               Popref_popi_popr8,
+               Popref_popi_popref,
+               PopAll,
+               Push0,
+               Push1,
+               Push1_push1,
+               Pushi,
+               Pushi8,
+               Pushr4,
+               Pushr8,
+               Pushref,
+               Varpop,
+               Varpush,
+       }
+
        public struct OpCode {
-               short m_value;
-               byte m_code;
-               byte m_flowControl;
-               byte m_opCodeType;
-               byte m_operandType;
-               byte m_stackBehaviourPop;
-               byte m_stackBehaviourPush;
+
+               readonly byte op1;
+               readonly byte op2;
+               readonly byte code;
+               readonly byte flow_control;
+               readonly byte opcode_type;
+               readonly byte operand_type;
+               readonly byte stack_behavior_pop;
+               readonly byte stack_behavior_push;
 
                public string Name {
-                       get {
-                               int index = (Size == 1) ? Op2 : (Op2 + 256);
-                               return OpCodeNames.names [index];
-                       }
+                       get { return OpCodeNames.names [op1 == 0xff ? op2 : op2 + 256]; }
                }
 
                public int Size {
-                       get { return ((m_value & 0xff00) == 0xff00) ? 1 : 2; }
+                       get { return op1 == 0xff ? 1 : 2; }
                }
 
                public byte Op1 {
-                       get { return (byte) (m_value >> 8); }
+                       get { return op1; }
                }
 
                public byte Op2 {
-                       get { return (byte) m_value; }
+                       get { return op2; }
                }
 
                public short Value {
-                       get { return (Size == 1) ? Op2 : m_value; }
+                       get { return (short) ((op1 << 8) | op2); }
                }
 
                public Code Code {
-                       get { return (Code) m_code; }
+                       get { return (Code) code; }
                }
 
                public FlowControl FlowControl {
-                       get { return (FlowControl) m_flowControl; }
+                       get { return (FlowControl) flow_control; }
                }
 
                public OpCodeType OpCodeType {
-                       get { return (OpCodeType) m_opCodeType; }
+                       get { return (OpCodeType) opcode_type; }
                }
 
                public OperandType OperandType {
-                       get { return (OperandType) m_operandType; }
+                       get { return (OperandType) operand_type; }
                }
 
                public StackBehaviour StackBehaviourPop {
-                       get { return (StackBehaviour) m_stackBehaviourPop; }
+                       get { return (StackBehaviour) stack_behavior_pop; }
                }
 
                public StackBehaviour StackBehaviourPush {
-                       get { return (StackBehaviour) m_stackBehaviourPush; }
+                       get { return (StackBehaviour) stack_behavior_push; }
                }
 
-               internal OpCode (byte op1, byte op2,
-                       Code code, FlowControl flowControl,
-                       OpCodeType opCodeType, OperandType operandType,
-                       StackBehaviour pop, StackBehaviour push)
+               internal OpCode (int x, int y)
                {
-                       m_value = (short) ((op1 << 8) | op2);
-                       m_code = (byte) code;
-                       m_flowControl = (byte) flowControl;
-                       m_opCodeType = (byte) opCodeType;
-                       m_operandType = (byte) operandType;
-                       m_stackBehaviourPop = (byte) pop;
-                       m_stackBehaviourPush = (byte) push;
+                       this.op1 = (byte) ((x >> 0) & 0xff);
+                       this.op2 = (byte) ((x >> 8) & 0xff);
+                       this.code = (byte) ((x >> 16) & 0xff);
+                       this.flow_control = (byte) ((x >> 24) & 0xff);
+
+                       this.opcode_type = (byte) ((y >> 0) & 0xff);
+                       this.operand_type = (byte) ((y >> 8) & 0xff);
+                       this.stack_behavior_pop = (byte) ((y >> 16) & 0xff);
+                       this.stack_behavior_push = (byte) ((y >> 24) & 0xff);
 
                        if (op1 == 0xff)
                                OpCodes.OneByteOpCode [op2] = this;
@@ -105,30 +179,31 @@ namespace Mono.Cecil.Cil {
 
                public override int GetHashCode ()
                {
-                       return m_value;
+                       return Value;
                }
 
                public override bool Equals (object obj)
                {
                        if (!(obj is OpCode))
                                return false;
-                       OpCode v = (OpCode) obj;
-                       return v.m_value == m_value;
+
+                       var opcode = (OpCode) obj;
+                       return op1 == opcode.op1 && op2 == opcode.op2;
                }
 
                public bool Equals (OpCode opcode)
                {
-                       return (m_value == opcode.m_value);
+                       return op1 == opcode.op1 && op2 == opcode.op2;
                }
 
                public static bool operator == (OpCode one, OpCode other)
                {
-                       return (one.m_value == other.m_value);
+                       return one.op1 == other.op1 && one.op2 == other.op2;
                }
 
                public static bool operator != (OpCode one, OpCode other)
                {
-                       return (one.m_value != other.m_value);
+                       return one.op1 != other.op1 || one.op2 != other.op2;
                }
 
                public override string ToString ()
@@ -136,4 +211,314 @@ namespace Mono.Cecil.Cil {
                        return Name;
                }
        }
+
+       static class OpCodeNames {
+
+               internal static readonly string [] names = {
+                       "nop",
+                       "break",
+                       "ldarg.0",
+                       "ldarg.1",
+                       "ldarg.2",
+                       "ldarg.3",
+                       "ldloc.0",
+                       "ldloc.1",
+                       "ldloc.2",
+                       "ldloc.3",
+                       "stloc.0",
+                       "stloc.1",
+                       "stloc.2",
+                       "stloc.3",
+                       "ldarg.s",
+                       "ldarga.s",
+                       "starg.s",
+                       "ldloc.s",
+                       "ldloca.s",
+                       "stloc.s",
+                       "ldnull",
+                       "ldc.i4.m1",
+                       "ldc.i4.0",
+                       "ldc.i4.1",
+                       "ldc.i4.2",
+                       "ldc.i4.3",
+                       "ldc.i4.4",
+                       "ldc.i4.5",
+                       "ldc.i4.6",
+                       "ldc.i4.7",
+                       "ldc.i4.8",
+                       "ldc.i4.s",
+                       "ldc.i4",
+                       "ldc.i8",
+                       "ldc.r4",
+                       "ldc.r8",
+                       null,
+                       "dup",
+                       "pop",
+                       "jmp",
+                       "call",
+                       "calli",
+                       "ret",
+                       "br.s",
+                       "brfalse.s",
+                       "brtrue.s",
+                       "beq.s",
+                       "bge.s",
+                       "bgt.s",
+                       "ble.s",
+                       "blt.s",
+                       "bne.un.s",
+                       "bge.un.s",
+                       "bgt.un.s",
+                       "ble.un.s",
+                       "blt.un.s",
+                       "br",
+                       "brfalse",
+                       "brtrue",
+                       "beq",
+                       "bge",
+                       "bgt",
+                       "ble",
+                       "blt",
+                       "bne.un",
+                       "bge.un",
+                       "bgt.un",
+                       "ble.un",
+                       "blt.un",
+                       "switch",
+                       "ldind.i1",
+                       "ldind.u1",
+                       "ldind.i2",
+                       "ldind.u2",
+                       "ldind.i4",
+                       "ldind.u4",
+                       "ldind.i8",
+                       "ldind.i",
+                       "ldind.r4",
+                       "ldind.r8",
+                       "ldind.ref",
+                       "stind.ref",
+                       "stind.i1",
+                       "stind.i2",
+                       "stind.i4",
+                       "stind.i8",
+                       "stind.r4",
+                       "stind.r8",
+                       "add",
+                       "sub",
+                       "mul",
+                       "div",
+                       "div.un",
+                       "rem",
+                       "rem.un",
+                       "and",
+                       "or",
+                       "xor",
+                       "shl",
+                       "shr",
+                       "shr.un",
+                       "neg",
+                       "not",
+                       "conv.i1",
+                       "conv.i2",
+                       "conv.i4",
+                       "conv.i8",
+                       "conv.r4",
+                       "conv.r8",
+                       "conv.u4",
+                       "conv.u8",
+                       "callvirt",
+                       "cpobj",
+                       "ldobj",
+                       "ldstr",
+                       "newobj",
+                       "castclass",
+                       "isinst",
+                       "conv.r.un",
+                       null,
+                       null,
+                       "unbox",
+                       "throw",
+                       "ldfld",
+                       "ldflda",
+                       "stfld",
+                       "ldsfld",
+                       "ldsflda",
+                       "stsfld",
+                       "stobj",
+                       "conv.ovf.i1.un",
+                       "conv.ovf.i2.un",
+                       "conv.ovf.i4.un",
+                       "conv.ovf.i8.un",
+                       "conv.ovf.u1.un",
+                       "conv.ovf.u2.un",
+                       "conv.ovf.u4.un",
+                       "conv.ovf.u8.un",
+                       "conv.ovf.i.un",
+                       "conv.ovf.u.un",
+                       "box",
+                       "newarr",
+                       "ldlen",
+                       "ldelema",
+                       "ldelem.i1",
+                       "ldelem.u1",
+                       "ldelem.i2",
+                       "ldelem.u2",
+                       "ldelem.i4",
+                       "ldelem.u4",
+                       "ldelem.i8",
+                       "ldelem.i",
+                       "ldelem.r4",
+                       "ldelem.r8",
+                       "ldelem.ref",
+                       "stelem.i",
+                       "stelem.i1",
+                       "stelem.i2",
+                       "stelem.i4",
+                       "stelem.i8",
+                       "stelem.r4",
+                       "stelem.r8",
+                       "stelem.ref",
+                       "ldelem.any",
+                       "stelem.any",
+                       "unbox.any",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "conv.ovf.i1",
+                       "conv.ovf.u1",
+                       "conv.ovf.i2",
+                       "conv.ovf.u2",
+                       "conv.ovf.i4",
+                       "conv.ovf.u4",
+                       "conv.ovf.i8",
+                       "conv.ovf.u8",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "refanyval",
+                       "ckfinite",
+                       null,
+                       null,
+                       "mkrefany",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "ldtoken",
+                       "conv.u2",
+                       "conv.u1",
+                       "conv.i",
+                       "conv.ovf.i",
+                       "conv.ovf.u",
+                       "add.ovf",
+                       "add.ovf.un",
+                       "mul.ovf",
+                       "mul.ovf.un",
+                       "sub.ovf",
+                       "sub.ovf.un",
+                       "endfinally",
+                       "leave",
+                       "leave.s",
+                       "stind.i",
+                       "conv.u",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "prefix7",
+                       "prefix6",
+                       "prefix5",
+                       "prefix4",
+                       "prefix3",
+                       "prefix2",
+                       "prefix1",
+                       "prefixref",
+                       "arglist",
+                       "ceq",
+                       "cgt",
+                       "cgt.un",
+                       "clt",
+                       "clt.un",
+                       "ldftn",
+                       "ldvirtftn",
+                       null,
+                       "ldarg",
+                       "ldarga",
+                       "starg",
+                       "ldloc",
+                       "ldloca",
+                       "stloc",
+                       "localloc",
+                       null,
+                       "endfilter",
+                       "unaligned.",
+                       "volatile.",
+                       "tail.",
+                       "initobj",
+                       "constrained.",
+                       "cpblk",
+                       "initblk",
+                       "no.",          // added by spouliot to match Cecil existing definitions
+                       "rethrow",
+                       null,
+                       "sizeof",
+                       "refanytype",
+                       "readonly.",    // added by spouliot to match Cecil existing definitions
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+               };
+       }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeNames.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeNames.cs
deleted file mode 100644 (file)
index 4d7f0cc..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// copy-pasted from /mcs/class/corlib/System.Reflection.Emit/OpCodeNames.cs
-// added names for "no." and "readonly."
-
-namespace Mono.Cecil.Cil {
-
-       internal sealed class OpCodeNames {
-
-               internal static readonly string [] names = {
-                       "nop",
-                       "break",
-                       "ldarg.0",
-                       "ldarg.1",
-                       "ldarg.2",
-                       "ldarg.3",
-                       "ldloc.0",
-                       "ldloc.1",
-                       "ldloc.2",
-                       "ldloc.3",
-                       "stloc.0",
-                       "stloc.1",
-                       "stloc.2",
-                       "stloc.3",
-                       "ldarg.s",
-                       "ldarga.s",
-                       "starg.s",
-                       "ldloc.s",
-                       "ldloca.s",
-                       "stloc.s",
-                       "ldnull",
-                       "ldc.i4.m1",
-                       "ldc.i4.0",
-                       "ldc.i4.1",
-                       "ldc.i4.2",
-                       "ldc.i4.3",
-                       "ldc.i4.4",
-                       "ldc.i4.5",
-                       "ldc.i4.6",
-                       "ldc.i4.7",
-                       "ldc.i4.8",
-                       "ldc.i4.s",
-                       "ldc.i4",
-                       "ldc.i8",
-                       "ldc.r4",
-                       "ldc.r8",
-                       null,
-                       "dup",
-                       "pop",
-                       "jmp",
-                       "call",
-                       "calli",
-                       "ret",
-                       "br.s",
-                       "brfalse.s",
-                       "brtrue.s",
-                       "beq.s",
-                       "bge.s",
-                       "bgt.s",
-                       "ble.s",
-                       "blt.s",
-                       "bne.un.s",
-                       "bge.un.s",
-                       "bgt.un.s",
-                       "ble.un.s",
-                       "blt.un.s",
-                       "br",
-                       "brfalse",
-                       "brtrue",
-                       "beq",
-                       "bge",
-                       "bgt",
-                       "ble",
-                       "blt",
-                       "bne.un",
-                       "bge.un",
-                       "bgt.un",
-                       "ble.un",
-                       "blt.un",
-                       "switch",
-                       "ldind.i1",
-                       "ldind.u1",
-                       "ldind.i2",
-                       "ldind.u2",
-                       "ldind.i4",
-                       "ldind.u4",
-                       "ldind.i8",
-                       "ldind.i",
-                       "ldind.r4",
-                       "ldind.r8",
-                       "ldind.ref",
-                       "stind.ref",
-                       "stind.i1",
-                       "stind.i2",
-                       "stind.i4",
-                       "stind.i8",
-                       "stind.r4",
-                       "stind.r8",
-                       "add",
-                       "sub",
-                       "mul",
-                       "div",
-                       "div.un",
-                       "rem",
-                       "rem.un",
-                       "and",
-                       "or",
-                       "xor",
-                       "shl",
-                       "shr",
-                       "shr.un",
-                       "neg",
-                       "not",
-                       "conv.i1",
-                       "conv.i2",
-                       "conv.i4",
-                       "conv.i8",
-                       "conv.r4",
-                       "conv.r8",
-                       "conv.u4",
-                       "conv.u8",
-                       "callvirt",
-                       "cpobj",
-                       "ldobj",
-                       "ldstr",
-                       "newobj",
-                       "castclass",
-                       "isinst",
-                       "conv.r.un",
-                       null,
-                       null,
-                       "unbox",
-                       "throw",
-                       "ldfld",
-                       "ldflda",
-                       "stfld",
-                       "ldsfld",
-                       "ldsflda",
-                       "stsfld",
-                       "stobj",
-                       "conv.ovf.i1.un",
-                       "conv.ovf.i2.un",
-                       "conv.ovf.i4.un",
-                       "conv.ovf.i8.un",
-                       "conv.ovf.u1.un",
-                       "conv.ovf.u2.un",
-                       "conv.ovf.u4.un",
-                       "conv.ovf.u8.un",
-                       "conv.ovf.i.un",
-                       "conv.ovf.u.un",
-                       "box",
-                       "newarr",
-                       "ldlen",
-                       "ldelema",
-                       "ldelem.i1",
-                       "ldelem.u1",
-                       "ldelem.i2",
-                       "ldelem.u2",
-                       "ldelem.i4",
-                       "ldelem.u4",
-                       "ldelem.i8",
-                       "ldelem.i",
-                       "ldelem.r4",
-                       "ldelem.r8",
-                       "ldelem.ref",
-                       "stelem.i",
-                       "stelem.i1",
-                       "stelem.i2",
-                       "stelem.i4",
-                       "stelem.i8",
-                       "stelem.r4",
-                       "stelem.r8",
-                       "stelem.ref",
-                       "ldelem.any",
-                       "stelem.any",
-                       "unbox.any",
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       "conv.ovf.i1",
-                       "conv.ovf.u1",
-                       "conv.ovf.i2",
-                       "conv.ovf.u2",
-                       "conv.ovf.i4",
-                       "conv.ovf.u4",
-                       "conv.ovf.i8",
-                       "conv.ovf.u8",
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       "refanyval",
-                       "ckfinite",
-                       null,
-                       null,
-                       "mkrefany",
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       "ldtoken",
-                       "conv.u2",
-                       "conv.u1",
-                       "conv.i",
-                       "conv.ovf.i",
-                       "conv.ovf.u",
-                       "add.ovf",
-                       "add.ovf.un",
-                       "mul.ovf",
-                       "mul.ovf.un",
-                       "sub.ovf",
-                       "sub.ovf.un",
-                       "endfinally",
-                       "leave",
-                       "leave.s",
-                       "stind.i",
-                       "conv.u",
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       "prefix7",
-                       "prefix6",
-                       "prefix5",
-                       "prefix4",
-                       "prefix3",
-                       "prefix2",
-                       "prefix1",
-                       "prefixref",
-                       "arglist",
-                       "ceq",
-                       "cgt",
-                       "cgt.un",
-                       "clt",
-                       "clt.un",
-                       "ldftn",
-                       "ldvirtftn",
-                       null,
-                       "ldarg",
-                       "ldarga",
-                       "starg",
-                       "ldloc",
-                       "ldloca",
-                       "stloc",
-                       "localloc",
-                       null,
-                       "endfilter",
-                       "unaligned.",
-                       "volatile.",
-                       "tail.",
-                       "initobj",
-                       "constrained.",
-                       "cpblk",
-                       "initblk",
-                       "no.",          // added by spouliot to match Cecil existing definitions
-                       "rethrow",
-                       null,
-                       "sizeof",
-                       "refanytype",
-                       "readonly.",    // added by spouliot to match Cecil existing definitions
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-                       null,
-               };
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs
deleted file mode 100644 (file)
index c6106d9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// OpCodeType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum OpCodeType {
-               Annotation,
-               Macro,
-               Nternal,
-               Objmodel,
-               Prefix,
-               Primitive
-       }
-}
index 1e5a99cde8b138203383c5d1845304eb5393befe..ce468a19c42305348b44b52734ed9800a0da9e7a 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Jun 06 13:04:02 +0200 2008
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Cil {
 
-       public sealed class OpCodes {
+       public static class OpCodes {
 
                internal static readonly OpCode [] OneByteOpCode = new OpCode [0xe0 + 1];
                internal static readonly OpCode [] TwoBytesOpCode = new OpCode [0x1e + 1];
 
                public static readonly OpCode Nop = new OpCode (
-                       0xff, 0x00,
-                       Code.Nop, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0x00 << 8 | (byte) Code.Nop << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Break = new OpCode (
-                       0xff, 0x01,
-                       Code.Break, FlowControl.Break,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0x01 << 8 | (byte) Code.Break << 16 | (byte) FlowControl.Break << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldarg_0 = new OpCode (
-                       0xff, 0x02,
-                       Code.Ldarg_0, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x02 << 8 | (byte) Code.Ldarg_0 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldarg_1 = new OpCode (
-                       0xff, 0x03,
-                       Code.Ldarg_1, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x03 << 8 | (byte) Code.Ldarg_1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldarg_2 = new OpCode (
-                       0xff, 0x04,
-                       Code.Ldarg_2, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x04 << 8 | (byte) Code.Ldarg_2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldarg_3 = new OpCode (
-                       0xff, 0x05,
-                       Code.Ldarg_3, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x05 << 8 | (byte) Code.Ldarg_3 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloc_0 = new OpCode (
-                       0xff, 0x06,
-                       Code.Ldloc_0, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x06 << 8 | (byte) Code.Ldloc_0 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloc_1 = new OpCode (
-                       0xff, 0x07,
-                       Code.Ldloc_1, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x07 << 8 | (byte) Code.Ldloc_1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloc_2 = new OpCode (
-                       0xff, 0x08,
-                       Code.Ldloc_2, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x08 << 8 | (byte) Code.Ldloc_2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloc_3 = new OpCode (
-                       0xff, 0x09,
-                       Code.Ldloc_3, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x09 << 8 | (byte) Code.Ldloc_3 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Stloc_0 = new OpCode (
-                       0xff, 0x0a,
-                       Code.Stloc_0, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x0a << 8 | (byte) Code.Stloc_0 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stloc_1 = new OpCode (
-                       0xff, 0x0b,
-                       Code.Stloc_1, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x0b << 8 | (byte) Code.Stloc_1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stloc_2 = new OpCode (
-                       0xff, 0x0c,
-                       Code.Stloc_2, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x0c << 8 | (byte) Code.Stloc_2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stloc_3 = new OpCode (
-                       0xff, 0x0d,
-                       Code.Stloc_3, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x0d << 8 | (byte) Code.Stloc_3 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldarg_S = new OpCode (
-                       0xff, 0x0e,
-                       Code.Ldarg_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineParam,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x0e << 8 | (byte) Code.Ldarg_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldarga_S = new OpCode (
-                       0xff, 0x0f,
-                       Code.Ldarga_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineParam,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x0f << 8 | (byte) Code.Ldarga_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Starg_S = new OpCode (
-                       0xff, 0x10,
-                       Code.Starg_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineParam,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x10 << 8 | (byte) Code.Starg_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldloc_S = new OpCode (
-                       0xff, 0x11,
-                       Code.Ldloc_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineVar,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x11 << 8 | (byte) Code.Ldloc_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloca_S = new OpCode (
-                       0xff, 0x12,
-                       Code.Ldloca_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineVar,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x12 << 8 | (byte) Code.Ldloca_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Stloc_S = new OpCode (
-                       0xff, 0x13,
-                       Code.Stloc_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineVar,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x13 << 8 | (byte) Code.Stloc_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldnull = new OpCode (
-                       0xff, 0x14,
-                       Code.Ldnull, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushref);
+                       0xff << 0 | 0x14 << 8 | (byte) Code.Ldnull << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Ldc_I4_M1 = new OpCode (
-                       0xff, 0x15,
-                       Code.Ldc_I4_M1, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x15 << 8 | (byte) Code.Ldc_I4_M1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_0 = new OpCode (
-                       0xff, 0x16,
-                       Code.Ldc_I4_0, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x16 << 8 | (byte) Code.Ldc_I4_0 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_1 = new OpCode (
-                       0xff, 0x17,
-                       Code.Ldc_I4_1, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x17 << 8 | (byte) Code.Ldc_I4_1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_2 = new OpCode (
-                       0xff, 0x18,
-                       Code.Ldc_I4_2, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x18 << 8 | (byte) Code.Ldc_I4_2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_3 = new OpCode (
-                       0xff, 0x19,
-                       Code.Ldc_I4_3, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x19 << 8 | (byte) Code.Ldc_I4_3 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_4 = new OpCode (
-                       0xff, 0x1a,
-                       Code.Ldc_I4_4, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1a << 8 | (byte) Code.Ldc_I4_4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_5 = new OpCode (
-                       0xff, 0x1b,
-                       Code.Ldc_I4_5, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1b << 8 | (byte) Code.Ldc_I4_5 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_6 = new OpCode (
-                       0xff, 0x1c,
-                       Code.Ldc_I4_6, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1c << 8 | (byte) Code.Ldc_I4_6 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_7 = new OpCode (
-                       0xff, 0x1d,
-                       Code.Ldc_I4_7, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1d << 8 | (byte) Code.Ldc_I4_7 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_8 = new OpCode (
-                       0xff, 0x1e,
-                       Code.Ldc_I4_8, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1e << 8 | (byte) Code.Ldc_I4_8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4_S = new OpCode (
-                       0xff, 0x1f,
-                       Code.Ldc_I4_S, FlowControl.Next,
-                       OpCodeType.Macro, OperandType.ShortInlineI,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x1f << 8 | (byte) Code.Ldc_I4_S << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I4 = new OpCode (
-                       0xff, 0x20,
-                       Code.Ldc_I4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineI,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x20 << 8 | (byte) Code.Ldc_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldc_I8 = new OpCode (
-                       0xff, 0x21,
-                       Code.Ldc_I8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineI8,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x21 << 8 | (byte) Code.Ldc_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineI8 << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Ldc_R4 = new OpCode (
-                       0xff, 0x22,
-                       Code.Ldc_R4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.ShortInlineR,
-                       StackBehaviour.Pop0, StackBehaviour.Pushr4);
+                       0xff << 0 | 0x22 << 8 | (byte) Code.Ldc_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.ShortInlineR << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
                public static readonly OpCode Ldc_R8 = new OpCode (
-                       0xff, 0x23,
-                       Code.Ldc_R8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineR,
-                       StackBehaviour.Pop0, StackBehaviour.Pushr8);
+                       0xff << 0 | 0x23 << 8 | (byte) Code.Ldc_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineR << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Dup = new OpCode (
-                       0xff, 0x25,
-                       Code.Dup, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push1_push1);
+                       0xff << 0 | 0x25 << 8 | (byte) Code.Dup << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1_push1 << 24);
 
                public static readonly OpCode Pop = new OpCode (
-                       0xff, 0x26,
-                       Code.Pop, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x26 << 8 | (byte) Code.Pop << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Jmp = new OpCode (
-                       0xff, 0x27,
-                       Code.Jmp, FlowControl.Call,
-                       OpCodeType.Primitive, OperandType.InlineMethod,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0x27 << 8 | (byte) Code.Jmp << 16 | (byte) FlowControl.Call << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Call = new OpCode (
-                       0xff, 0x28,
-                       Code.Call, FlowControl.Call,
-                       OpCodeType.Primitive, OperandType.InlineMethod,
-                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+                       0xff << 0 | 0x28 << 8 | (byte) Code.Call << 16 | (byte) FlowControl.Call << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
                public static readonly OpCode Calli = new OpCode (
-                       0xff, 0x29,
-                       Code.Calli, FlowControl.Call,
-                       OpCodeType.Primitive, OperandType.InlineSig,
-                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+                       0xff << 0 | 0x29 << 8 | (byte) Code.Calli << 16 | (byte) FlowControl.Call << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineSig << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
                public static readonly OpCode Ret = new OpCode (
-                       0xff, 0x2a,
-                       Code.Ret, FlowControl.Return,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Varpop, StackBehaviour.Push0);
+                       0xff << 0 | 0x2a << 8 | (byte) Code.Ret << 16 | (byte) FlowControl.Return << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Br_S = new OpCode (
-                       0xff, 0x2b,
-                       Code.Br_S, FlowControl.Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0x2b << 8 | (byte) Code.Br_S << 16 | (byte) FlowControl.Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Brfalse_S = new OpCode (
-                       0xff, 0x2c,
-                       Code.Brfalse_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x2c << 8 | (byte) Code.Brfalse_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Brtrue_S = new OpCode (
-                       0xff, 0x2d,
-                       Code.Brtrue_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x2d << 8 | (byte) Code.Brtrue_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Beq_S = new OpCode (
-                       0xff, 0x2e,
-                       Code.Beq_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x2e << 8 | (byte) Code.Beq_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bge_S = new OpCode (
-                       0xff, 0x2f,
-                       Code.Bge_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x2f << 8 | (byte) Code.Bge_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bgt_S = new OpCode (
-                       0xff, 0x30,
-                       Code.Bgt_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x30 << 8 | (byte) Code.Bgt_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ble_S = new OpCode (
-                       0xff, 0x31,
-                       Code.Ble_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x31 << 8 | (byte) Code.Ble_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Blt_S = new OpCode (
-                       0xff, 0x32,
-                       Code.Blt_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x32 << 8 | (byte) Code.Blt_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bne_Un_S = new OpCode (
-                       0xff, 0x33,
-                       Code.Bne_Un_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x33 << 8 | (byte) Code.Bne_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bge_Un_S = new OpCode (
-                       0xff, 0x34,
-                       Code.Bge_Un_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x34 << 8 | (byte) Code.Bge_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bgt_Un_S = new OpCode (
-                       0xff, 0x35,
-                       Code.Bgt_Un_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x35 << 8 | (byte) Code.Bgt_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ble_Un_S = new OpCode (
-                       0xff, 0x36,
-                       Code.Ble_Un_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x36 << 8 | (byte) Code.Ble_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Blt_Un_S = new OpCode (
-                       0xff, 0x37,
-                       Code.Blt_Un_S, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x37 << 8 | (byte) Code.Blt_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Br = new OpCode (
-                       0xff, 0x38,
-                       Code.Br, FlowControl.Branch,
-                       OpCodeType.Primitive, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0x38 << 8 | (byte) Code.Br << 16 | (byte) FlowControl.Branch << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Brfalse = new OpCode (
-                       0xff, 0x39,
-                       Code.Brfalse, FlowControl.Cond_Branch,
-                       OpCodeType.Primitive, OperandType.InlineBrTarget,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x39 << 8 | (byte) Code.Brfalse << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Brtrue = new OpCode (
-                       0xff, 0x3a,
-                       Code.Brtrue, FlowControl.Cond_Branch,
-                       OpCodeType.Primitive, OperandType.InlineBrTarget,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x3a << 8 | (byte) Code.Brtrue << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Beq = new OpCode (
-                       0xff, 0x3b,
-                       Code.Beq, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x3b << 8 | (byte) Code.Beq << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bge = new OpCode (
-                       0xff, 0x3c,
-                       Code.Bge, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x3c << 8 | (byte) Code.Bge << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bgt = new OpCode (
-                       0xff, 0x3d,
-                       Code.Bgt, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x3d << 8 | (byte) Code.Bgt << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ble = new OpCode (
-                       0xff, 0x3e,
-                       Code.Ble, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x3e << 8 | (byte) Code.Ble << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Blt = new OpCode (
-                       0xff, 0x3f,
-                       Code.Blt, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x3f << 8 | (byte) Code.Blt << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bne_Un = new OpCode (
-                       0xff, 0x40,
-                       Code.Bne_Un, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x40 << 8 | (byte) Code.Bne_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bge_Un = new OpCode (
-                       0xff, 0x41,
-                       Code.Bge_Un, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x41 << 8 | (byte) Code.Bge_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Bgt_Un = new OpCode (
-                       0xff, 0x42,
-                       Code.Bgt_Un, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x42 << 8 | (byte) Code.Bgt_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ble_Un = new OpCode (
-                       0xff, 0x43,
-                       Code.Ble_Un, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x43 << 8 | (byte) Code.Ble_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Blt_Un = new OpCode (
-                       0xff, 0x44,
-                       Code.Blt_Un, FlowControl.Cond_Branch,
-                       OpCodeType.Macro, OperandType.InlineBrTarget,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x44 << 8 | (byte) Code.Blt_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Switch = new OpCode (
-                       0xff, 0x45,
-                       Code.Switch, FlowControl.Cond_Branch,
-                       OpCodeType.Primitive, OperandType.InlineSwitch,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x45 << 8 | (byte) Code.Switch << 16 | (byte) FlowControl.Cond_Branch << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineSwitch << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldind_I1 = new OpCode (
-                       0xff, 0x46,
-                       Code.Ldind_I1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x46 << 8 | (byte) Code.Ldind_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_U1 = new OpCode (
-                       0xff, 0x47,
-                       Code.Ldind_U1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x47 << 8 | (byte) Code.Ldind_U1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_I2 = new OpCode (
-                       0xff, 0x48,
-                       Code.Ldind_I2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x48 << 8 | (byte) Code.Ldind_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_U2 = new OpCode (
-                       0xff, 0x49,
-                       Code.Ldind_U2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x49 << 8 | (byte) Code.Ldind_U2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_I4 = new OpCode (
-                       0xff, 0x4a,
-                       Code.Ldind_I4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x4a << 8 | (byte) Code.Ldind_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_U4 = new OpCode (
-                       0xff, 0x4b,
-                       Code.Ldind_U4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x4b << 8 | (byte) Code.Ldind_U4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_I8 = new OpCode (
-                       0xff, 0x4c,
-                       Code.Ldind_I8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x4c << 8 | (byte) Code.Ldind_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Ldind_I = new OpCode (
-                       0xff, 0x4d,
-                       Code.Ldind_I, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x4d << 8 | (byte) Code.Ldind_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldind_R4 = new OpCode (
-                       0xff, 0x4e,
-                       Code.Ldind_R4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushr4);
+                       0xff << 0 | 0x4e << 8 | (byte) Code.Ldind_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
                public static readonly OpCode Ldind_R8 = new OpCode (
-                       0xff, 0x4f,
-                       Code.Ldind_R8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushr8);
+                       0xff << 0 | 0x4f << 8 | (byte) Code.Ldind_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Ldind_Ref = new OpCode (
-                       0xff, 0x50,
-                       Code.Ldind_Ref, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushref);
+                       0xff << 0 | 0x50 << 8 | (byte) Code.Ldind_Ref << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Stind_Ref = new OpCode (
-                       0xff, 0x51,
-                       Code.Stind_Ref, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x51 << 8 | (byte) Code.Stind_Ref << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_I1 = new OpCode (
-                       0xff, 0x52,
-                       Code.Stind_I1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x52 << 8 | (byte) Code.Stind_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_I2 = new OpCode (
-                       0xff, 0x53,
-                       Code.Stind_I2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x53 << 8 | (byte) Code.Stind_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_I4 = new OpCode (
-                       0xff, 0x54,
-                       Code.Stind_I4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x54 << 8 | (byte) Code.Stind_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_I8 = new OpCode (
-                       0xff, 0x55,
-                       Code.Stind_I8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi8, StackBehaviour.Push0);
+                       0xff << 0 | 0x55 << 8 | (byte) Code.Stind_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_R4 = new OpCode (
-                       0xff, 0x56,
-                       Code.Stind_R4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popr4, StackBehaviour.Push0);
+                       0xff << 0 | 0x56 << 8 | (byte) Code.Stind_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popr4 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_R8 = new OpCode (
-                       0xff, 0x57,
-                       Code.Stind_R8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popr8, StackBehaviour.Push0);
+                       0xff << 0 | 0x57 << 8 | (byte) Code.Stind_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popr8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Add = new OpCode (
-                       0xff, 0x58,
-                       Code.Add, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x58 << 8 | (byte) Code.Add << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Sub = new OpCode (
-                       0xff, 0x59,
-                       Code.Sub, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x59 << 8 | (byte) Code.Sub << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Mul = new OpCode (
-                       0xff, 0x5a,
-                       Code.Mul, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5a << 8 | (byte) Code.Mul << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Div = new OpCode (
-                       0xff, 0x5b,
-                       Code.Div, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5b << 8 | (byte) Code.Div << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Div_Un = new OpCode (
-                       0xff, 0x5c,
-                       Code.Div_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5c << 8 | (byte) Code.Div_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Rem = new OpCode (
-                       0xff, 0x5d,
-                       Code.Rem, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5d << 8 | (byte) Code.Rem << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Rem_Un = new OpCode (
-                       0xff, 0x5e,
-                       Code.Rem_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5e << 8 | (byte) Code.Rem_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode And = new OpCode (
-                       0xff, 0x5f,
-                       Code.And, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x5f << 8 | (byte) Code.And << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Or = new OpCode (
-                       0xff, 0x60,
-                       Code.Or, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x60 << 8 | (byte) Code.Or << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Xor = new OpCode (
-                       0xff, 0x61,
-                       Code.Xor, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x61 << 8 | (byte) Code.Xor << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Shl = new OpCode (
-                       0xff, 0x62,
-                       Code.Shl, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x62 << 8 | (byte) Code.Shl << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Shr = new OpCode (
-                       0xff, 0x63,
-                       Code.Shr, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x63 << 8 | (byte) Code.Shr << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Shr_Un = new OpCode (
-                       0xff, 0x64,
-                       Code.Shr_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x64 << 8 | (byte) Code.Shr_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Neg = new OpCode (
-                       0xff, 0x65,
-                       Code.Neg, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x65 << 8 | (byte) Code.Neg << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Not = new OpCode (
-                       0xff, 0x66,
-                       Code.Not, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0x66 << 8 | (byte) Code.Not << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Conv_I1 = new OpCode (
-                       0xff, 0x67,
-                       Code.Conv_I1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x67 << 8 | (byte) Code.Conv_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_I2 = new OpCode (
-                       0xff, 0x68,
-                       Code.Conv_I2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x68 << 8 | (byte) Code.Conv_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_I4 = new OpCode (
-                       0xff, 0x69,
-                       Code.Conv_I4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x69 << 8 | (byte) Code.Conv_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_I8 = new OpCode (
-                       0xff, 0x6a,
-                       Code.Conv_I8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x6a << 8 | (byte) Code.Conv_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Conv_R4 = new OpCode (
-                       0xff, 0x6b,
-                       Code.Conv_R4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushr4);
+                       0xff << 0 | 0x6b << 8 | (byte) Code.Conv_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
                public static readonly OpCode Conv_R8 = new OpCode (
-                       0xff, 0x6c,
-                       Code.Conv_R8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+                       0xff << 0 | 0x6c << 8 | (byte) Code.Conv_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Conv_U4 = new OpCode (
-                       0xff, 0x6d,
-                       Code.Conv_U4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x6d << 8 | (byte) Code.Conv_U4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_U8 = new OpCode (
-                       0xff, 0x6e,
-                       Code.Conv_U8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x6e << 8 | (byte) Code.Conv_U8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Callvirt = new OpCode (
-                       0xff, 0x6f,
-                       Code.Callvirt, FlowControl.Call,
-                       OpCodeType.Objmodel, OperandType.InlineMethod,
-                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+                       0xff << 0 | 0x6f << 8 | (byte) Code.Callvirt << 16 | (byte) FlowControl.Call << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
                public static readonly OpCode Cpobj = new OpCode (
-                       0xff, 0x70,
-                       Code.Cpobj, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x70 << 8 | (byte) Code.Cpobj << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldobj = new OpCode (
-                       0xff, 0x71,
-                       Code.Ldobj, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popi, StackBehaviour.Push1);
+                       0xff << 0 | 0x71 << 8 | (byte) Code.Ldobj << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldstr = new OpCode (
-                       0xff, 0x72,
-                       Code.Ldstr, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineString,
-                       StackBehaviour.Pop0, StackBehaviour.Pushref);
+                       0xff << 0 | 0x72 << 8 | (byte) Code.Ldstr << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineString << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Newobj = new OpCode (
-                       0xff, 0x73,
-                       Code.Newobj, FlowControl.Call,
-                       OpCodeType.Objmodel, OperandType.InlineMethod,
-                       StackBehaviour.Varpop, StackBehaviour.Pushref);
+                       0xff << 0 | 0x73 << 8 | (byte) Code.Newobj << 16 | (byte) FlowControl.Call << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Castclass = new OpCode (
-                       0xff, 0x74,
-                       Code.Castclass, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref, StackBehaviour.Pushref);
+                       0xff << 0 | 0x74 << 8 | (byte) Code.Castclass << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Isinst = new OpCode (
-                       0xff, 0x75,
-                       Code.Isinst, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref, StackBehaviour.Pushi);
+                       0xff << 0 | 0x75 << 8 | (byte) Code.Isinst << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_R_Un = new OpCode (
-                       0xff, 0x76,
-                       Code.Conv_R_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+                       0xff << 0 | 0x76 << 8 | (byte) Code.Conv_R_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Unbox = new OpCode (
-                       0xff, 0x79,
-                       Code.Unbox, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineType,
-                       StackBehaviour.Popref, StackBehaviour.Pushi);
+                       0xff << 0 | 0x79 << 8 | (byte) Code.Unbox << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Throw = new OpCode (
-                       0xff, 0x7a,
-                       Code.Throw, FlowControl.Throw,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref, StackBehaviour.Push0);
+                       0xff << 0 | 0x7a << 8 | (byte) Code.Throw << 16 | (byte) FlowControl.Throw << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldfld = new OpCode (
-                       0xff, 0x7b,
-                       Code.Ldfld, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Popref, StackBehaviour.Push1);
+                       0xff << 0 | 0x7b << 8 | (byte) Code.Ldfld << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldflda = new OpCode (
-                       0xff, 0x7c,
-                       Code.Ldflda, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Popref, StackBehaviour.Pushi);
+                       0xff << 0 | 0x7c << 8 | (byte) Code.Ldflda << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Stfld = new OpCode (
-                       0xff, 0x7d,
-                       Code.Stfld, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Popref_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x7d << 8 | (byte) Code.Stfld << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldsfld = new OpCode (
-                       0xff, 0x7e,
-                       Code.Ldsfld, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xff << 0 | 0x7e << 8 | (byte) Code.Ldsfld << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldsflda = new OpCode (
-                       0xff, 0x7f,
-                       Code.Ldsflda, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0x7f << 8 | (byte) Code.Ldsflda << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Stsfld = new OpCode (
-                       0xff, 0x80,
-                       Code.Stsfld, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineField,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x80 << 8 | (byte) Code.Stsfld << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stobj = new OpCode (
-                       0xff, 0x81,
-                       Code.Stobj, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popi_pop1, StackBehaviour.Push0);
+                       0xff << 0 | 0x81 << 8 | (byte) Code.Stobj << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Conv_Ovf_I1_Un = new OpCode (
-                       0xff, 0x82,
-                       Code.Conv_Ovf_I1_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x82 << 8 | (byte) Code.Conv_Ovf_I1_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I2_Un = new OpCode (
-                       0xff, 0x83,
-                       Code.Conv_Ovf_I2_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x83 << 8 | (byte) Code.Conv_Ovf_I2_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I4_Un = new OpCode (
-                       0xff, 0x84,
-                       Code.Conv_Ovf_I4_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x84 << 8 | (byte) Code.Conv_Ovf_I4_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I8_Un = new OpCode (
-                       0xff, 0x85,
-                       Code.Conv_Ovf_I8_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x85 << 8 | (byte) Code.Conv_Ovf_I8_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Conv_Ovf_U1_Un = new OpCode (
-                       0xff, 0x86,
-                       Code.Conv_Ovf_U1_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x86 << 8 | (byte) Code.Conv_Ovf_U1_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U2_Un = new OpCode (
-                       0xff, 0x87,
-                       Code.Conv_Ovf_U2_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x87 << 8 | (byte) Code.Conv_Ovf_U2_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U4_Un = new OpCode (
-                       0xff, 0x88,
-                       Code.Conv_Ovf_U4_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x88 << 8 | (byte) Code.Conv_Ovf_U4_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U8_Un = new OpCode (
-                       0xff, 0x89,
-                       Code.Conv_Ovf_U8_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x89 << 8 | (byte) Code.Conv_Ovf_U8_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Conv_Ovf_I_Un = new OpCode (
-                       0xff, 0x8a,
-                       Code.Conv_Ovf_I_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x8a << 8 | (byte) Code.Conv_Ovf_I_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U_Un = new OpCode (
-                       0xff, 0x8b,
-                       Code.Conv_Ovf_U_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0x8b << 8 | (byte) Code.Conv_Ovf_U_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Box = new OpCode (
-                       0xff, 0x8c,
-                       Code.Box, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineType,
-                       StackBehaviour.Pop1, StackBehaviour.Pushref);
+                       0xff << 0 | 0x8c << 8 | (byte) Code.Box << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Newarr = new OpCode (
-                       0xff, 0x8d,
-                       Code.Newarr, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popi, StackBehaviour.Pushref);
+                       0xff << 0 | 0x8d << 8 | (byte) Code.Newarr << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Ldlen = new OpCode (
-                       0xff, 0x8e,
-                       Code.Ldlen, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref, StackBehaviour.Pushi);
+                       0xff << 0 | 0x8e << 8 | (byte) Code.Ldlen << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelema = new OpCode (
-                       0xff, 0x8f,
-                       Code.Ldelema, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x8f << 8 | (byte) Code.Ldelema << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_I1 = new OpCode (
-                       0xff, 0x90,
-                       Code.Ldelem_I1, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x90 << 8 | (byte) Code.Ldelem_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_U1 = new OpCode (
-                       0xff, 0x91,
-                       Code.Ldelem_U1, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x91 << 8 | (byte) Code.Ldelem_U1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_I2 = new OpCode (
-                       0xff, 0x92,
-                       Code.Ldelem_I2, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x92 << 8 | (byte) Code.Ldelem_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_U2 = new OpCode (
-                       0xff, 0x93,
-                       Code.Ldelem_U2, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x93 << 8 | (byte) Code.Ldelem_U2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_I4 = new OpCode (
-                       0xff, 0x94,
-                       Code.Ldelem_I4, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x94 << 8 | (byte) Code.Ldelem_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_U4 = new OpCode (
-                       0xff, 0x95,
-                       Code.Ldelem_U4, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x95 << 8 | (byte) Code.Ldelem_U4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_I8 = new OpCode (
-                       0xff, 0x96,
-                       Code.Ldelem_I8, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi8);
+                       0xff << 0 | 0x96 << 8 | (byte) Code.Ldelem_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Ldelem_I = new OpCode (
-                       0xff, 0x97,
-                       Code.Ldelem_I, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+                       0xff << 0 | 0x97 << 8 | (byte) Code.Ldelem_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldelem_R4 = new OpCode (
-                       0xff, 0x98,
-                       Code.Ldelem_R4, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushr4);
+                       0xff << 0 | 0x98 << 8 | (byte) Code.Ldelem_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
                public static readonly OpCode Ldelem_R8 = new OpCode (
-                       0xff, 0x99,
-                       Code.Ldelem_R8, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushr8);
+                       0xff << 0 | 0x99 << 8 | (byte) Code.Ldelem_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Ldelem_Ref = new OpCode (
-                       0xff, 0x9a,
-                       Code.Ldelem_Ref, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi, StackBehaviour.Pushref);
+                       0xff << 0 | 0x9a << 8 | (byte) Code.Ldelem_Ref << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
                public static readonly OpCode Stelem_I = new OpCode (
-                       0xff, 0x9b,
-                       Code.Stelem_I, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x9b << 8 | (byte) Code.Stelem_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_I1 = new OpCode (
-                       0xff, 0x9c,
-                       Code.Stelem_I1, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x9c << 8 | (byte) Code.Stelem_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_I2 = new OpCode (
-                       0xff, 0x9d,
-                       Code.Stelem_I2, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x9d << 8 | (byte) Code.Stelem_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_I4 = new OpCode (
-                       0xff, 0x9e,
-                       Code.Stelem_I4, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0x9e << 8 | (byte) Code.Stelem_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_I8 = new OpCode (
-                       0xff, 0x9f,
-                       Code.Stelem_I8, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popi8, StackBehaviour.Push0);
+                       0xff << 0 | 0x9f << 8 | (byte) Code.Stelem_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_R4 = new OpCode (
-                       0xff, 0xa0,
-                       Code.Stelem_R4, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popr4, StackBehaviour.Push0);
+                       0xff << 0 | 0xa0 << 8 | (byte) Code.Stelem_R4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popr4 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_R8 = new OpCode (
-                       0xff, 0xa1,
-                       Code.Stelem_R8, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popr8, StackBehaviour.Push0);
+                       0xff << 0 | 0xa1 << 8 | (byte) Code.Stelem_R8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popr8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stelem_Ref = new OpCode (
-                       0xff, 0xa2,
-                       Code.Stelem_Ref, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+                       0xff << 0 | 0xa2 << 8 | (byte) Code.Stelem_Ref << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldelem_Any = new OpCode (
-                       0xff, 0xa3,
-                       Code.Ldelem_Any, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref_popi, StackBehaviour.Push1);
+                       0xff << 0 | 0xa3 << 8 | (byte) Code.Ldelem_Any << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Stelem_Any = new OpCode (
-                       0xff, 0xa4,
-                       Code.Stelem_Any, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+                       0xff << 0 | 0xa4 << 8 | (byte) Code.Stelem_Any << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi_popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Unbox_Any = new OpCode (
-                       0xff, 0xa5,
-                       Code.Unbox_Any, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popref, StackBehaviour.Push1);
+                       0xff << 0 | 0xa5 << 8 | (byte) Code.Unbox_Any << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Conv_Ovf_I1 = new OpCode (
-                       0xff, 0xb3,
-                       Code.Conv_Ovf_I1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb3 << 8 | (byte) Code.Conv_Ovf_I1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U1 = new OpCode (
-                       0xff, 0xb4,
-                       Code.Conv_Ovf_U1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb4 << 8 | (byte) Code.Conv_Ovf_U1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I2 = new OpCode (
-                       0xff, 0xb5,
-                       Code.Conv_Ovf_I2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb5 << 8 | (byte) Code.Conv_Ovf_I2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U2 = new OpCode (
-                       0xff, 0xb6,
-                       Code.Conv_Ovf_U2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb6 << 8 | (byte) Code.Conv_Ovf_U2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I4 = new OpCode (
-                       0xff, 0xb7,
-                       Code.Conv_Ovf_I4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb7 << 8 | (byte) Code.Conv_Ovf_I4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U4 = new OpCode (
-                       0xff, 0xb8,
-                       Code.Conv_Ovf_U4, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xb8 << 8 | (byte) Code.Conv_Ovf_U4 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I8 = new OpCode (
-                       0xff, 0xb9,
-                       Code.Conv_Ovf_I8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0xb9 << 8 | (byte) Code.Conv_Ovf_I8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Conv_Ovf_U8 = new OpCode (
-                       0xff, 0xba,
-                       Code.Conv_Ovf_U8, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+                       0xff << 0 | 0xba << 8 | (byte) Code.Conv_Ovf_U8 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
                public static readonly OpCode Refanyval = new OpCode (
-                       0xff, 0xc2,
-                       Code.Refanyval, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineType,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xc2 << 8 | (byte) Code.Refanyval << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ckfinite = new OpCode (
-                       0xff, 0xc3,
-                       Code.Ckfinite, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+                       0xff << 0 | 0xc3 << 8 | (byte) Code.Ckfinite << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
                public static readonly OpCode Mkrefany = new OpCode (
-                       0xff, 0xc6,
-                       Code.Mkrefany, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineType,
-                       StackBehaviour.Popi, StackBehaviour.Push1);
+                       0xff << 0 | 0xc6 << 8 | (byte) Code.Mkrefany << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldtoken = new OpCode (
-                       0xff, 0xd0,
-                       Code.Ldtoken, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineTok,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd0 << 8 | (byte) Code.Ldtoken << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineTok << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_U2 = new OpCode (
-                       0xff, 0xd1,
-                       Code.Conv_U2, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd1 << 8 | (byte) Code.Conv_U2 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_U1 = new OpCode (
-                       0xff, 0xd2,
-                       Code.Conv_U1, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd2 << 8 | (byte) Code.Conv_U1 << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_I = new OpCode (
-                       0xff, 0xd3,
-                       Code.Conv_I, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd3 << 8 | (byte) Code.Conv_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_I = new OpCode (
-                       0xff, 0xd4,
-                       Code.Conv_Ovf_I, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd4 << 8 | (byte) Code.Conv_Ovf_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Conv_Ovf_U = new OpCode (
-                       0xff, 0xd5,
-                       Code.Conv_Ovf_U, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xd5 << 8 | (byte) Code.Conv_Ovf_U << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Add_Ovf = new OpCode (
-                       0xff, 0xd6,
-                       Code.Add_Ovf, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xd6 << 8 | (byte) Code.Add_Ovf << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Add_Ovf_Un = new OpCode (
-                       0xff, 0xd7,
-                       Code.Add_Ovf_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xd7 << 8 | (byte) Code.Add_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Mul_Ovf = new OpCode (
-                       0xff, 0xd8,
-                       Code.Mul_Ovf, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xd8 << 8 | (byte) Code.Mul_Ovf << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Mul_Ovf_Un = new OpCode (
-                       0xff, 0xd9,
-                       Code.Mul_Ovf_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xd9 << 8 | (byte) Code.Mul_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Sub_Ovf = new OpCode (
-                       0xff, 0xda,
-                       Code.Sub_Ovf, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xda << 8 | (byte) Code.Sub_Ovf << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Sub_Ovf_Un = new OpCode (
-                       0xff, 0xdb,
-                       Code.Sub_Ovf_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+                       0xff << 0 | 0xdb << 8 | (byte) Code.Sub_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Endfinally = new OpCode (
-                       0xff, 0xdc,
-                       Code.Endfinally, FlowControl.Return,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xff << 0 | 0xdc << 8 | (byte) Code.Endfinally << 16 | (byte) FlowControl.Return << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Leave = new OpCode (
-                       0xff, 0xdd,
-                       Code.Leave, FlowControl.Branch,
-                       OpCodeType.Primitive, OperandType.InlineBrTarget,
-                       StackBehaviour.PopAll, StackBehaviour.Push0);
+                       0xff << 0 | 0xdd << 8 | (byte) Code.Leave << 16 | (byte) FlowControl.Branch << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.PopAll << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Leave_S = new OpCode (
-                       0xff, 0xde,
-                       Code.Leave_S, FlowControl.Branch,
-                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-                       StackBehaviour.PopAll, StackBehaviour.Push0);
+                       0xff << 0 | 0xde << 8 | (byte) Code.Leave_S << 16 | (byte) FlowControl.Branch << 24,
+                       (byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.PopAll << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Stind_I = new OpCode (
-                       0xff, 0xdf,
-                       Code.Stind_I, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+                       0xff << 0 | 0xdf << 8 | (byte) Code.Stind_I << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Conv_U = new OpCode (
-                       0xff, 0xe0,
-                       Code.Conv_U, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xff << 0 | 0xe0 << 8 | (byte) Code.Conv_U << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Arglist = new OpCode (
-                       0xfe, 0x00,
-                       Code.Arglist, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x00 << 8 | (byte) Code.Arglist << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ceq = new OpCode (
-                       0xfe, 0x01,
-                       Code.Ceq, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x01 << 8 | (byte) Code.Ceq << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Cgt = new OpCode (
-                       0xfe, 0x02,
-                       Code.Cgt, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x02 << 8 | (byte) Code.Cgt << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Cgt_Un = new OpCode (
-                       0xfe, 0x03,
-                       Code.Cgt_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x03 << 8 | (byte) Code.Cgt_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Clt = new OpCode (
-                       0xfe, 0x04,
-                       Code.Clt, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x04 << 8 | (byte) Code.Clt << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Clt_Un = new OpCode (
-                       0xfe, 0x05,
-                       Code.Clt_Un, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x05 << 8 | (byte) Code.Clt_Un << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldftn = new OpCode (
-                       0xfe, 0x06,
-                       Code.Ldftn, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineMethod,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x06 << 8 | (byte) Code.Ldftn << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldvirtftn = new OpCode (
-                       0xfe, 0x07,
-                       Code.Ldvirtftn, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineMethod,
-                       StackBehaviour.Popref, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x07 << 8 | (byte) Code.Ldvirtftn << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Ldarg = new OpCode (
-                       0xfe, 0x09,
-                       Code.Ldarg, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineParam,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xfe << 0 | 0x09 << 8 | (byte) Code.Ldarg << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldarga = new OpCode (
-                       0xfe, 0x0a,
-                       Code.Ldarga, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineParam,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x0a << 8 | (byte) Code.Ldarga << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Starg = new OpCode (
-                       0xfe, 0x0b,
-                       Code.Starg, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineParam,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xfe << 0 | 0x0b << 8 | (byte) Code.Starg << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Ldloc = new OpCode (
-                       0xfe, 0x0c,
-                       Code.Ldloc, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineVar,
-                       StackBehaviour.Pop0, StackBehaviour.Push1);
+                       0xfe << 0 | 0x0c << 8 | (byte) Code.Ldloc << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
                public static readonly OpCode Ldloca = new OpCode (
-                       0xfe, 0x0d,
-                       Code.Ldloca, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineVar,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x0d << 8 | (byte) Code.Ldloca << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Stloc = new OpCode (
-                       0xfe, 0x0e,
-                       Code.Stloc, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineVar,
-                       StackBehaviour.Pop1, StackBehaviour.Push0);
+                       0xfe << 0 | 0x0e << 8 | (byte) Code.Stloc << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Localloc = new OpCode (
-                       0xfe, 0x0f,
-                       Code.Localloc, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x0f << 8 | (byte) Code.Localloc << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Endfilter = new OpCode (
-                       0xfe, 0x11,
-                       Code.Endfilter, FlowControl.Return,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xfe << 0 | 0x11 << 8 | (byte) Code.Endfilter << 16 | (byte) FlowControl.Return << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Unaligned = new OpCode (
-                       0xfe, 0x12,
-                       Code.Unaligned, FlowControl.Meta,
-                       OpCodeType.Prefix, OperandType.ShortInlineI,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x12 << 8 | (byte) Code.Unaligned << 16 | (byte) FlowControl.Meta << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Volatile = new OpCode (
-                       0xfe, 0x13,
-                       Code.Volatile, FlowControl.Meta,
-                       OpCodeType.Prefix, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x13 << 8 | (byte) Code.Volatile << 16 | (byte) FlowControl.Meta << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Tail = new OpCode (
-                       0xfe, 0x14,
-                       Code.Tail, FlowControl.Meta,
-                       OpCodeType.Prefix, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x14 << 8 | (byte) Code.Tail << 16 | (byte) FlowControl.Meta << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Initobj = new OpCode (
-                       0xfe, 0x15,
-                       Code.Initobj, FlowControl.Next,
-                       OpCodeType.Objmodel, OperandType.InlineType,
-                       StackBehaviour.Popi, StackBehaviour.Push0);
+                       0xfe << 0 | 0x15 << 8 | (byte) Code.Initobj << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Constrained = new OpCode (
-                       0xfe, 0x16,
-                       Code.Constrained, FlowControl.Next,
-                       OpCodeType.Prefix, OperandType.InlineType,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x16 << 8 | (byte) Code.Constrained << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Cpblk = new OpCode (
-                       0xfe, 0x17,
-                       Code.Cpblk, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+                       0xfe << 0 | 0x17 << 8 | (byte) Code.Cpblk << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Initblk = new OpCode (
-                       0xfe, 0x18,
-                       Code.Initblk, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+                       0xfe << 0 | 0x18 << 8 | (byte) Code.Initblk << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode No = new OpCode (
-                       0xfe, 0x19,
-                       Code.No, FlowControl.Next,
-                       OpCodeType.Prefix, OperandType.ShortInlineI,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x19 << 8 | (byte) Code.No << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Rethrow = new OpCode (
-                       0xfe, 0x1a,
-                       Code.Rethrow, FlowControl.Throw,
-                       OpCodeType.Objmodel, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
+                       0xfe << 0 | 0x1a << 8 | (byte) Code.Rethrow << 16 | (byte) FlowControl.Throw << 24,
+                       (byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
                public static readonly OpCode Sizeof = new OpCode (
-                       0xfe, 0x1c,
-                       Code.Sizeof, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineType,
-                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x1c << 8 | (byte) Code.Sizeof << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Refanytype = new OpCode (
-                       0xfe, 0x1d,
-                       Code.Refanytype, FlowControl.Next,
-                       OpCodeType.Primitive, OperandType.InlineNone,
-                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+                       0xfe << 0 | 0x1d << 8 | (byte) Code.Refanytype << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
                public static readonly OpCode Readonly = new OpCode (
-                       0xfe, 0x1e,
-                       Code.Readonly, FlowControl.Next,
-                       OpCodeType.Prefix, OperandType.InlineNone,
-                       StackBehaviour.Pop0, StackBehaviour.Push0);
-
-               OpCodes ()
-               {
-               }
-
-               public static OpCode GetOpCode (Code code)
-               {
-                       switch (code) {
-                       case Code.Nop : return OpCodes.Nop;
-                       case Code.Break : return OpCodes.Break;
-                       case Code.Ldarg_0 : return OpCodes.Ldarg_0;
-                       case Code.Ldarg_1 : return OpCodes.Ldarg_1;
-                       case Code.Ldarg_2 : return OpCodes.Ldarg_2;
-                       case Code.Ldarg_3 : return OpCodes.Ldarg_3;
-                       case Code.Ldloc_0 : return OpCodes.Ldloc_0;
-                       case Code.Ldloc_1 : return OpCodes.Ldloc_1;
-                       case Code.Ldloc_2 : return OpCodes.Ldloc_2;
-                       case Code.Ldloc_3 : return OpCodes.Ldloc_3;
-                       case Code.Stloc_0 : return OpCodes.Stloc_0;
-                       case Code.Stloc_1 : return OpCodes.Stloc_1;
-                       case Code.Stloc_2 : return OpCodes.Stloc_2;
-                       case Code.Stloc_3 : return OpCodes.Stloc_3;
-                       case Code.Ldarg_S : return OpCodes.Ldarg_S;
-                       case Code.Ldarga_S : return OpCodes.Ldarga_S;
-                       case Code.Starg_S : return OpCodes.Starg_S;
-                       case Code.Ldloc_S : return OpCodes.Ldloc_S;
-                       case Code.Ldloca_S : return OpCodes.Ldloca_S;
-                       case Code.Stloc_S : return OpCodes.Stloc_S;
-                       case Code.Ldnull : return OpCodes.Ldnull;
-                       case Code.Ldc_I4_M1 : return OpCodes.Ldc_I4_M1;
-                       case Code.Ldc_I4_0 : return OpCodes.Ldc_I4_0;
-                       case Code.Ldc_I4_1 : return OpCodes.Ldc_I4_1;
-                       case Code.Ldc_I4_2 : return OpCodes.Ldc_I4_2;
-                       case Code.Ldc_I4_3 : return OpCodes.Ldc_I4_3;
-                       case Code.Ldc_I4_4 : return OpCodes.Ldc_I4_4;
-                       case Code.Ldc_I4_5 : return OpCodes.Ldc_I4_5;
-                       case Code.Ldc_I4_6 : return OpCodes.Ldc_I4_6;
-                       case Code.Ldc_I4_7 : return OpCodes.Ldc_I4_7;
-                       case Code.Ldc_I4_8 : return OpCodes.Ldc_I4_8;
-                       case Code.Ldc_I4_S : return OpCodes.Ldc_I4_S;
-                       case Code.Ldc_I4 : return OpCodes.Ldc_I4;
-                       case Code.Ldc_I8 : return OpCodes.Ldc_I8;
-                       case Code.Ldc_R4 : return OpCodes.Ldc_R4;
-                       case Code.Ldc_R8 : return OpCodes.Ldc_R8;
-                       case Code.Dup : return OpCodes.Dup;
-                       case Code.Pop : return OpCodes.Pop;
-                       case Code.Jmp : return OpCodes.Jmp;
-                       case Code.Call : return OpCodes.Call;
-                       case Code.Calli : return OpCodes.Calli;
-                       case Code.Ret : return OpCodes.Ret;
-                       case Code.Br_S : return OpCodes.Br_S;
-                       case Code.Brfalse_S : return OpCodes.Brfalse_S;
-                       case Code.Brtrue_S : return OpCodes.Brtrue_S;
-                       case Code.Beq_S : return OpCodes.Beq_S;
-                       case Code.Bge_S : return OpCodes.Bge_S;
-                       case Code.Bgt_S : return OpCodes.Bgt_S;
-                       case Code.Ble_S : return OpCodes.Ble_S;
-                       case Code.Blt_S : return OpCodes.Blt_S;
-                       case Code.Bne_Un_S : return OpCodes.Bne_Un_S;
-                       case Code.Bge_Un_S : return OpCodes.Bge_Un_S;
-                       case Code.Bgt_Un_S : return OpCodes.Bgt_Un_S;
-                       case Code.Ble_Un_S : return OpCodes.Ble_Un_S;
-                       case Code.Blt_Un_S : return OpCodes.Blt_Un_S;
-                       case Code.Br : return OpCodes.Br;
-                       case Code.Brfalse : return OpCodes.Brfalse;
-                       case Code.Brtrue : return OpCodes.Brtrue;
-                       case Code.Beq : return OpCodes.Beq;
-                       case Code.Bge : return OpCodes.Bge;
-                       case Code.Bgt : return OpCodes.Bgt;
-                       case Code.Ble : return OpCodes.Ble;
-                       case Code.Blt : return OpCodes.Blt;
-                       case Code.Bne_Un : return OpCodes.Bne_Un;
-                       case Code.Bge_Un : return OpCodes.Bge_Un;
-                       case Code.Bgt_Un : return OpCodes.Bgt_Un;
-                       case Code.Ble_Un : return OpCodes.Ble_Un;
-                       case Code.Blt_Un : return OpCodes.Blt_Un;
-                       case Code.Switch : return OpCodes.Switch;
-                       case Code.Ldind_I1 : return OpCodes.Ldind_I1;
-                       case Code.Ldind_U1 : return OpCodes.Ldind_U1;
-                       case Code.Ldind_I2 : return OpCodes.Ldind_I2;
-                       case Code.Ldind_U2 : return OpCodes.Ldind_U2;
-                       case Code.Ldind_I4 : return OpCodes.Ldind_I4;
-                       case Code.Ldind_U4 : return OpCodes.Ldind_U4;
-                       case Code.Ldind_I8 : return OpCodes.Ldind_I8;
-                       case Code.Ldind_I : return OpCodes.Ldind_I;
-                       case Code.Ldind_R4 : return OpCodes.Ldind_R4;
-                       case Code.Ldind_R8 : return OpCodes.Ldind_R8;
-                       case Code.Ldind_Ref : return OpCodes.Ldind_Ref;
-                       case Code.Stind_Ref : return OpCodes.Stind_Ref;
-                       case Code.Stind_I1 : return OpCodes.Stind_I1;
-                       case Code.Stind_I2 : return OpCodes.Stind_I2;
-                       case Code.Stind_I4 : return OpCodes.Stind_I4;
-                       case Code.Stind_I8 : return OpCodes.Stind_I8;
-                       case Code.Stind_R4 : return OpCodes.Stind_R4;
-                       case Code.Stind_R8 : return OpCodes.Stind_R8;
-                       case Code.Add : return OpCodes.Add;
-                       case Code.Sub : return OpCodes.Sub;
-                       case Code.Mul : return OpCodes.Mul;
-                       case Code.Div : return OpCodes.Div;
-                       case Code.Div_Un : return OpCodes.Div_Un;
-                       case Code.Rem : return OpCodes.Rem;
-                       case Code.Rem_Un : return OpCodes.Rem_Un;
-                       case Code.And : return OpCodes.And;
-                       case Code.Or : return OpCodes.Or;
-                       case Code.Xor : return OpCodes.Xor;
-                       case Code.Shl : return OpCodes.Shl;
-                       case Code.Shr : return OpCodes.Shr;
-                       case Code.Shr_Un : return OpCodes.Shr_Un;
-                       case Code.Neg : return OpCodes.Neg;
-                       case Code.Not : return OpCodes.Not;
-                       case Code.Conv_I1 : return OpCodes.Conv_I1;
-                       case Code.Conv_I2 : return OpCodes.Conv_I2;
-                       case Code.Conv_I4 : return OpCodes.Conv_I4;
-                       case Code.Conv_I8 : return OpCodes.Conv_I8;
-                       case Code.Conv_R4 : return OpCodes.Conv_R4;
-                       case Code.Conv_R8 : return OpCodes.Conv_R8;
-                       case Code.Conv_U4 : return OpCodes.Conv_U4;
-                       case Code.Conv_U8 : return OpCodes.Conv_U8;
-                       case Code.Callvirt : return OpCodes.Callvirt;
-                       case Code.Cpobj : return OpCodes.Cpobj;
-                       case Code.Ldobj : return OpCodes.Ldobj;
-                       case Code.Ldstr : return OpCodes.Ldstr;
-                       case Code.Newobj : return OpCodes.Newobj;
-                       case Code.Castclass : return OpCodes.Castclass;
-                       case Code.Isinst : return OpCodes.Isinst;
-                       case Code.Conv_R_Un : return OpCodes.Conv_R_Un;
-                       case Code.Unbox : return OpCodes.Unbox;
-                       case Code.Throw : return OpCodes.Throw;
-                       case Code.Ldfld : return OpCodes.Ldfld;
-                       case Code.Ldflda : return OpCodes.Ldflda;
-                       case Code.Stfld : return OpCodes.Stfld;
-                       case Code.Ldsfld : return OpCodes.Ldsfld;
-                       case Code.Ldsflda : return OpCodes.Ldsflda;
-                       case Code.Stsfld : return OpCodes.Stsfld;
-                       case Code.Stobj : return OpCodes.Stobj;
-                       case Code.Conv_Ovf_I1_Un : return OpCodes.Conv_Ovf_I1_Un;
-                       case Code.Conv_Ovf_I2_Un : return OpCodes.Conv_Ovf_I2_Un;
-                       case Code.Conv_Ovf_I4_Un : return OpCodes.Conv_Ovf_I4_Un;
-                       case Code.Conv_Ovf_I8_Un : return OpCodes.Conv_Ovf_I8_Un;
-                       case Code.Conv_Ovf_U1_Un : return OpCodes.Conv_Ovf_U1_Un;
-                       case Code.Conv_Ovf_U2_Un : return OpCodes.Conv_Ovf_U2_Un;
-                       case Code.Conv_Ovf_U4_Un : return OpCodes.Conv_Ovf_U4_Un;
-                       case Code.Conv_Ovf_U8_Un : return OpCodes.Conv_Ovf_U8_Un;
-                       case Code.Conv_Ovf_I_Un : return OpCodes.Conv_Ovf_I_Un;
-                       case Code.Conv_Ovf_U_Un : return OpCodes.Conv_Ovf_U_Un;
-                       case Code.Box : return OpCodes.Box;
-                       case Code.Newarr : return OpCodes.Newarr;
-                       case Code.Ldlen : return OpCodes.Ldlen;
-                       case Code.Ldelema : return OpCodes.Ldelema;
-                       case Code.Ldelem_I1 : return OpCodes.Ldelem_I1;
-                       case Code.Ldelem_U1 : return OpCodes.Ldelem_U1;
-                       case Code.Ldelem_I2 : return OpCodes.Ldelem_I2;
-                       case Code.Ldelem_U2 : return OpCodes.Ldelem_U2;
-                       case Code.Ldelem_I4 : return OpCodes.Ldelem_I4;
-                       case Code.Ldelem_U4 : return OpCodes.Ldelem_U4;
-                       case Code.Ldelem_I8 : return OpCodes.Ldelem_I8;
-                       case Code.Ldelem_I : return OpCodes.Ldelem_I;
-                       case Code.Ldelem_R4 : return OpCodes.Ldelem_R4;
-                       case Code.Ldelem_R8 : return OpCodes.Ldelem_R8;
-                       case Code.Ldelem_Ref : return OpCodes.Ldelem_Ref;
-                       case Code.Stelem_I : return OpCodes.Stelem_I;
-                       case Code.Stelem_I1 : return OpCodes.Stelem_I1;
-                       case Code.Stelem_I2 : return OpCodes.Stelem_I2;
-                       case Code.Stelem_I4 : return OpCodes.Stelem_I4;
-                       case Code.Stelem_I8 : return OpCodes.Stelem_I8;
-                       case Code.Stelem_R4 : return OpCodes.Stelem_R4;
-                       case Code.Stelem_R8 : return OpCodes.Stelem_R8;
-                       case Code.Stelem_Ref : return OpCodes.Stelem_Ref;
-                       case Code.Ldelem_Any : return OpCodes.Ldelem_Any;
-                       case Code.Stelem_Any : return OpCodes.Stelem_Any;
-                       case Code.Unbox_Any : return OpCodes.Unbox_Any;
-                       case Code.Conv_Ovf_I1 : return OpCodes.Conv_Ovf_I1;
-                       case Code.Conv_Ovf_U1 : return OpCodes.Conv_Ovf_U1;
-                       case Code.Conv_Ovf_I2 : return OpCodes.Conv_Ovf_I2;
-                       case Code.Conv_Ovf_U2 : return OpCodes.Conv_Ovf_U2;
-                       case Code.Conv_Ovf_I4 : return OpCodes.Conv_Ovf_I4;
-                       case Code.Conv_Ovf_U4 : return OpCodes.Conv_Ovf_U4;
-                       case Code.Conv_Ovf_I8 : return OpCodes.Conv_Ovf_I8;
-                       case Code.Conv_Ovf_U8 : return OpCodes.Conv_Ovf_U8;
-                       case Code.Refanyval : return OpCodes.Refanyval;
-                       case Code.Ckfinite : return OpCodes.Ckfinite;
-                       case Code.Mkrefany : return OpCodes.Mkrefany;
-                       case Code.Ldtoken : return OpCodes.Ldtoken;
-                       case Code.Conv_U2 : return OpCodes.Conv_U2;
-                       case Code.Conv_U1 : return OpCodes.Conv_U1;
-                       case Code.Conv_I : return OpCodes.Conv_I;
-                       case Code.Conv_Ovf_I : return OpCodes.Conv_Ovf_I;
-                       case Code.Conv_Ovf_U : return OpCodes.Conv_Ovf_U;
-                       case Code.Add_Ovf : return OpCodes.Add_Ovf;
-                       case Code.Add_Ovf_Un : return OpCodes.Add_Ovf_Un;
-                       case Code.Mul_Ovf : return OpCodes.Mul_Ovf;
-                       case Code.Mul_Ovf_Un : return OpCodes.Mul_Ovf_Un;
-                       case Code.Sub_Ovf : return OpCodes.Sub_Ovf;
-                       case Code.Sub_Ovf_Un : return OpCodes.Sub_Ovf_Un;
-                       case Code.Endfinally : return OpCodes.Endfinally;
-                       case Code.Leave : return OpCodes.Leave;
-                       case Code.Leave_S : return OpCodes.Leave_S;
-                       case Code.Stind_I : return OpCodes.Stind_I;
-                       case Code.Conv_U : return OpCodes.Conv_U;
-                       case Code.Arglist : return OpCodes.Arglist;
-                       case Code.Ceq : return OpCodes.Ceq;
-                       case Code.Cgt : return OpCodes.Cgt;
-                       case Code.Cgt_Un : return OpCodes.Cgt_Un;
-                       case Code.Clt : return OpCodes.Clt;
-                       case Code.Clt_Un : return OpCodes.Clt_Un;
-                       case Code.Ldftn : return OpCodes.Ldftn;
-                       case Code.Ldvirtftn : return OpCodes.Ldvirtftn;
-                       case Code.Ldarg : return OpCodes.Ldarg;
-                       case Code.Ldarga : return OpCodes.Ldarga;
-                       case Code.Starg : return OpCodes.Starg;
-                       case Code.Ldloc : return OpCodes.Ldloc;
-                       case Code.Ldloca : return OpCodes.Ldloca;
-                       case Code.Stloc : return OpCodes.Stloc;
-                       case Code.Localloc : return OpCodes.Localloc;
-                       case Code.Endfilter : return OpCodes.Endfilter;
-                       case Code.Unaligned : return OpCodes.Unaligned;
-                       case Code.Volatile : return OpCodes.Volatile;
-                       case Code.Tail : return OpCodes.Tail;
-                       case Code.Initobj : return OpCodes.Initobj;
-                       case Code.Constrained : return OpCodes.Constrained;
-                       case Code.Cpblk : return OpCodes.Cpblk;
-                       case Code.Initblk : return OpCodes.Initblk;
-                       case Code.No : return OpCodes.No;
-                       case Code.Rethrow : return OpCodes.Rethrow;
-                       case Code.Sizeof : return OpCodes.Sizeof;
-                       case Code.Refanytype : return OpCodes.Refanytype;
-                       case Code.Readonly : return OpCodes.Readonly;
-                       default : return OpCodes.Nop;
-                       }
-               }
+                       0xfe << 0 | 0x1e << 8 | (byte) Code.Readonly << 16 | (byte) FlowControl.Next << 24,
+                       (byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs
deleted file mode 100644 (file)
index 938b2b9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// OperandType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum OperandType {
-               InlineBrTarget,
-               InlineField,
-               InlineI,
-               InlineI8,
-               InlineMethod,
-               InlineNone,
-               InlinePhi,
-               InlineR,
-               InlineSig,
-               InlineString,
-               InlineSwitch,
-               InlineTok,
-               InlineType,
-               InlineVar,
-               InlineParam,
-               ShortInlineBrTarget,
-               ShortInlineI,
-               ShortInlineR,
-               ShortInlineVar,
-               ShortInlineParam
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs
deleted file mode 100644 (file)
index ce4068c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Scope.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public class Scope : IScopeProvider, IVariableDefinitionProvider, ICodeVisitable {
-
-               Instruction m_start;
-               Instruction m_end;
-
-               Scope m_parent;
-               ScopeCollection m_scopes;
-
-               VariableDefinitionCollection m_variables;
-
-               public Instruction Start {
-                       get { return m_start; }
-                       set { m_start = value; }
-               }
-
-               public Instruction End {
-                       get { return m_end; }
-                       set { m_end = value; }
-               }
-
-               public Scope Parent {
-                       get { return m_parent; }
-                       set { m_parent = value; }
-               }
-
-               public ScopeCollection Scopes {
-                       get {
-                               if (m_scopes == null)
-                                       m_scopes = new ScopeCollection (this);
-
-                               return m_scopes;
-                       }
-               }
-
-               public VariableDefinitionCollection Variables {
-                       get {
-                               if (m_variables == null)
-                                       m_variables = new VariableDefinitionCollection (this);
-
-                               return m_variables;
-                       }
-               }
-
-               public void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitScope (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs
deleted file mode 100644 (file)
index 6872e70..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ScopeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ScopeCollection : CollectionBase, ICodeVisitable {
-
-               IScopeProvider m_container;
-
-               public Scope this [int index] {
-                       get { return List [index] as Scope; }
-                       set { List [index] = value; }
-               }
-
-               public IScopeProvider Container {
-                       get { return m_container; }
-               }
-
-               public ScopeCollection (IScopeProvider container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (Scope value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (Scope value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (Scope value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, Scope value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (Scope value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is Scope))
-                               throw new ArgumentException ("Must be of type " + typeof (Scope).FullName);
-               }
-
-               public void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitScopeCollection (this);
-               }
-       }
-}
index 81dc110e32b0eb12961e5278eaf9fff9024ae428..189b5f52bb1680d387fc62c8c6278e853ff0e781 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Cil {
 
-       public class SequencePoint {
+       public sealed class SequencePoint {
 
-               Document m_document;
+               Document document;
 
-               int m_startLine;
-               int m_startColumn;
-               int m_endLine;
-               int m_endColumn;
+               int start_line;
+               int start_column;
+               int end_line;
+               int end_column;
 
                public int StartLine {
-                       get { return m_startLine; }
-                       set { m_startLine = value; }
+                       get { return start_line; }
+                       set { start_line = value; }
                }
 
                public int StartColumn {
-                       get { return m_startColumn; }
-                       set { m_startColumn = value; }
+                       get { return start_column; }
+                       set { start_column = value; }
                }
 
                public int EndLine {
-                       get { return m_endLine; }
-                       set { m_endLine = value; }
+                       get { return end_line; }
+                       set { end_line = value; }
                }
 
                public int EndColumn {
-                       get { return m_endColumn; }
-                       set { m_endColumn = value; }
+                       get { return end_column; }
+                       set { end_column = value; }
                }
 
                public Document Document {
-                       get { return m_document; }
-                       set { m_document = value; }
+                       get { return document; }
+                       set { document = value; }
                }
 
                public SequencePoint (Document document)
                {
-                       m_document = document;
-               }
-
-               public SequencePoint (Document doc, int startLine, int startCol, int endLine, int endCol) : this (doc)
-               {
-                       m_startLine = startLine;
-                       m_startColumn = startCol;
-                       m_endLine = endLine;
-                       m_endColumn = endCol;
+                       this.document = document;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs
deleted file mode 100644 (file)
index edab8aa..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// StackBehaviour.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       public enum StackBehaviour {
-               Pop0,
-               Pop1,
-               Pop1_pop1,
-               Popi,
-               Popi_pop1,
-               Popi_popi,
-               Popi_popi8,
-               Popi_popi_popi,
-               Popi_popr4,
-               Popi_popr8,
-               Popref,
-               Popref_pop1,
-               Popref_popi,
-               Popref_popi_popi,
-               Popref_popi_popi8,
-               Popref_popi_popr4,
-               Popref_popi_popr8,
-               Popref_popi_popref,
-               PopAll,
-               Push0,
-               Push1,
-               Push1_push1,
-               Pushi,
-               Pushi8,
-               Pushr4,
-               Pushr8,
-               Pushref,
-               Varpop,
-               Varpush
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SymbolStoreHelper.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SymbolStoreHelper.cs
deleted file mode 100644 (file)
index 5abf3a2..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// SymbolStoreHelper.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using SR = System.Reflection;
-
-       sealed class SymbolStoreHelper {
-
-               static ISymbolStoreFactory s_factory;
-
-               SymbolStoreHelper ()
-               {
-               }
-
-               public static ISymbolReader GetReader (ModuleDefinition module)
-               {
-                       InitFactory ();
-
-                       return s_factory.CreateReader (module, module.Image.FileInformation.FullName);
-               }
-
-               public static ISymbolWriter GetWriter (ModuleDefinition module, string assemblyFileName)
-               {
-                       InitFactory ();
-
-                       return s_factory.CreateWriter (module, assemblyFileName);
-               }
-
-               static void InitFactory ()
-               {
-                       if (s_factory != null)
-                               return;
-
-                       string assembly_name;
-                       string type_name = GetSymbolSupportType (out assembly_name);
-
-                       Type factoryType = Type.GetType (type_name + ", " + assembly_name, false);
-                       if (factoryType == null) {
-                               try {
-                                       SR.Assembly assembly = SR.Assembly.LoadWithPartialName (assembly_name);
-                                       factoryType = assembly.GetType (type_name);
-                               } catch {}
-                       }
-
-                       if (factoryType == null)
-                               throw new NotSupportedException ();
-
-                       s_factory = (ISymbolStoreFactory) Activator.CreateInstance (factoryType);
-               }
-
-               static string GetSymbolSupportType (out string assembly)
-               {
-                       string kind = GetSymbolKind ();
-                       assembly = "Mono.Cecil." + kind;
-                       return string.Format (assembly + "." + kind + "Factory");
-               }
-
-               static string GetSymbolKind ()
-               {
-                       return OnMono () ? "Mdb" : "Pdb";
-               }
-
-               static bool OnMono ()
-               {
-                       return Type.GetType ("Mono.Runtime") != null;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs
new file mode 100644 (file)
index 0000000..ba2e694
--- /dev/null
@@ -0,0 +1,272 @@
+//
+// Symbols.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using SR = System.Reflection;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil.Cil {
+
+       [StructLayout (LayoutKind.Sequential)]
+       public struct ImageDebugDirectory {
+               public int Characteristics;
+               public int TimeDateStamp;
+               public short MajorVersion;
+               public short MinorVersion;
+               public int Type;
+               public int SizeOfData;
+               public int AddressOfRawData;
+               public int PointerToRawData;
+       }
+
+       public sealed class Scope : IVariableDefinitionProvider {
+
+               Instruction start;
+               Instruction end;
+
+               Collection<Scope> scopes;
+               Collection<VariableDefinition> variables;
+
+               public Instruction Start {
+                       get { return start; }
+                       set { start = value; }
+               }
+
+               public Instruction End {
+                       get { return end; }
+                       set { end = value; }
+               }
+
+               public bool HasScopes {
+                       get { return !scopes.IsNullOrEmpty (); }
+               }
+
+               public Collection<Scope> Scopes {
+                       get {
+                               if (scopes == null)
+                                       scopes = new Collection<Scope> ();
+
+                               return scopes;
+                       }
+               }
+
+               public bool HasVariables {
+                       get { return !variables.IsNullOrEmpty (); }
+               }
+
+               public Collection<VariableDefinition> Variables {
+                       get {
+                               if (variables == null)
+                                       variables = new Collection<VariableDefinition> ();
+
+                               return variables;
+                       }
+               }
+       }
+
+       public struct InstructionSymbol {
+
+               public readonly int Offset;
+               public readonly SequencePoint SequencePoint;
+
+               public InstructionSymbol (int offset, SequencePoint sequencePoint)
+               {
+                       this.Offset = offset;
+                       this.SequencePoint = sequencePoint;
+               }
+       }
+
+       public sealed class MethodSymbols {
+
+               internal int code_size;
+               internal string method_name;
+               internal MetadataToken method_token;
+               internal MetadataToken local_var_token;
+               internal Collection<VariableDefinition> variables;
+               internal Collection<InstructionSymbol> instructions;
+
+               public bool HasVariables {
+                       get { return !variables.IsNullOrEmpty (); }
+               }
+
+               public Collection<VariableDefinition> Variables {
+                       get {
+                               if (variables == null)
+                                       variables = new Collection<VariableDefinition> ();
+
+                               return variables;
+                       }
+               }
+
+               public Collection<InstructionSymbol> Instructions {
+                       get {
+                               if (instructions == null)
+                                       instructions = new Collection<InstructionSymbol> ();
+
+                               return instructions;
+                       }
+               }
+
+               public int CodeSize {
+                       get { return code_size; }
+               }
+
+               public string MethodName {
+                       get { return method_name; }
+               }
+
+               public MetadataToken MethodToken {
+                       get { return method_token; }
+               }
+
+               public MetadataToken LocalVarToken {
+                       get { return local_var_token; }
+               }
+
+               public MethodSymbols (string methodName)
+               {
+                       this.method_name = methodName;
+               }
+       }
+
+       public delegate Instruction InstructionMapper (int offset);
+
+       public interface ISymbolReader : IDisposable {
+
+               bool ProcessDebugHeader (ImageDebugDirectory directory, byte [] header);
+               void Read (MethodBody body, InstructionMapper mapper);
+               void Read (MethodSymbols symbols);
+       }
+
+       public interface ISymbolReaderProvider {
+
+               ISymbolReader GetSymbolReader (ModuleDefinition module, string fileName);
+               ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream);
+       }
+
+       static class SymbolProvider {
+
+               static readonly string symbol_kind = Type.GetType ("Mono.Runtime") != null ? "Mdb" : "Pdb";
+
+               static SR.AssemblyName GetPlatformSymbolAssemblyName ()
+               {
+                       var cecil_name = typeof (SymbolProvider).Assembly.GetName ();
+
+                       var name = new SR.AssemblyName {
+                               Name = "Mono.Cecil." + symbol_kind,
+                               Version = cecil_name.Version,
+                       };
+
+                       name.SetPublicKeyToken (cecil_name.GetPublicKeyToken ());
+
+                       return name;
+               }
+
+               static Type GetPlatformType (string fullname)
+               {
+                       var type = Type.GetType (fullname);
+                       if (type != null)
+                               return type;
+
+                       var assembly_name = GetPlatformSymbolAssemblyName ();
+
+                       type = Type.GetType (fullname + ", " + assembly_name.FullName);
+                       if (type != null)
+                               return type;
+
+                       try {
+                               var assembly = SR.Assembly.Load (assembly_name);
+                               if (assembly != null)
+                                       return assembly.GetType (fullname);
+                       } catch (FileNotFoundException) {
+#if !CF
+                       } catch (FileLoadException) {
+#endif
+                       }
+
+                       return null;
+               }
+
+               static ISymbolReaderProvider reader_provider;
+
+               public static ISymbolReaderProvider GetPlatformReaderProvider ()
+               {
+                       if (reader_provider != null)
+                               return reader_provider;
+
+                       var type = GetPlatformType (GetProviderTypeName ("ReaderProvider"));
+                       if (type == null)
+                               return null;
+
+                       return reader_provider = (ISymbolReaderProvider) Activator.CreateInstance (type);
+               }
+
+               static string GetProviderTypeName (string name)
+               {
+                       return "Mono.Cecil." + symbol_kind + "." + symbol_kind + name;
+               }
+
+#if !READ_ONLY
+
+               static ISymbolWriterProvider writer_provider;
+
+               public static ISymbolWriterProvider GetPlatformWriterProvider ()
+               {
+                       if (writer_provider != null)
+                               return writer_provider;
+
+                       var type = GetPlatformType (GetProviderTypeName ("WriterProvider"));
+                       if (type == null)
+                               return null;
+
+                       return writer_provider = (ISymbolWriterProvider) Activator.CreateInstance (type);
+               }
+
+#endif
+       }
+
+#if !READ_ONLY
+
+       public interface ISymbolWriter : IDisposable {
+
+               bool GetDebugHeader (out ImageDebugDirectory directory, out byte [] header);
+               void Write (MethodBody body);
+               void Write (MethodSymbols symbols);
+       }
+
+       public interface ISymbolWriterProvider {
+
+               ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName);
+               ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream);
+       }
+
+#endif
+}
index 6ce68af03d81d6226d0ec826d32cfd5a48a28009..690543e975d88e9fe697cfb76bb0fc1206a514ea 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,31 +30,23 @@ namespace Mono.Cecil.Cil {
 
        public sealed class VariableDefinition : VariableReference {
 
-               MethodDefinition m_method;
-
-               public MethodDefinition Method {
-                       get { return m_method; }
-                       set { m_method = value; }
+               public bool IsPinned {
+                       get { return variable_type.IsPinned; }
                }
 
-               public VariableDefinition (TypeReference variableType) : base (variableType)
+               public VariableDefinition (TypeReference variableType)
+                       : base (variableType)
                {
                }
 
-               public VariableDefinition (string name, int index, MethodDefinition method, TypeReference variableType) :
-                       base (name, index, variableType)
+               public VariableDefinition (string name, TypeReference variableType)
+                       : base (name, variableType)
                {
-                       m_method = method;
                }
 
                public override VariableDefinition Resolve ()
                {
                        return this;
                }
-
-               public override void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitVariableDefinition (this);
-               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs
deleted file mode 100644 (file)
index 3bd8446..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// VariableDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class VariableDefinitionCollection : CollectionBase, ICodeVisitable {
-
-               IVariableDefinitionProvider m_container;
-
-               public VariableDefinition this [int index] {
-                       get { return List [index] as VariableDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public IVariableDefinitionProvider Container {
-                       get { return m_container; }
-               }
-
-               public VariableDefinitionCollection (IVariableDefinitionProvider container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (VariableDefinition value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (VariableDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (VariableDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, VariableDefinition value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (VariableDefinition value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is VariableDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (VariableDefinition).FullName);
-               }
-
-               public void Accept (ICodeVisitor visitor)
-               {
-                       visitor.VisitVariableDefinitionCollection (this);
-               }
-       }
-}
index 06b30416f6098eb5bb1eeb368daf4839e7dbc040..545384550034fb7c29af94e7b4bc4582cfcf100e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Cil {
 
-       public abstract class VariableReference : ICodeVisitable {
+       public abstract class VariableReference {
 
-               string m_name;
-               int m_index;
-               TypeReference m_variableType;
+               string name;
+               internal int index = -1;
+               protected TypeReference variable_type;
 
                public string Name {
-                       get { return m_name; }
-                       set { m_name = value; }
+                       get { return name; }
+                       set { name = value; }
                }
 
-               public int Index {
-                       get { return m_index; }
-                       set { m_index = value; }
+               public TypeReference VariableType {
+                       get { return variable_type; }
+                       set { variable_type = value; }
                }
 
-               public TypeReference VariableType {
-                       get { return m_variableType; }
-                       set { m_variableType = value; }
+               public int Index {
+                       get { return index; }
                }
 
-               public VariableReference (TypeReference variableType)
+               internal VariableReference (TypeReference variable_type)
+                       : this (string.Empty, variable_type)
                {
-                       m_variableType = variableType;
                }
 
-               public VariableReference (string name, int index, TypeReference variableType) : this (variableType)
+               internal VariableReference (string name, TypeReference variable_type)
                {
-                       m_name = name;
-                       m_index = index;
+                       this.name = name;
+                       this.variable_type = variable_type;
                }
 
                public abstract VariableDefinition Resolve ();
 
                public override string ToString ()
                {
-                       if (m_name != null && m_name.Length > 0)
-                               return m_name;
+                       if (!string.IsNullOrEmpty (name))
+                               return name;
 
-                       return string.Concat ("V_", m_index);
-               }
+                       if (index >= 0)
+                               return "V_" + index;
 
-               public abstract void Accept (ICodeVisitor visitor);
+                       return string.Empty;
+               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs
deleted file mode 100644 (file)
index 72da5c2..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// AssemblyTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class AssemblyTable : IMetadataTable {
-
-               public const int RId = 0x20;
-
-               RowCollection m_rows;
-
-               public AssemblyRow this [int index] {
-                       get { return m_rows [index] as AssemblyRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyRow : IMetadataRow {
-
-               public AssemblyHashAlgorithm HashAlgId;
-               public ushort MajorVersion;
-               public ushort MinorVersion;
-               public ushort BuildNumber;
-               public ushort RevisionNumber;
-               public AssemblyFlags Flags;
-               public uint PublicKey;
-               public uint Name;
-               public uint Culture;
-
-               internal AssemblyRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs
deleted file mode 100644 (file)
index b6b193b..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// AssemblyOSTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class AssemblyOSTable : IMetadataTable {
-
-               public const int RId = 0x22;
-
-               RowCollection m_rows;
-
-               public AssemblyOSRow this [int index] {
-                       get { return m_rows [index] as AssemblyOSRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyOSTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyOSTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyOSRow : IMetadataRow {
-
-               public uint OSPlatformID;
-               public uint OSMajorVersion;
-               public uint OSMinorVersion;
-
-               internal AssemblyOSRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyOSRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs
deleted file mode 100644 (file)
index ca7c7a9..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// AssemblyProcessorTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class AssemblyProcessorTable : IMetadataTable {
-
-               public const int RId = 0x21;
-
-               RowCollection m_rows;
-
-               public AssemblyProcessorRow this [int index] {
-                       get { return m_rows [index] as AssemblyProcessorRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyProcessorTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyProcessorTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyProcessorRow : IMetadataRow {
-
-               public uint Processor;
-
-               internal AssemblyProcessorRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyProcessorRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs
deleted file mode 100644 (file)
index 06b5006..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// AssemblyRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class AssemblyRefTable : IMetadataTable {
-
-               public const int RId = 0x23;
-
-               RowCollection m_rows;
-
-               public AssemblyRefRow this [int index] {
-                       get { return m_rows [index] as AssemblyRefRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyRefTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyRefRow : IMetadataRow {
-
-               public ushort MajorVersion;
-               public ushort MinorVersion;
-               public ushort BuildNumber;
-               public ushort RevisionNumber;
-               public AssemblyFlags Flags;
-               public uint PublicKeyOrToken;
-               public uint Name;
-               public uint Culture;
-               public uint HashValue;
-
-               internal AssemblyRefRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs
deleted file mode 100644 (file)
index db794e9..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// AssemblyRefOSTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class AssemblyRefOSTable : IMetadataTable {
-
-               public const int RId = 0x25;
-
-               RowCollection m_rows;
-
-               public AssemblyRefOSRow this [int index] {
-                       get { return m_rows [index] as AssemblyRefOSRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyRefOSTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefOSTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyRefOSRow : IMetadataRow {
-
-               public uint OSPlatformID;
-               public uint OSMajorVersion;
-               public uint OSMinorVersion;
-               public uint AssemblyRef;
-
-               internal AssemblyRefOSRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefOSRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
deleted file mode 100644 (file)
index 80cef8b..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// AssemblyRefProcessorTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class AssemblyRefProcessorTable : IMetadataTable {
-
-               public const int RId = 0x24;
-
-               RowCollection m_rows;
-
-               public AssemblyRefProcessorRow this [int index] {
-                       get { return m_rows [index] as AssemblyRefProcessorRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal AssemblyRefProcessorTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefProcessorTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class AssemblyRefProcessorRow : IMetadataRow {
-
-               public uint Processor;
-               public uint AssemblyRef;
-
-               internal AssemblyRefProcessorRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitAssemblyRefProcessorRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
deleted file mode 100644 (file)
index fd6ac0f..0000000
+++ /dev/null
@@ -1,448 +0,0 @@
-//
-// BaseMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public abstract class BaseMetadataVisitor : IMetadataVisitor {
-
-               public virtual void VisitMetadataRoot (MetadataRoot root)
-               {
-               }
-
-               public virtual void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-               {
-               }
-
-               public virtual void VisitMetadataStreamCollection (MetadataStreamCollection streams)
-               {
-               }
-
-               public virtual void VisitMetadataStream (MetadataStream stream)
-               {
-               }
-
-               public virtual void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
-               {
-               }
-
-               public virtual void VisitGuidHeap (GuidHeap heap)
-               {
-               }
-
-               public virtual void VisitStringsHeap (StringsHeap heap)
-               {
-               }
-
-               public virtual void VisitTablesHeap (TablesHeap heap)
-               {
-               }
-
-               public virtual void VisitBlobHeap (BlobHeap heap)
-               {
-               }
-
-               public virtual void VisitUserStringsHeap (UserStringsHeap heap)
-               {
-               }
-
-               public virtual void TerminateMetadataRoot (MetadataRoot root)
-               {
-               }
-       }
-
-       public abstract class BaseMetadataTableVisitor : IMetadataTableVisitor {
-
-               public virtual void VisitTableCollection (TableCollection coll)
-               {
-               }
-
-               public virtual void VisitAssemblyTable (AssemblyTable table)
-               {
-               }
-
-               public virtual void VisitAssemblyOSTable (AssemblyOSTable table)
-               {
-               }
-
-               public virtual void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
-               {
-               }
-
-               public virtual void VisitAssemblyRefTable (AssemblyRefTable table)
-               {
-               }
-
-               public virtual void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
-               {
-               }
-
-               public virtual void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
-               {
-               }
-
-               public virtual void VisitClassLayoutTable (ClassLayoutTable table)
-               {
-               }
-
-               public virtual void VisitConstantTable (ConstantTable table)
-               {
-               }
-
-               public virtual void VisitCustomAttributeTable (CustomAttributeTable table)
-               {
-               }
-
-               public virtual void VisitDeclSecurityTable (DeclSecurityTable table)
-               {
-               }
-
-               public virtual void VisitEventTable (EventTable table)
-               {
-               }
-
-               public virtual void VisitEventMapTable (EventMapTable table)
-               {
-               }
-
-               public virtual void VisitEventPtrTable (EventPtrTable table)
-               {
-               }
-
-               public virtual void VisitExportedTypeTable (ExportedTypeTable table)
-               {
-               }
-
-               public virtual void VisitFieldTable (FieldTable table)
-               {
-               }
-
-               public virtual void VisitFieldLayoutTable (FieldLayoutTable table)
-               {
-               }
-
-               public virtual void VisitFieldMarshalTable (FieldMarshalTable table)
-               {
-               }
-
-               public virtual void VisitFieldPtrTable (FieldPtrTable table)
-               {
-               }
-
-               public virtual void VisitFieldRVATable (FieldRVATable table)
-               {
-               }
-
-               public virtual void VisitFileTable (FileTable table)
-               {
-               }
-
-               public virtual void VisitGenericParamTable (GenericParamTable table)
-               {
-               }
-
-               public virtual void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
-               {
-               }
-
-               public virtual void VisitImplMapTable (ImplMapTable table)
-               {
-               }
-
-               public virtual void VisitInterfaceImplTable (InterfaceImplTable table)
-               {
-               }
-
-               public virtual void VisitManifestResourceTable (ManifestResourceTable table)
-               {
-               }
-
-               public virtual void VisitMemberRefTable (MemberRefTable table)
-               {
-               }
-
-               public virtual void VisitMethodTable (MethodTable table)
-               {
-               }
-
-               public virtual void VisitMethodImplTable (MethodImplTable table)
-               {
-               }
-
-               public virtual void VisitMethodPtrTable (MethodPtrTable table)
-               {
-               }
-
-               public virtual void VisitMethodSemanticsTable (MethodSemanticsTable table)
-               {
-               }
-
-               public virtual void VisitMethodSpecTable (MethodSpecTable table)
-               {
-               }
-
-               public virtual void VisitModuleTable (ModuleTable table)
-               {
-               }
-
-               public virtual void VisitModuleRefTable (ModuleRefTable table)
-               {
-               }
-
-               public virtual void VisitNestedClassTable (NestedClassTable table)
-               {
-               }
-
-               public virtual void VisitParamTable (ParamTable table)
-               {
-               }
-
-               public virtual void VisitParamPtrTable (ParamPtrTable table)
-               {
-               }
-
-               public virtual void VisitPropertyTable (PropertyTable table)
-               {
-               }
-
-               public virtual void VisitPropertyMapTable (PropertyMapTable table)
-               {
-               }
-
-               public virtual void VisitPropertyPtrTable (PropertyPtrTable table)
-               {
-               }
-
-               public virtual void VisitStandAloneSigTable (StandAloneSigTable table)
-               {
-               }
-
-               public virtual void VisitTypeDefTable (TypeDefTable table)
-               {
-               }
-
-               public virtual void VisitTypeRefTable (TypeRefTable table)
-               {
-               }
-
-               public virtual void VisitTypeSpecTable (TypeSpecTable table)
-               {
-               }
-
-               public virtual void TerminateTableCollection (TableCollection coll)
-               {
-               }
-
-               public abstract IMetadataRowVisitor GetRowVisitor();
-       }
-
-       public abstract class BaseMetadataRowVisitor : IMetadataRowVisitor {
-
-               public virtual void VisitRowCollection (RowCollection coll)
-               {
-               }
-
-               public virtual void VisitAssemblyRow (AssemblyRow row)
-               {
-               }
-
-               public virtual void VisitAssemblyOSRow (AssemblyOSRow row)
-               {
-               }
-
-               public virtual void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
-               {
-               }
-
-               public virtual void VisitAssemblyRefRow (AssemblyRefRow row)
-               {
-               }
-
-               public virtual void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
-               {
-               }
-
-               public virtual void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
-               {
-               }
-
-               public virtual void VisitClassLayoutRow (ClassLayoutRow row)
-               {
-               }
-
-               public virtual void VisitConstantRow (ConstantRow row)
-               {
-               }
-
-               public virtual void VisitCustomAttributeRow (CustomAttributeRow row)
-               {
-               }
-
-               public virtual void VisitDeclSecurityRow (DeclSecurityRow row)
-               {
-               }
-
-               public virtual void VisitEventRow (EventRow row)
-               {
-               }
-
-               public virtual void VisitEventMapRow (EventMapRow row)
-               {
-               }
-
-               public virtual void VisitEventPtrRow (EventPtrRow row)
-               {
-               }
-
-               public virtual void VisitExportedTypeRow (ExportedTypeRow row)
-               {
-               }
-
-               public virtual void VisitFieldRow (FieldRow row)
-               {
-               }
-
-               public virtual void VisitFieldLayoutRow (FieldLayoutRow row)
-               {
-               }
-
-               public virtual void VisitFieldMarshalRow (FieldMarshalRow row)
-               {
-               }
-
-               public virtual void VisitFieldPtrRow (FieldPtrRow row)
-               {
-               }
-
-               public virtual void VisitFieldRVARow (FieldRVARow row)
-               {
-               }
-
-               public virtual void VisitFileRow (FileRow row)
-               {
-               }
-
-               public virtual void VisitGenericParamRow (GenericParamRow row)
-               {
-               }
-
-               public virtual void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
-               {
-               }
-
-               public virtual void VisitImplMapRow (ImplMapRow row)
-               {
-               }
-
-               public virtual void VisitInterfaceImplRow (InterfaceImplRow row)
-               {
-               }
-
-               public virtual void VisitManifestResourceRow (ManifestResourceRow row)
-               {
-               }
-
-               public virtual void VisitMemberRefRow (MemberRefRow row)
-               {
-               }
-
-               public virtual void VisitMethodRow (MethodRow row)
-               {
-               }
-
-               public virtual void VisitMethodImplRow (MethodImplRow row)
-               {
-               }
-
-               public virtual void VisitMethodPtrRow (MethodPtrRow row)
-               {
-               }
-
-               public virtual void VisitMethodSemanticsRow (MethodSemanticsRow row)
-               {
-               }
-
-               public virtual void VisitMethodSpecRow (MethodSpecRow row)
-               {
-               }
-
-               public virtual void VisitModuleRow (ModuleRow row)
-               {
-               }
-
-               public virtual void VisitModuleRefRow (ModuleRefRow row)
-               {
-               }
-
-               public virtual void VisitNestedClassRow (NestedClassRow row)
-               {
-               }
-
-               public virtual void VisitParamRow (ParamRow row)
-               {
-               }
-
-               public virtual void VisitParamPtrRow (ParamPtrRow row)
-               {
-               }
-
-               public virtual void VisitPropertyRow (PropertyRow row)
-               {
-               }
-
-               public virtual void VisitPropertyMapRow (PropertyMapRow row)
-               {
-               }
-
-               public virtual void VisitPropertyPtrRow (PropertyPtrRow row)
-               {
-               }
-
-               public virtual void VisitStandAloneSigRow (StandAloneSigRow row)
-               {
-               }
-
-               public virtual void VisitTypeDefRow (TypeDefRow row)
-               {
-               }
-
-               public virtual void VisitTypeRefRow (TypeRefRow row)
-               {
-               }
-
-               public virtual void VisitTypeSpecRow (TypeSpecRow row)
-               {
-               }
-
-               public virtual void TerminateRowCollection (RowCollection coll)
-               {
-               }
-       }
-}
index 7c6d81bf3a7745e4981e640ea1b8790489f4f961..81c775e01840468aece9265b229483d12d52a477 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
+using System;
 
-       public class BlobHeap : MetadataHeap {
+using Mono.Cecil.PE;
 
-               internal BlobHeap (MetadataStream stream) : base (stream, MetadataStream.Blob)
-               {
-               }
+namespace Mono.Cecil.Metadata {
 
-               public byte [] Read (uint index)
-               {
-                       return ReadBytesFromStream (index);
-               }
+       sealed class BlobHeap : Heap {
 
-               public BinaryReader GetReader (uint index)
+               public BlobHeap (Section section, uint start, uint size)
+                       : base (section, start, size)
                {
-                       return new BinaryReader (new MemoryStream (Read (index)));
                }
 
-               public override void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitBlobHeap (this);
-               }
-       }
-
-       class ByteArrayEqualityComparer : IHashCodeProvider, IComparer {
-
-               public static readonly ByteArrayEqualityComparer Instance = new ByteArrayEqualityComparer ();
-
-               public int GetHashCode (object obj)
+               public byte [] Read (uint index)
                {
-                       byte [] array = (byte []) obj;
+                       if (index == 0 || index > Size - 1)
+                               return Empty<byte>.Array;
 
-                       int hash = 0;
-                       for (int i = 0; i < array.Length; i++)
-                               hash = (hash * 37) ^ array [i];
-
-                       return hash;
-               }
-
-               public int Compare (object a, object b)
-               {
-                       byte [] x = (byte []) a;
-                       byte [] y = (byte []) b;
+                       var data = Section.Data;
 
-                       if (x == null || y == null)
-                               return x == y ? 0 : 1;
+                       int position = (int) (index + Offset);
+                       int length = (int) data.ReadCompressedUInt32 (ref position);
 
-                       if (x.Length != y.Length)
-                               return 1;
+                       var buffer = new byte [length];
 
-                       for (int i = 0; i < x.Length; i++)
-                               if (x [i] != y [i])
-                                       return 1;
+                       Buffer.BlockCopy (data, position, buffer, 0, length);
 
-                       return 0;
+                       return buffer;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs
new file mode 100644 (file)
index 0000000..e8759d7
--- /dev/null
@@ -0,0 +1,373 @@
+//
+// TableHeapBuffer.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+
+#if !READ_ONLY
+
+namespace Mono.Cecil.Metadata {
+
+       sealed class TableHeapBuffer : HeapBuffer {
+
+               readonly ModuleDefinition module;
+               readonly MetadataBuilder metadata;
+
+               internal MetadataTable [] tables = new MetadataTable [45];
+
+               bool large_string;
+               bool large_blob;
+               readonly int [] coded_index_sizes = new int [13];
+               readonly Func<Table, int> counter;
+
+               public override bool IsEmpty {
+                       get { return false; }
+               }
+
+               public TableHeapBuffer (ModuleDefinition module, MetadataBuilder metadata)
+                       : base (24)
+               {
+                       this.module = module;
+                       this.metadata = metadata;
+                       this.counter = GetTableLength;
+               }
+
+               int GetTableLength (Table table)
+               {
+                       var md_table = tables [(int) table];
+                       return md_table != null ? md_table.Length : 0;
+               }
+
+               public TTable GetTable<TTable> (Table table) where TTable : MetadataTable, new ()
+               {
+                       var md_table = (TTable) tables [(int) table];
+                       if (md_table != null)
+                               return md_table;
+
+                       md_table = new TTable ();
+                       tables [(int) table] = md_table;
+                       return md_table;
+               }
+
+               public void WriteBySize (uint value, int size)
+               {
+                       if (size == 4)
+                               WriteUInt32 (value);
+                       else
+                               WriteUInt16 ((ushort) value);
+               }
+
+               public void WriteBySize (uint value, bool large)
+               {
+                       if (large)
+                               WriteUInt32 (value);
+                       else
+                               WriteUInt16 ((ushort) value);
+               }
+
+               public void WriteString (uint @string)
+               {
+                       WriteBySize (@string, large_string);
+               }
+
+               public void WriteBlob (uint blob)
+               {
+                       WriteBySize (blob, large_blob);
+               }
+
+               public void WriteRID (uint rid, Table table)
+               {
+                       var md_table = tables [(int) table];
+                       WriteBySize (rid, md_table == null ? false : md_table.IsLarge);
+               }
+
+               int GetCodedIndexSize (CodedIndex coded_index)
+               {
+                       var index = (int) coded_index;
+                       var size = coded_index_sizes [index];
+                       if (size != 0)
+                               return size;
+
+                       return coded_index_sizes [index] = coded_index.GetSize (counter);
+               }
+
+               public void WriteCodedRID (uint rid, CodedIndex coded_index)
+               {
+                       WriteBySize (rid, GetCodedIndexSize (coded_index));
+               }
+
+               public void WriteTableHeap ()
+               {
+                       WriteUInt32 (0);                                        // Reserved
+                       WriteByte (GetTableHeapVersion ());     // MajorVersion
+                       WriteByte (0);                                          // MinorVersion
+                       WriteByte (GetHeapSizes ());            // HeapSizes
+                       WriteByte (10);                                         // Reserved2
+                       WriteUInt64 (GetValid ());                      // Valid
+                       WriteUInt64 (0x0016003301fa00);         // Sorted
+
+                       WriteRowCount ();
+                       WriteTables ();
+               }
+
+               void WriteRowCount ()
+               {
+                       for (int i = 0; i < tables.Length; i++) {
+                               var table = tables [i];
+                               if (table == null || table.Length == 0)
+                                       continue;
+
+                               WriteUInt32 ((uint) table.Length);
+                       }
+               }
+
+               void WriteTables ()
+               {
+                       for (int i = 0; i < tables.Length; i++) {
+                               var table = tables [i];
+                               if (table == null || table.Length == 0)
+                                       continue;
+
+                               table.Write (this);
+                       }
+               }
+
+               ulong GetValid ()
+               {
+                       ulong valid = 0;
+
+                       for (int i = 0; i < tables.Length; i++) {
+                               var table = tables [i];
+                               if (table == null || table.Length == 0)
+                                       continue;
+
+                               table.Sort ();
+                               valid |= (1UL << i);
+                       }
+
+                       return valid;
+               }
+
+               byte GetHeapSizes ()
+               {
+                       byte heap_sizes = 0;
+
+                       if (metadata.string_heap.IsLarge) {
+                               large_string = true;
+                               heap_sizes |= 0x01;
+                       }
+
+                       if (metadata.blob_heap.IsLarge) {
+                               large_blob = true;
+                               heap_sizes |= 0x04;
+                       }
+
+                       return heap_sizes;
+               }
+
+               byte GetTableHeapVersion ()
+               {
+                       switch (module.Runtime) {
+                       case TargetRuntime.Net_1_0:
+                       case TargetRuntime.Net_1_1:
+                               return 1;
+                       default:
+                               return 2;
+                       }
+               }
+
+               public void FixupData (RVA data_rva)
+               {
+                       var table = GetTable<FieldRVATable> (Table.FieldRVA);
+                       if (table.length == 0)
+                               return;
+
+                       var field_idx_size = GetTable<FieldTable> (Table.Field).IsLarge ? 4 : 2;
+                       var previous = this.position;
+
+                       base.position = table.position;
+                       for (int i = 0; i < table.length; i++) {
+                               var rva = ReadUInt32 ();
+                               base.position -= 4;
+                               WriteUInt32 (rva + data_rva);
+                               base.position += field_idx_size;
+                       }
+
+                       base.position = previous;
+               }
+       }
+
+       sealed class ResourceBuffer : ByteBuffer {
+
+               public ResourceBuffer ()
+                       : base (0)
+               {
+               }
+
+               public uint AddResource (byte [] resource)
+               {
+                       var offset = (uint) this.position;
+                       WriteInt32 (resource.Length);
+                       WriteBytes (resource);
+                       return offset;
+               }
+       }
+
+       sealed class DataBuffer : ByteBuffer {
+
+               public DataBuffer ()
+                       : base (0)
+               {
+               }
+
+               public RVA AddData (byte [] data)
+               {
+                       var rva = (RVA) position;
+                       WriteBytes (data);
+                       return rva;
+               }
+       }
+
+       abstract class HeapBuffer : ByteBuffer {
+
+               public bool IsLarge {
+                       get { return base.length > 65536; }
+               }
+
+               public abstract bool IsEmpty { get; }
+
+               protected HeapBuffer (int length)
+                       : base (length)
+               {
+               }
+       }
+
+       class StringHeapBuffer : HeapBuffer {
+
+               readonly Dictionary<string, uint> strings = new Dictionary<string, uint> ();
+
+               public sealed override bool IsEmpty {
+                       get { return length <= 1; }
+               }
+
+               public StringHeapBuffer ()
+                       : base (1)
+               {
+                       WriteByte (0);
+               }
+
+               public uint GetStringIndex (string @string)
+               {
+                       uint index;
+                       if (strings.TryGetValue (@string, out index))
+                               return index;
+
+                       index = (uint) base.position;
+                       WriteString (@string);
+                       strings.Add (@string, index);
+                       return index;
+               }
+
+               protected virtual void WriteString (string @string)
+               {
+                       WriteBytes (Encoding.UTF8.GetBytes (@string));
+                       WriteByte (0);
+               }
+       }
+
+       sealed class BlobHeapBuffer : HeapBuffer {
+
+               readonly Dictionary<ByteBuffer, uint> blobs = new Dictionary<ByteBuffer, uint> (new ByteBufferEqualityComparer ());
+
+               public override bool IsEmpty {
+                       get { return length <= 1; }
+               }
+
+               public BlobHeapBuffer ()
+                       : base (1)
+               {
+                       WriteByte (0);
+               }
+
+               public uint GetBlobIndex (ByteBuffer blob)
+               {
+                       uint index;
+                       if (blobs.TryGetValue (blob, out index))
+                               return index;
+
+                       index = (uint) base.position;
+                       WriteBlob (blob);
+                       blobs.Add (blob, index);
+                       return index;
+               }
+
+               void WriteBlob (ByteBuffer blob)
+               {
+                       WriteCompressedUInt32 ((uint) blob.length);
+                       WriteBytes (blob);
+               }
+       }
+
+       sealed class UserStringHeapBuffer : StringHeapBuffer {
+
+               protected override void WriteString (string @string)
+               {
+                       WriteCompressedUInt32 ((uint) @string.Length * 2 + 1);
+
+                       byte special = 0;
+
+                       for (int i = 0; i < @string.Length; i++) {
+                               var @char = @string [i];
+                               WriteUInt16 (@char);
+
+                               if (special == 1)
+                                       continue;
+
+                               if (@char < 0x20 || @char > 0x7e) {
+                                       if (@char > 0x7e
+                                               || (@char >= 0x01 && @char <= 0x08)
+                                               || (@char >= 0x0e && @char <= 0x1f)
+                                               || @char == 0x27
+                                               || @char == 0x2d) {
+
+                                               special = 1;
+                                       }
+                               }
+                       }
+
+                       WriteByte (special);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs
deleted file mode 100644 (file)
index cb83be4..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ClassLayoutTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class ClassLayoutTable : IMetadataTable {
-
-               public const int RId = 0x0f;
-
-               RowCollection m_rows;
-
-               public ClassLayoutRow this [int index] {
-                       get { return m_rows [index] as ClassLayoutRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ClassLayoutTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitClassLayoutTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ClassLayoutRow : IMetadataRow {
-
-               public ushort PackingSize;
-               public uint ClassSize;
-               public uint Parent;
-
-               internal ClassLayoutRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitClassLayoutRow (this);
-               }
-       }
-}
index 2cf5578258a1cd0efa6a88e8293f66b539462146..62677263d4112001565c3770bac3e05340e2c2b4 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Mar 20 16:02:16 +0100 2007
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,7 +28,7 @@
 
 namespace Mono.Cecil.Metadata {
 
-       public enum CodedIndex {
+       enum CodedIndex {
                TypeDefOrRef,
                HasConstant,
                HasCustomAttribute,
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs
deleted file mode 100644 (file)
index 3ca867d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ConstantTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class ConstantTable : IMetadataTable {
-
-               public const int RId = 0x0b;
-
-               RowCollection m_rows;
-
-               public ConstantRow this [int index] {
-                       get { return m_rows [index] as ConstantRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ConstantTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitConstantTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ConstantRow : IMetadataRow {
-
-               public ElementType Type;
-               public MetadataToken Parent;
-               public uint Value;
-
-               internal ConstantRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitConstantRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CultureUtils.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CultureUtils.cs
deleted file mode 100644 (file)
index 24c319c..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// CultureUtils.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.Globalization;
-
-       sealed class CultureUtils {
-
-               static IDictionary m_cultures;
-
-               CultureUtils ()
-               {
-               }
-
-               static void LoadCultures ()
-               {
-                       if (m_cultures != null)
-                               return;
-
-#if CF_1_0 || CF_2_0
-                       CultureInfo [] cultures = new CultureInfo [0];
-#else
-                       CultureInfo [] cultures = CultureInfo.GetCultures (CultureTypes.AllCultures);
-#endif
-                       m_cultures = new Hashtable (cultures.Length + 2);
-
-                       foreach (CultureInfo ci in cultures)
-                               if (!m_cultures.Contains (ci.Name))
-                                       m_cultures.Add (ci.Name, ci);
-
-                       if (!m_cultures.Contains (string.Empty))
-                               m_cultures.Add (string.Empty, CultureInfo.InvariantCulture);
-
-                       m_cultures.Add ("neutral", CultureInfo.InvariantCulture);
-               }
-
-               public static bool IsValid (string culture)
-               {
-                       if (culture == null)
-                               throw new ArgumentNullException ("culture");
-
-                       LoadCultures ();
-
-                       return m_cultures.Contains (culture);
-               }
-
-               public static CultureInfo GetCultureInfo (string culture)
-               {
-                       if (IsValid (culture))
-                               return m_cultures [culture] as CultureInfo;
-
-                       return CultureInfo.InvariantCulture;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs
deleted file mode 100644 (file)
index 21a0d0c..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// CustomAttributeTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class CustomAttributeTable : IMetadataTable {
-
-               public const int RId = 0x0c;
-
-               RowCollection m_rows;
-
-               public CustomAttributeRow this [int index] {
-                       get { return m_rows [index] as CustomAttributeRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal CustomAttributeTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitCustomAttributeTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class CustomAttributeRow : IMetadataRow {
-
-               public MetadataToken Parent;
-               public MetadataToken Type;
-               public uint Value;
-
-               internal CustomAttributeRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitCustomAttributeRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs
deleted file mode 100644 (file)
index 1b2fbdc..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// DeclSecurityTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class DeclSecurityTable : IMetadataTable {
-
-               public const int RId = 0x0e;
-
-               RowCollection m_rows;
-
-               public DeclSecurityRow this [int index] {
-                       get { return m_rows [index] as DeclSecurityRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal DeclSecurityTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitDeclSecurityTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class DeclSecurityRow : IMetadataRow {
-
-               public SecurityAction Action;
-               public MetadataToken Parent;
-               public uint PermissionSet;
-
-               internal DeclSecurityRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitDeclSecurityRow (this);
-               }
-       }
-}
index 4d78f435f9899f3a2ef21ce6a3478d112be2e762..1ede042b50d65320b47bd5cf677023fa8b4a130c 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil.Metadata {
 
-       public enum ElementType {
-               End              = 0x00,   // Marks end of a list
-               Void            = 0x01,
-               Boolean  = 0x02,
-               Char            = 0x03,
-               I1                = 0x04,
-               U1                = 0x05,
-               I2                = 0x06,
-               U2                = 0x07,
-               I4                = 0x08,
-               U4                = 0x09,
-               I8                = 0x0a,
-               U8                = 0x0b,
-               R4                = 0x0c,
-               R8                = 0x0d,
-               String    = 0x0e,
-               Ptr              = 0x0f,   // Followed by <type> token
-               ByRef      = 0x10,   // Followed by <type> token
-               ValueType   = 0x11,   // Followed by <type> token
-               Class      = 0x12,   // Followed by <type> token
-               Var        = 0x13,   // Followed by generic parameter number
-               Array      = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
+       enum ElementType : byte {
+               None = 0x00,
+               Void = 0x01,
+               Boolean = 0x02,
+               Char = 0x03,
+               I1 = 0x04,
+               U1 = 0x05,
+               I2 = 0x06,
+               U2 = 0x07,
+               I4 = 0x08,
+               U4 = 0x09,
+               I8 = 0x0a,
+               U8 = 0x0b,
+               R4 = 0x0c,
+               R8 = 0x0d,
+               String = 0x0e,
+               Ptr = 0x0f,   // Followed by <type> token
+               ByRef = 0x10,   // Followed by <type> token
+               ValueType = 0x11,   // Followed by <type> token
+               Class = 0x12,   // Followed by <type> token
+               Var = 0x13,   // Followed by generic parameter number
+               Array = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
                GenericInst = 0x15,   // <type> <type-arg-count> <type-1> ... <type-n> */
-               TypedByRef  = 0x16,
-               I                  = 0x18,   // System.IntPtr
-               U                  = 0x19,   // System.UIntPtr
-               FnPtr      = 0x1b,   // Followed by full method signature
-               Object    = 0x1c,   // System.Object
-               SzArray  = 0x1d,   // Single-dim array with 0 lower bound
-               MVar       = 0x1e,   // Followed by generic parameter number
-               CModReqD        = 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
-               CModOpt  = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
-               Internal        = 0x21,   // Implemented within the CLI
-               Modifier        = 0x40,   // Or'd with following element types
-               Sentinel        = 0x41,   // Sentinel for varargs method signature
-               Pinned    = 0x45,   // Denotes a local variable that points at a pinned object
+               TypedByRef = 0x16,
+               I = 0x18,   // System.IntPtr
+               U = 0x19,   // System.UIntPtr
+               FnPtr = 0x1b,   // Followed by full method signature
+               Object = 0x1c,   // System.Object
+               SzArray = 0x1d,   // Single-dim array with 0 lower bound
+               MVar = 0x1e,   // Followed by generic parameter number
+               CModReqD = 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
+               CModOpt = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
+               Internal = 0x21,   // Implemented within the CLI
+               Modifier = 0x40,   // Or'd with following element types
+               Sentinel = 0x41,   // Sentinel for varargs method signature
+               Pinned = 0x45,   // Denotes a local variable that points at a pinned object
 
                // special undocumented constants
-               Type            = 0x50,
-               Boxed      = 0x51,
-               Enum            = 0x55
+               Type = 0x50,
+               Boxed = 0x51,
+               Enum = 0x55
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs
deleted file mode 100644 (file)
index a60fedb..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// EventTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class EventTable : IMetadataTable {
-
-               public const int RId = 0x14;
-
-               RowCollection m_rows;
-
-               public EventRow this [int index] {
-                       get { return m_rows [index] as EventRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal EventTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitEventTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class EventRow : IMetadataRow {
-
-               public EventAttributes EventFlags;
-               public uint Name;
-               public MetadataToken EventType;
-
-               internal EventRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitEventRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs
deleted file mode 100644 (file)
index c3be845..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// EventMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class EventMapTable : IMetadataTable {
-
-               public const int RId = 0x12;
-
-               RowCollection m_rows;
-
-               public EventMapRow this [int index] {
-                       get { return m_rows [index] as EventMapRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal EventMapTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitEventMapTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class EventMapRow : IMetadataRow {
-
-               public uint Parent;
-               public uint EventList;
-
-               internal EventMapRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitEventMapRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs
deleted file mode 100644 (file)
index 094fe5c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// EventPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class EventPtrTable : IMetadataTable {
-
-               public const int RId = 0x13;
-
-               RowCollection m_rows;
-
-               public EventPtrRow this [int index] {
-                       get { return m_rows [index] as EventPtrRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal EventPtrTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitEventPtrTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class EventPtrRow : IMetadataRow {
-
-               public uint Event;
-
-               internal EventPtrRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitEventPtrRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs
deleted file mode 100644 (file)
index bca827f..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// ExportedTypeTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class ExportedTypeTable : IMetadataTable {
-
-               public const int RId = 0x27;
-
-               RowCollection m_rows;
-
-               public ExportedTypeRow this [int index] {
-                       get { return m_rows [index] as ExportedTypeRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ExportedTypeTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitExportedTypeTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ExportedTypeRow : IMetadataRow {
-
-               public TypeAttributes Flags;
-               public uint TypeDefId;
-               public uint TypeName;
-               public uint TypeNamespace;
-               public MetadataToken Implementation;
-
-               internal ExportedTypeRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitExportedTypeRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs
deleted file mode 100644 (file)
index 65b7998..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// FieldTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class FieldTable : IMetadataTable {
-
-               public const int RId = 0x04;
-
-               RowCollection m_rows;
-
-               public FieldRow this [int index] {
-                       get { return m_rows [index] as FieldRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FieldTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFieldTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FieldRow : IMetadataRow {
-
-               public FieldAttributes Flags;
-               public uint Name;
-               public uint Signature;
-
-               internal FieldRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFieldRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs
deleted file mode 100644 (file)
index 5cf1563..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// FieldLayoutTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class FieldLayoutTable : IMetadataTable {
-
-               public const int RId = 0x10;
-
-               RowCollection m_rows;
-
-               public FieldLayoutRow this [int index] {
-                       get { return m_rows [index] as FieldLayoutRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FieldLayoutTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFieldLayoutTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FieldLayoutRow : IMetadataRow {
-
-               public uint Offset;
-               public uint Field;
-
-               internal FieldLayoutRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFieldLayoutRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs
deleted file mode 100644 (file)
index f5c6936..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// FieldMarshalTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class FieldMarshalTable : IMetadataTable {
-
-               public const int RId = 0x0d;
-
-               RowCollection m_rows;
-
-               public FieldMarshalRow this [int index] {
-                       get { return m_rows [index] as FieldMarshalRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FieldMarshalTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFieldMarshalTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FieldMarshalRow : IMetadataRow {
-
-               public MetadataToken Parent;
-               public uint NativeType;
-
-               internal FieldMarshalRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFieldMarshalRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs
deleted file mode 100644 (file)
index b0d0c8a..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// FieldPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class FieldPtrTable : IMetadataTable {
-
-               public const int RId = 0x03;
-
-               RowCollection m_rows;
-
-               public FieldPtrRow this [int index] {
-                       get { return m_rows [index] as FieldPtrRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FieldPtrTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFieldPtrTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FieldPtrRow : IMetadataRow {
-
-               public uint Field;
-
-               internal FieldPtrRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFieldPtrRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs
deleted file mode 100644 (file)
index e4e9fce..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// FieldRVATable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil.Binary;
-
-       public sealed class FieldRVATable : IMetadataTable {
-
-               public const int RId = 0x1d;
-
-               RowCollection m_rows;
-
-               public FieldRVARow this [int index] {
-                       get { return m_rows [index] as FieldRVARow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FieldRVATable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFieldRVATable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FieldRVARow : IMetadataRow {
-
-               public RVA RVA;
-               public uint Field;
-
-               internal FieldRVARow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFieldRVARow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs
deleted file mode 100644 (file)
index de10919..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// FileTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class FileTable : IMetadataTable {
-
-               public const int RId = 0x26;
-
-               RowCollection m_rows;
-
-               public FileRow this [int index] {
-                       get { return m_rows [index] as FileRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal FileTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitFileTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class FileRow : IMetadataRow {
-
-               public FileAttributes Flags;
-               public uint Name;
-               public uint HashValue;
-
-               internal FileRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitFileRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs
deleted file mode 100644 (file)
index 219ca60..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// GenericParamTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class GenericParamTable : IMetadataTable {
-
-               public const int RId = 0x2a;
-
-               RowCollection m_rows;
-
-               public GenericParamRow this [int index] {
-                       get { return m_rows [index] as GenericParamRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal GenericParamTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitGenericParamTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class GenericParamRow : IMetadataRow {
-
-               public ushort Number;
-               public GenericParameterAttributes Flags;
-               public MetadataToken Owner;
-               public uint Name;
-
-               internal GenericParamRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitGenericParamRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs
deleted file mode 100644 (file)
index f6aa328..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// GenericParamConstraintTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class GenericParamConstraintTable : IMetadataTable {
-
-               public const int RId = 0x2c;
-
-               RowCollection m_rows;
-
-               public GenericParamConstraintRow this [int index] {
-                       get { return m_rows [index] as GenericParamConstraintRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal GenericParamConstraintTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitGenericParamConstraintTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class GenericParamConstraintRow : IMetadataRow {
-
-               public uint Owner;
-               public MetadataToken Constraint;
-
-               internal GenericParamConstraintRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitGenericParamConstraintRow (this);
-               }
-       }
-}
index ade00ec79aeae57a032fba482602e13da2b78147..19acdab51216f03f03c18556070ed01cc63c7656 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+using System;
 
-       using System;
-       using System.Collections;
+using Mono.Cecil.PE;
 
-       public class GuidHeap : MetadataHeap {
+namespace Mono.Cecil.Metadata {
 
-               readonly IDictionary m_guids;
+       sealed class GuidHeap : Heap {
 
-               public IDictionary Guids {
-                       get { return m_guids; }
+               public GuidHeap (Section section, uint start, uint size)
+                       : base (section, start, size)
+               {
                }
 
-               public GuidHeap (MetadataStream stream) : base (stream, MetadataStream.GUID)
+               public Guid Read (uint index)
                {
-                       int capacity = (int)(stream.Header.Size / 16);
-                       m_guids = new Hashtable (capacity);
-               }
+                       if (index == 0)
+                               return new Guid ();
 
-               public Guid this [uint index] {
-                       get {
-                               if (index == 0)
-                                       return new Guid (new byte [16]);
+                       const int guid_size = 16;
 
-                               int idx = (int) index - 1;
+                       var buffer = new byte [guid_size];
 
-                               if (m_guids.Contains (idx))
-                                       return (Guid) m_guids [idx];
+                       index--;
 
-                               if (idx + 16 > this.Data.Length)
-                                       throw new IndexOutOfRangeException ();
+                       Buffer.BlockCopy (Section.Data, (int) (Offset + index), buffer, 0, guid_size);
 
-                               byte [] buffer = null;
-                               if (this.Data.Length == 16) {
-                                       buffer = this.Data;
-                               } else {
-                                       buffer = new byte [16];
-                                       Buffer.BlockCopy (this.Data, idx, buffer, 0, 16);
-                               }
-                               Guid res = new Guid (buffer);
-                               m_guids [idx] = res;
-                               return res;
-                       }
-                       set { m_guids [index] = value; }
-               }
+                       return new Guid (buffer);
 
-               public override void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitGuidHeap (this);
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs
new file mode 100644 (file)
index 0000000..e7ff720
--- /dev/null
@@ -0,0 +1,48 @@
+//
+// Heap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+       abstract class Heap {
+
+               public int IndexSize;
+
+               public readonly Section Section;
+               public readonly uint Offset;
+               public readonly uint Size;
+
+               protected Heap (Section section, uint offset, uint size)
+               {
+                       this.Section = section;
+                       this.Offset = offset;
+                       this.Size = size;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs
deleted file mode 100644 (file)
index 012d5bf..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// IMetadataRow.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public interface IMetadataRow : IMetadataRowVisitable {
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs
deleted file mode 100644 (file)
index 2fdf849..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IMetadataTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public interface IMetadataTable : IMetadataTableVisitable {
-               int Id { get; }
-               RowCollection Rows { get; set; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs
deleted file mode 100644 (file)
index 09ce018..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// IMetadataVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public interface IMetadataVisitable {
-               void Accept (IMetadataVisitor visitor);
-       }
-
-       public interface IMetadataTableVisitable {
-               void Accept (IMetadataTableVisitor visitor);
-       }
-
-       public interface IMetadataRowVisitable {
-               void Accept (IMetadataRowVisitor visitor);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs
deleted file mode 100644 (file)
index 3bbea3a..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// IMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public interface IMetadataVisitor {
-               void VisitMetadataRoot (MetadataRoot root);
-               void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header);
-               void VisitMetadataStreamCollection (MetadataStreamCollection streams);
-               void VisitMetadataStream (MetadataStream stream);
-               void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header);
-               void VisitGuidHeap (GuidHeap heap);
-               void VisitStringsHeap (StringsHeap heap);
-               void VisitTablesHeap (TablesHeap heap);
-               void VisitBlobHeap (BlobHeap heap);
-               void VisitUserStringsHeap (UserStringsHeap heap);
-
-               void TerminateMetadataRoot (MetadataRoot root);
-       }
-
-       public interface IMetadataTableVisitor {
-               void VisitTableCollection (TableCollection coll);
-
-               void VisitAssemblyTable (AssemblyTable table);
-               void VisitAssemblyOSTable (AssemblyOSTable table);
-               void VisitAssemblyProcessorTable (AssemblyProcessorTable table);
-               void VisitAssemblyRefTable (AssemblyRefTable table);
-               void VisitAssemblyRefOSTable (AssemblyRefOSTable table);
-               void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table);
-               void VisitClassLayoutTable (ClassLayoutTable table);
-               void VisitConstantTable (ConstantTable table);
-               void VisitCustomAttributeTable (CustomAttributeTable table);
-               void VisitDeclSecurityTable (DeclSecurityTable table);
-               void VisitEventTable (EventTable table);
-               void VisitEventMapTable (EventMapTable table);
-               void VisitEventPtrTable (EventPtrTable table);
-               void VisitExportedTypeTable (ExportedTypeTable table);
-               void VisitFieldTable (FieldTable table);
-               void VisitFieldLayoutTable (FieldLayoutTable table);
-               void VisitFieldMarshalTable (FieldMarshalTable table);
-               void VisitFieldPtrTable (FieldPtrTable table);
-               void VisitFieldRVATable (FieldRVATable table);
-               void VisitFileTable (FileTable table);
-               void VisitGenericParamTable (GenericParamTable table);
-               void VisitGenericParamConstraintTable (GenericParamConstraintTable table);
-               void VisitImplMapTable (ImplMapTable table);
-               void VisitInterfaceImplTable (InterfaceImplTable table);
-               void VisitManifestResourceTable (ManifestResourceTable table);
-               void VisitMemberRefTable (MemberRefTable table);
-               void VisitMethodTable (MethodTable table);
-               void VisitMethodImplTable (MethodImplTable table);
-               void VisitMethodPtrTable (MethodPtrTable table);
-               void VisitMethodSemanticsTable (MethodSemanticsTable table);
-               void VisitMethodSpecTable (MethodSpecTable table);
-               void VisitModuleTable (ModuleTable table);
-               void VisitModuleRefTable (ModuleRefTable table);
-               void VisitNestedClassTable (NestedClassTable table);
-               void VisitParamTable (ParamTable table);
-               void VisitParamPtrTable (ParamPtrTable table);
-               void VisitPropertyTable (PropertyTable table);
-               void VisitPropertyMapTable (PropertyMapTable table);
-               void VisitPropertyPtrTable (PropertyPtrTable table);
-               void VisitStandAloneSigTable (StandAloneSigTable table);
-               void VisitTypeDefTable (TypeDefTable table);
-               void VisitTypeRefTable (TypeRefTable table);
-               void VisitTypeSpecTable (TypeSpecTable table);
-
-               void TerminateTableCollection (TableCollection coll);
-               IMetadataRowVisitor GetRowVisitor();
-}
-
-       public interface IMetadataRowVisitor {
-               void VisitRowCollection (RowCollection coll);
-
-               void VisitAssemblyRow (AssemblyRow row);
-               void VisitAssemblyOSRow (AssemblyOSRow row);
-               void VisitAssemblyProcessorRow (AssemblyProcessorRow row);
-               void VisitAssemblyRefRow (AssemblyRefRow row);
-               void VisitAssemblyRefOSRow (AssemblyRefOSRow row);
-               void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row);
-               void VisitClassLayoutRow (ClassLayoutRow row);
-               void VisitConstantRow (ConstantRow row);
-               void VisitCustomAttributeRow (CustomAttributeRow row);
-               void VisitDeclSecurityRow (DeclSecurityRow row);
-               void VisitEventRow (EventRow row);
-               void VisitEventMapRow (EventMapRow row);
-               void VisitEventPtrRow (EventPtrRow row);
-               void VisitExportedTypeRow (ExportedTypeRow row);
-               void VisitFieldRow (FieldRow row);
-               void VisitFieldLayoutRow (FieldLayoutRow row);
-               void VisitFieldMarshalRow (FieldMarshalRow row);
-               void VisitFieldPtrRow (FieldPtrRow row);
-               void VisitFieldRVARow (FieldRVARow row);
-               void VisitFileRow (FileRow row);
-               void VisitGenericParamRow (GenericParamRow row);
-               void VisitGenericParamConstraintRow (GenericParamConstraintRow row);
-               void VisitImplMapRow (ImplMapRow row);
-               void VisitInterfaceImplRow (InterfaceImplRow row);
-               void VisitManifestResourceRow (ManifestResourceRow row);
-               void VisitMemberRefRow (MemberRefRow row);
-               void VisitMethodRow (MethodRow row);
-               void VisitMethodImplRow (MethodImplRow row);
-               void VisitMethodPtrRow (MethodPtrRow row);
-               void VisitMethodSemanticsRow (MethodSemanticsRow row);
-               void VisitMethodSpecRow (MethodSpecRow row);
-               void VisitModuleRow (ModuleRow row);
-               void VisitModuleRefRow (ModuleRefRow row);
-               void VisitNestedClassRow (NestedClassRow row);
-               void VisitParamRow (ParamRow row);
-               void VisitParamPtrRow (ParamPtrRow row);
-               void VisitPropertyRow (PropertyRow row);
-               void VisitPropertyMapRow (PropertyMapRow row);
-               void VisitPropertyPtrRow (PropertyPtrRow row);
-               void VisitStandAloneSigRow (StandAloneSigRow row);
-               void VisitTypeDefRow (TypeDefRow row);
-               void VisitTypeRefRow (TypeRefRow row);
-               void VisitTypeSpecRow (TypeSpecRow row);
-
-               void TerminateRowCollection (RowCollection coll);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs
deleted file mode 100644 (file)
index 3548312..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// ImplMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class ImplMapTable : IMetadataTable {
-
-               public const int RId = 0x1c;
-
-               RowCollection m_rows;
-
-               public ImplMapRow this [int index] {
-                       get { return m_rows [index] as ImplMapRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ImplMapTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitImplMapTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ImplMapRow : IMetadataRow {
-
-               public PInvokeAttributes MappingFlags;
-               public MetadataToken MemberForwarded;
-               public uint ImportName;
-               public uint ImportScope;
-
-               internal ImplMapRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitImplMapRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs
deleted file mode 100644 (file)
index fc527c5..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// InterfaceImplTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class InterfaceImplTable : IMetadataTable {
-
-               public const int RId = 0x09;
-
-               RowCollection m_rows;
-
-               public InterfaceImplRow this [int index] {
-                       get { return m_rows [index] as InterfaceImplRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal InterfaceImplTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitInterfaceImplTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class InterfaceImplRow : IMetadataRow {
-
-               public uint Class;
-               public MetadataToken Interface;
-
-               internal InterfaceImplRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitInterfaceImplRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs
deleted file mode 100644 (file)
index 07caf51..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// ManifestResourceTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class ManifestResourceTable : IMetadataTable {
-
-               public const int RId = 0x28;
-
-               RowCollection m_rows;
-
-               public ManifestResourceRow this [int index] {
-                       get { return m_rows [index] as ManifestResourceRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ManifestResourceTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitManifestResourceTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ManifestResourceRow : IMetadataRow {
-
-               public uint Offset;
-               public ManifestResourceAttributes Flags;
-               public uint Name;
-               public MetadataToken Implementation;
-
-               internal ManifestResourceRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitManifestResourceRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs
deleted file mode 100644 (file)
index 7a51aaa..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// MemberRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class MemberRefTable : IMetadataTable {
-
-               public const int RId = 0x0a;
-
-               RowCollection m_rows;
-
-               public MemberRefRow this [int index] {
-                       get { return m_rows [index] as MemberRefRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MemberRefTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMemberRefTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MemberRefRow : IMetadataRow {
-
-               public MetadataToken Class;
-               public uint Name;
-               public uint Signature;
-
-               internal MemberRefRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMemberRefRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs
deleted file mode 100644 (file)
index dd91790..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// MetadataFormatException.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-
-       using Mono.Cecil.Binary;
-
-       public class MetadataFormatException : ImageFormatException {
-
-               internal MetadataFormatException () : base ()
-               {
-               }
-
-               internal MetadataFormatException (string message) : base (message)
-               {
-               }
-
-               internal MetadataFormatException (string message, params string [] parameters) :
-                       base (string.Format (message, parameters))
-               {
-               }
-
-               internal MetadataFormatException (string message, Exception inner) :
-                       base (message, inner)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs
deleted file mode 100644 (file)
index 7ce2d28..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// MetadataHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-
-       using Mono.Cecil;
-
-       public abstract class MetadataHeap : IMetadataVisitable  {
-
-               MetadataStream m_stream;
-               string m_name;
-               byte [] m_data;
-
-               public string Name {
-                       get { return m_name; }
-               }
-
-               public byte [] Data {
-                       get { return m_data; }
-                       set { m_data = value; }
-               }
-
-               public int IndexSize;
-
-               internal MetadataHeap (MetadataStream stream, string name)
-               {
-                       m_name = name;
-                       m_stream = stream;
-               }
-
-               public static MetadataHeap HeapFactory (MetadataStream stream)
-               {
-                       switch (stream.Header.Name) {
-                       case MetadataStream.Tables :
-                       case MetadataStream.IncrementalTables :
-                               return new TablesHeap (stream);
-                       case MetadataStream.GUID :
-                               return new GuidHeap (stream);
-                       case MetadataStream.Strings :
-                               return new StringsHeap (stream);
-                       case MetadataStream.UserStrings :
-                               return new UserStringsHeap (stream);
-                       case MetadataStream.Blob :
-                               return new BlobHeap (stream);
-                       default :
-                               return null;
-                       }
-               }
-
-               public MetadataStream GetStream ()
-               {
-                       return m_stream;
-               }
-
-               protected virtual byte [] ReadBytesFromStream (uint pos)
-               {
-                       int start, length = Utilities.ReadCompressedInteger (m_data, (int) pos, out start);
-                       byte [] buffer = new byte [length];
-                       Buffer.BlockCopy (m_data, start, buffer, 0, length);
-                       return buffer;
-               }
-
-               public abstract void Accept (IMetadataVisitor visitor);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataInitializer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataInitializer.cs
deleted file mode 100644 (file)
index 28cc840..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// MetadataInitializer.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil;
-       using Mono.Cecil.Binary;
-
-       sealed class MetadataInitializer : BaseMetadataVisitor {
-
-               MetadataRoot m_root;
-
-               public MetadataInitializer (ImageInitializer init)
-               {
-                       m_root = init.Image.MetadataRoot;
-               }
-
-               public override void VisitMetadataRoot (MetadataRoot root)
-               {
-                       root.Header = new MetadataRoot.MetadataRootHeader ();
-                       root.Streams = new MetadataStreamCollection ();
-               }
-
-               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-               {
-                       header.SetDefaultValues ();
-               }
-
-               public override void VisitMetadataStreamCollection (MetadataStreamCollection coll)
-               {
-                       MetadataStream tables = new MetadataStream ();
-                       tables.Header.Name = MetadataStream.Tables;
-                       tables.Heap = MetadataHeap.HeapFactory (tables);
-                       TablesHeap th = tables.Heap as TablesHeap;
-                       th.Tables = new TableCollection (th);
-                       m_root.Streams.Add (tables);
-               }
-
-               public override void VisitTablesHeap (TablesHeap th)
-               {
-                       th.Reserved = 0;
-                       th.MajorVersion = 1;
-                       th.MinorVersion = 0;
-                       th.Reserved2 = 1;
-                       th.Sorted = 0x2003301fa00;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataReader.cs
deleted file mode 100644 (file)
index cc9d594..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// MetadataReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil.Binary;
-
-       sealed class MetadataReader : BaseMetadataVisitor {
-
-               ImageReader m_ir;
-               BinaryReader m_binaryReader;
-               MetadataTableReader m_tableReader;
-               MetadataRoot m_root;
-
-               public MetadataTableReader TableReader {
-                       get { return m_tableReader; }
-               }
-
-               public MetadataReader (ImageReader brv)
-               {
-                       m_ir = brv;
-                       m_binaryReader = brv.GetReader ();
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_root;
-               }
-
-               public BinaryReader GetDataReader (RVA rva)
-               {
-                       return m_ir.Image.GetReaderAtVirtualAddress (rva);
-               }
-
-               public override void VisitMetadataRoot (MetadataRoot root)
-               {
-                       m_root = root;
-                       root.Header = new MetadataRoot.MetadataRootHeader ();
-                       root.Streams = new MetadataStreamCollection ();
-               }
-
-               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-               {
-                       long headpos = m_binaryReader.BaseStream.Position;
-
-                       header.Signature = m_binaryReader.ReadUInt32 ();
-
-                       if (header.Signature != MetadataRoot.MetadataRootHeader.StandardSignature)
-                               throw new MetadataFormatException ("Wrong magic number");
-
-                       header.MajorVersion = m_binaryReader.ReadUInt16 ();
-                       header.MinorVersion = m_binaryReader.ReadUInt16 ();
-                       header.Reserved = m_binaryReader.ReadUInt32 ();
-
-                       // read version
-                       uint length = m_binaryReader.ReadUInt32 ();
-                       if (length != 0) {
-                               long pos = m_binaryReader.BaseStream.Position;
-
-                               byte [] version, buffer = new byte [length];
-                               int read = 0;
-                               while (read < length) {
-                                       byte cur = (byte)m_binaryReader.ReadSByte ();
-                                       if (cur == 0)
-                                               break;
-                                       buffer [read++] = cur;
-                               }
-                               version = new byte [read];
-                               Buffer.BlockCopy (buffer, 0, version, 0, read);
-                               header.Version = Encoding.UTF8.GetString (version, 0, version.Length);
-
-                               pos += length - headpos + 3;
-                               pos &= ~3;
-                               pos += headpos;
-
-                               m_binaryReader.BaseStream.Position = pos;
-                       } else
-                               header.Version = string.Empty;
-
-                       header.Flags = m_binaryReader.ReadUInt16 ();
-                       header.Streams = m_binaryReader.ReadUInt16 ();
-               }
-
-               public override void VisitMetadataStreamCollection (MetadataStreamCollection coll)
-               {
-                       for (int i = 0; i < m_root.Header.Streams; i++)
-                               coll.Add (new MetadataStream ());
-               }
-
-               public override void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
-               {
-                       header.Offset = m_binaryReader.ReadUInt32 ();
-                       header.Size = m_binaryReader.ReadUInt32 ();
-
-                       StringBuilder buffer = new StringBuilder ();
-                       while (true) {
-                               char cur = (char) m_binaryReader.ReadSByte ();
-                               if (cur == '\0')
-                                       break;
-                               buffer.Append (cur);
-                       }
-                       header.Name = buffer.ToString ();
-                       if (header.Name.Length == 0)
-                               throw new MetadataFormatException ("Invalid stream name");
-
-                       long rootpos = m_root.GetImage ().ResolveVirtualAddress (
-                               m_root.GetImage ().CLIHeader.Metadata.VirtualAddress);
-
-                       long curpos = m_binaryReader.BaseStream.Position;
-
-                       if (header.Size != 0)
-                               curpos -= rootpos;
-
-                       curpos += 3;
-                       curpos &= ~3;
-
-                       if (header.Size != 0)
-                               curpos += rootpos;
-
-                       m_binaryReader.BaseStream.Position = curpos;
-
-                       header.Stream.Heap = MetadataHeap.HeapFactory (header.Stream);
-               }
-
-               public override void VisitGuidHeap (GuidHeap heap)
-               {
-                       VisitHeap (heap);
-               }
-
-               public override void VisitStringsHeap (StringsHeap heap)
-               {
-                       VisitHeap (heap);
-
-                       if (heap.Data.Length < 1 && heap.Data [0] != 0)
-                               throw new MetadataFormatException ("Malformed #Strings heap");
-
-                       heap [(uint) 0] = string.Empty;
-               }
-
-               public override void VisitTablesHeap (TablesHeap heap)
-               {
-                       VisitHeap (heap);
-                       heap.Tables = new TableCollection (heap);
-
-                       BinaryReader br = new BinaryReader (new MemoryStream (heap.Data));
-                       try {
-                               heap.Reserved = br.ReadUInt32 ();
-                               heap.MajorVersion = br.ReadByte ();
-                               heap.MinorVersion = br.ReadByte ();
-                               heap.HeapSizes = br.ReadByte ();
-                               heap.Reserved2 = br.ReadByte ();
-                               heap.Valid = br.ReadInt64 ();
-                               heap.Sorted = br.ReadInt64 ();
-                       } finally {
-                               // COMPACT FRAMEWORK NOTE: BinaryReader is not IDisposable
-                               br.Close ();
-                       }
-               }
-
-               public override void VisitBlobHeap (BlobHeap heap)
-               {
-                       VisitHeap (heap);
-               }
-
-               public override void VisitUserStringsHeap (UserStringsHeap heap)
-               {
-                       VisitHeap (heap);
-               }
-
-               void VisitHeap (MetadataHeap heap)
-               {
-                       long cursor = m_binaryReader.BaseStream.Position;
-
-                       m_binaryReader.BaseStream.Position = m_root.GetImage ().ResolveVirtualAddress (
-                               m_root.GetImage ().CLIHeader.Metadata.VirtualAddress)
-                               + heap.GetStream ().Header.Offset;
-
-                       heap.Data = m_binaryReader.ReadBytes ((int) heap.GetStream ().Header.Size);
-
-                       m_binaryReader.BaseStream.Position = cursor;
-               }
-
-               void SetHeapIndexSize (MetadataHeap heap, byte flag)
-               {
-                       if (heap == null)
-                               return;
-                       TablesHeap th = m_root.Streams.TablesHeap;
-                       heap.IndexSize = ((th.HeapSizes & flag) > 0) ? 4 : 2;
-               }
-
-               public override void TerminateMetadataRoot (MetadataRoot root)
-               {
-                       SetHeapIndexSize (root.Streams.StringsHeap, 0x01);
-                       SetHeapIndexSize (root.Streams.GuidHeap, 0x02);
-                       SetHeapIndexSize (root.Streams.BlobHeap, 0x04);
-                       m_tableReader = new MetadataTableReader (this);
-                       root.Streams.TablesHeap.Tables.Accept (m_tableReader);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs
deleted file mode 100644 (file)
index 9305149..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// MetadataRoot.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil.Binary;
-
-       public sealed class MetadataRoot : IMetadataVisitable {
-
-               MetadataRootHeader m_header;
-               Image m_image;
-
-               MetadataStreamCollection m_streams;
-
-               public MetadataRootHeader Header {
-                       get { return m_header; }
-                       set { m_header = value; }
-               }
-
-               public MetadataStreamCollection Streams {
-                       get { return m_streams; }
-                       set { m_streams = value; }
-               }
-
-               internal MetadataRoot (Image img)
-               {
-                       m_image = img;
-               }
-
-               public Image GetImage ()
-               {
-                       return m_image;
-               }
-
-               public void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitMetadataRoot (this);
-
-                       m_header.Accept (visitor);
-                       m_streams.Accept (visitor);
-
-                       visitor.TerminateMetadataRoot (this);
-               }
-
-               public sealed class MetadataRootHeader : IHeader, IMetadataVisitable {
-
-                       public const uint StandardSignature = 0x424a5342;
-
-                       public uint Signature;
-                       public ushort MinorVersion;
-                       public ushort MajorVersion;
-                       public uint Reserved;
-                       public string Version;
-                       public ushort Flags;
-                       public ushort Streams;
-
-                       internal MetadataRootHeader ()
-                       {
-                       }
-
-                       public void SetDefaultValues ()
-                       {
-                               Signature = StandardSignature;
-                               Reserved = 0;
-                               Flags = 0;
-                       }
-
-                       public void Accept (IMetadataVisitor visitor)
-                       {
-                               visitor.VisitMetadataRootHeader (this);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowReader.cs
deleted file mode 100644 (file)
index c8b5374..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-//
-// MetadataRowReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Sat Feb 16 23:24:17 +0100 2008
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-
-       using Mono.Cecil.Binary;
-
-       sealed class MetadataRowReader : BaseMetadataRowVisitor {
-
-               MetadataTableReader m_mtrv;
-               BinaryReader m_binaryReader;
-               MetadataRoot m_metadataRoot;
-
-               Utilities.TableRowCounter m_counter;
-               int [] m_ciCache;
-
-               int m_blobHeapIdxSz;
-               int m_stringsHeapIdxSz;
-               int m_guidHeapIdxSz;
-
-               public MetadataRowReader (MetadataTableReader mtrv)
-               {
-                       m_mtrv = mtrv;
-                       m_binaryReader = mtrv.GetReader ();
-                       m_metadataRoot = mtrv.GetMetadataRoot ();
-                       m_ciCache = new int [13];
-                       m_counter = new Utilities.TableRowCounter (m_mtrv.GetNumberOfRows);
-               }
-
-               int GetIndexSize (int rid)
-               {
-                       return m_mtrv.GetNumberOfRows (rid) < (1 << 16) ? 2 : 4;
-               }
-
-               int GetCodedIndexSize (CodedIndex ci)
-               {
-                       return Utilities.GetCodedIndexSize (ci, m_counter, m_ciCache);
-               }
-
-               uint ReadByIndexSize (int size)
-               {
-                       if (size == 2) {
-                               return (uint) m_binaryReader.ReadUInt16 ();
-                       } else if (size == 4) {
-                               return m_binaryReader.ReadUInt32 ();
-                       } else {
-                               throw new MetadataFormatException ("Non valid size for indexing");
-                       }
-               }
-
-               public override void VisitRowCollection (RowCollection coll)
-               {
-                       m_blobHeapIdxSz = m_metadataRoot.Streams.BlobHeap != null ?
-                               m_metadataRoot.Streams.BlobHeap.IndexSize : 2;
-                       m_stringsHeapIdxSz = m_metadataRoot.Streams.StringsHeap != null ?
-                               m_metadataRoot.Streams.StringsHeap.IndexSize : 2;
-                       m_guidHeapIdxSz = m_metadataRoot.Streams.GuidHeap != null ?
-                               m_metadataRoot.Streams.GuidHeap.IndexSize : 2;
-               }
-
-               public override void VisitAssemblyRow (AssemblyRow row)
-               {
-                       row.HashAlgId = (Mono.Cecil.AssemblyHashAlgorithm) m_binaryReader.ReadUInt32 ();
-                       row.MajorVersion = m_binaryReader.ReadUInt16 ();
-                       row.MinorVersion = m_binaryReader.ReadUInt16 ();
-                       row.BuildNumber = m_binaryReader.ReadUInt16 ();
-                       row.RevisionNumber = m_binaryReader.ReadUInt16 ();
-                       row.Flags = (Mono.Cecil.AssemblyFlags) m_binaryReader.ReadUInt32 ();
-                       row.PublicKey = ReadByIndexSize (m_blobHeapIdxSz);
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Culture = ReadByIndexSize (m_stringsHeapIdxSz);
-               }
-               public override void VisitAssemblyOSRow (AssemblyOSRow row)
-               {
-                       row.OSPlatformID = m_binaryReader.ReadUInt32 ();
-                       row.OSMajorVersion = m_binaryReader.ReadUInt32 ();
-                       row.OSMinorVersion = m_binaryReader.ReadUInt32 ();
-               }
-               public override void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
-               {
-                       row.Processor = m_binaryReader.ReadUInt32 ();
-               }
-               public override void VisitAssemblyRefRow (AssemblyRefRow row)
-               {
-                       row.MajorVersion = m_binaryReader.ReadUInt16 ();
-                       row.MinorVersion = m_binaryReader.ReadUInt16 ();
-                       row.BuildNumber = m_binaryReader.ReadUInt16 ();
-                       row.RevisionNumber = m_binaryReader.ReadUInt16 ();
-                       row.Flags = (Mono.Cecil.AssemblyFlags) m_binaryReader.ReadUInt32 ();
-                       row.PublicKeyOrToken = ReadByIndexSize (m_blobHeapIdxSz);
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Culture = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.HashValue = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
-               {
-                       row.OSPlatformID = m_binaryReader.ReadUInt32 ();
-                       row.OSMajorVersion = m_binaryReader.ReadUInt32 ();
-                       row.OSMinorVersion = m_binaryReader.ReadUInt32 ();
-                       row.AssemblyRef = ReadByIndexSize (GetIndexSize (AssemblyRefTable.RId));
-               }
-               public override void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
-               {
-                       row.Processor = m_binaryReader.ReadUInt32 ();
-                       row.AssemblyRef = ReadByIndexSize (GetIndexSize (AssemblyRefTable.RId));
-               }
-               public override void VisitClassLayoutRow (ClassLayoutRow row)
-               {
-                       row.PackingSize = m_binaryReader.ReadUInt16 ();
-                       row.ClassSize = m_binaryReader.ReadUInt32 ();
-                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-               }
-               public override void VisitConstantRow (ConstantRow row)
-               {
-                       row.Type = (Mono.Cecil.Metadata.ElementType) m_binaryReader.ReadUInt16 ();
-                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasConstant,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasConstant)));
-                       row.Value = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitCustomAttributeRow (CustomAttributeRow row)
-               {
-                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasCustomAttribute,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasCustomAttribute)));
-                       row.Type = Utilities.GetMetadataToken (CodedIndex.CustomAttributeType,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.CustomAttributeType)));
-                       row.Value = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitDeclSecurityRow (DeclSecurityRow row)
-               {
-                       row.Action = (Mono.Cecil.SecurityAction) m_binaryReader.ReadInt16 ();
-                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasDeclSecurity,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasDeclSecurity)));
-                       row.PermissionSet = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitEventRow (EventRow row)
-               {
-                       row.EventFlags = (Mono.Cecil.EventAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.EventType = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
-               }
-               public override void VisitEventMapRow (EventMapRow row)
-               {
-                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-                       row.EventList = ReadByIndexSize (GetIndexSize (EventTable.RId));
-               }
-               public override void VisitEventPtrRow (EventPtrRow row)
-               {
-                       row.Event = ReadByIndexSize (GetIndexSize (EventTable.RId));
-               }
-               public override void VisitExportedTypeRow (ExportedTypeRow row)
-               {
-                       row.Flags = (Mono.Cecil.TypeAttributes) m_binaryReader.ReadUInt32 ();
-                       row.TypeDefId = m_binaryReader.ReadUInt32 ();
-                       row.TypeName = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.TypeNamespace = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Implementation = Utilities.GetMetadataToken (CodedIndex.Implementation,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.Implementation)));
-               }
-               public override void VisitFieldRow (FieldRow row)
-               {
-                       row.Flags = (Mono.Cecil.FieldAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitFieldLayoutRow (FieldLayoutRow row)
-               {
-                       row.Offset = m_binaryReader.ReadUInt32 ();
-                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
-               }
-               public override void VisitFieldMarshalRow (FieldMarshalRow row)
-               {
-                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasFieldMarshal,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasFieldMarshal)));
-                       row.NativeType = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitFieldPtrRow (FieldPtrRow row)
-               {
-                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
-               }
-               public override void VisitFieldRVARow (FieldRVARow row)
-               {
-                       row.RVA = new RVA (m_binaryReader.ReadUInt32 ());
-                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
-               }
-               public override void VisitFileRow (FileRow row)
-               {
-                       row.Flags = (Mono.Cecil.FileAttributes) m_binaryReader.ReadUInt32 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.HashValue = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitGenericParamRow (GenericParamRow row)
-               {
-                       row.Number = m_binaryReader.ReadUInt16 ();
-                       row.Flags = (Mono.Cecil.GenericParameterAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Owner = Utilities.GetMetadataToken (CodedIndex.TypeOrMethodDef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeOrMethodDef)));
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-               }
-               public override void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
-               {
-                       row.Owner = ReadByIndexSize (GetIndexSize (GenericParamTable.RId));
-                       row.Constraint = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
-               }
-               public override void VisitImplMapRow (ImplMapRow row)
-               {
-                       row.MappingFlags = (Mono.Cecil.PInvokeAttributes) m_binaryReader.ReadUInt16 ();
-                       row.MemberForwarded = Utilities.GetMetadataToken (CodedIndex.MemberForwarded,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MemberForwarded)));
-                       row.ImportName = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.ImportScope = ReadByIndexSize (GetIndexSize (ModuleRefTable.RId));
-               }
-               public override void VisitInterfaceImplRow (InterfaceImplRow row)
-               {
-                       row.Class = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-                       row.Interface = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
-               }
-               public override void VisitManifestResourceRow (ManifestResourceRow row)
-               {
-                       row.Offset = m_binaryReader.ReadUInt32 ();
-                       row.Flags = (Mono.Cecil.ManifestResourceAttributes) m_binaryReader.ReadUInt32 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Implementation = Utilities.GetMetadataToken (CodedIndex.Implementation,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.Implementation)));
-               }
-               public override void VisitMemberRefRow (MemberRefRow row)
-               {
-                       row.Class = Utilities.GetMetadataToken (CodedIndex.MemberRefParent,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MemberRefParent)));
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitMethodRow (MethodRow row)
-               {
-                       row.RVA = new RVA (m_binaryReader.ReadUInt32 ());
-                       row.ImplFlags = (Mono.Cecil.MethodImplAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Flags = (Mono.Cecil.MethodAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
-                       row.ParamList = ReadByIndexSize (GetIndexSize (ParamTable.RId));
-               }
-               public override void VisitMethodImplRow (MethodImplRow row)
-               {
-                       row.Class = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-                       row.MethodBody = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
-                       row.MethodDeclaration = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
-               }
-               public override void VisitMethodPtrRow (MethodPtrRow row)
-               {
-                       row.Method = ReadByIndexSize (GetIndexSize (MethodTable.RId));
-               }
-               public override void VisitMethodSemanticsRow (MethodSemanticsRow row)
-               {
-                       row.Semantics = (Mono.Cecil.MethodSemanticsAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Method = ReadByIndexSize (GetIndexSize (MethodTable.RId));
-                       row.Association = Utilities.GetMetadataToken (CodedIndex.HasSemantics,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasSemantics)));
-               }
-               public override void VisitMethodSpecRow (MethodSpecRow row)
-               {
-                       row.Method = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
-                       row.Instantiation = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitModuleRow (ModuleRow row)
-               {
-                       row.Generation = m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Mvid = ReadByIndexSize (m_guidHeapIdxSz);
-                       row.EncId = ReadByIndexSize (m_guidHeapIdxSz);
-                       row.EncBaseId = ReadByIndexSize (m_guidHeapIdxSz);
-               }
-               public override void VisitModuleRefRow (ModuleRefRow row)
-               {
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-               }
-               public override void VisitNestedClassRow (NestedClassRow row)
-               {
-                       row.NestedClass = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-                       row.EnclosingClass = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-               }
-               public override void VisitParamRow (ParamRow row)
-               {
-                       row.Flags = (Mono.Cecil.ParameterAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Sequence = m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-               }
-               public override void VisitParamPtrRow (ParamPtrRow row)
-               {
-                       row.Param = ReadByIndexSize (GetIndexSize (ParamTable.RId));
-               }
-               public override void VisitPropertyRow (PropertyRow row)
-               {
-                       row.Flags = (Mono.Cecil.PropertyAttributes) m_binaryReader.ReadUInt16 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Type = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitPropertyMapRow (PropertyMapRow row)
-               {
-                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
-                       row.PropertyList = ReadByIndexSize (GetIndexSize (PropertyTable.RId));
-               }
-               public override void VisitPropertyPtrRow (PropertyPtrRow row)
-               {
-                       row.Property = ReadByIndexSize (GetIndexSize (PropertyTable.RId));
-               }
-               public override void VisitStandAloneSigRow (StandAloneSigRow row)
-               {
-                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-               public override void VisitTypeDefRow (TypeDefRow row)
-               {
-                       row.Flags = (Mono.Cecil.TypeAttributes) m_binaryReader.ReadUInt32 ();
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Namespace = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Extends = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
-                       row.FieldList = ReadByIndexSize (GetIndexSize (FieldTable.RId));
-                       row.MethodList = ReadByIndexSize (GetIndexSize (MethodTable.RId));
-               }
-               public override void VisitTypeRefRow (TypeRefRow row)
-               {
-                       row.ResolutionScope = Utilities.GetMetadataToken (CodedIndex.ResolutionScope,
-                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.ResolutionScope)));
-                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
-                       row.Namespace = ReadByIndexSize (m_stringsHeapIdxSz);
-               }
-               public override void VisitTypeSpecRow (TypeSpecRow row)
-               {
-                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowWriter.cs
deleted file mode 100644 (file)
index c592cc3..0000000
+++ /dev/null
@@ -1,798 +0,0 @@
-//
-// MetadataRowWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Sat Feb 16 23:24:17 +0100 2008
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Binary;
-
-       sealed class MetadataRowWriter : BaseMetadataRowVisitor {
-
-               MetadataRoot m_root;
-               MemoryBinaryWriter m_binaryWriter;
-
-               Utilities.TableRowCounter m_counter;
-               int [] m_ciCache;
-
-               int m_blobHeapIdxSz;
-               int m_stringsHeapIdxSz;
-               int m_guidHeapIdxSz;
-
-               public MetadataRowWriter (MetadataTableWriter mtwv)
-               {
-                       m_binaryWriter = mtwv.GetWriter ();
-                       m_root = mtwv.GetMetadataRoot ();
-                       m_ciCache = new int [13];
-                       m_counter = new Utilities.TableRowCounter (GetNumberOfRows);
-               }
-
-               void WriteBlobPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_blobHeapIdxSz);
-               }
-
-               void WriteStringPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_stringsHeapIdxSz);
-               }
-
-               void WriteGuidPointer (uint pointer)
-               {
-                       WriteByIndexSize (pointer, m_guidHeapIdxSz);
-               }
-
-               void WriteTablePointer (uint pointer, int rid)
-               {
-                       WriteByIndexSize (pointer, GetNumberOfRows (rid) < (1 << 16) ? 2 : 4);
-               }
-
-               void WriteMetadataToken (MetadataToken token, CodedIndex ci)
-               {
-                       WriteByIndexSize (Utilities.CompressMetadataToken (ci, token),
-                               Utilities.GetCodedIndexSize (ci, m_counter, m_ciCache));
-               }
-
-               int GetNumberOfRows (int rid)
-               {
-                       IMetadataTable t = m_root.Streams.TablesHeap [rid];
-                       if (t == null || t.Rows == null)
-                               return 0;
-                       return t.Rows.Count;
-               }
-
-               void WriteByIndexSize (uint value, int size)
-               {
-                       if (size == 4)
-                               m_binaryWriter.Write (value);
-                       else if (size == 2)
-                               m_binaryWriter.Write ((ushort) value);
-                       else
-                               throw new MetadataFormatException ("Non valid size for indexing");
-               }
-
-               public AssemblyRow CreateAssemblyRow (AssemblyHashAlgorithm _hashAlgId, ushort _majorVersion, ushort _minorVersion, ushort _buildNumber, ushort _revisionNumber, AssemblyFlags _flags, uint _publicKey, uint _name, uint _culture)
-               {
-                       AssemblyRow row = new AssemblyRow ();
-                       row.HashAlgId = _hashAlgId;
-                       row.MajorVersion = _majorVersion;
-                       row.MinorVersion = _minorVersion;
-                       row.BuildNumber = _buildNumber;
-                       row.RevisionNumber = _revisionNumber;
-                       row.Flags = _flags;
-                       row.PublicKey = _publicKey;
-                       row.Name = _name;
-                       row.Culture = _culture;
-                       return row;
-               }
-
-               public AssemblyOSRow CreateAssemblyOSRow (uint _oSPlatformID, uint _oSMajorVersion, uint _oSMinorVersion)
-               {
-                       AssemblyOSRow row = new AssemblyOSRow ();
-                       row.OSPlatformID = _oSPlatformID;
-                       row.OSMajorVersion = _oSMajorVersion;
-                       row.OSMinorVersion = _oSMinorVersion;
-                       return row;
-               }
-
-               public AssemblyProcessorRow CreateAssemblyProcessorRow (uint _processor)
-               {
-                       AssemblyProcessorRow row = new AssemblyProcessorRow ();
-                       row.Processor = _processor;
-                       return row;
-               }
-
-               public AssemblyRefRow CreateAssemblyRefRow (ushort _majorVersion, ushort _minorVersion, ushort _buildNumber, ushort _revisionNumber, AssemblyFlags _flags, uint _publicKeyOrToken, uint _name, uint _culture, uint _hashValue)
-               {
-                       AssemblyRefRow row = new AssemblyRefRow ();
-                       row.MajorVersion = _majorVersion;
-                       row.MinorVersion = _minorVersion;
-                       row.BuildNumber = _buildNumber;
-                       row.RevisionNumber = _revisionNumber;
-                       row.Flags = _flags;
-                       row.PublicKeyOrToken = _publicKeyOrToken;
-                       row.Name = _name;
-                       row.Culture = _culture;
-                       row.HashValue = _hashValue;
-                       return row;
-               }
-
-               public AssemblyRefOSRow CreateAssemblyRefOSRow (uint _oSPlatformID, uint _oSMajorVersion, uint _oSMinorVersion, uint _assemblyRef)
-               {
-                       AssemblyRefOSRow row = new AssemblyRefOSRow ();
-                       row.OSPlatformID = _oSPlatformID;
-                       row.OSMajorVersion = _oSMajorVersion;
-                       row.OSMinorVersion = _oSMinorVersion;
-                       row.AssemblyRef = _assemblyRef;
-                       return row;
-               }
-
-               public AssemblyRefProcessorRow CreateAssemblyRefProcessorRow (uint _processor, uint _assemblyRef)
-               {
-                       AssemblyRefProcessorRow row = new AssemblyRefProcessorRow ();
-                       row.Processor = _processor;
-                       row.AssemblyRef = _assemblyRef;
-                       return row;
-               }
-
-               public ClassLayoutRow CreateClassLayoutRow (ushort _packingSize, uint _classSize, uint _parent)
-               {
-                       ClassLayoutRow row = new ClassLayoutRow ();
-                       row.PackingSize = _packingSize;
-                       row.ClassSize = _classSize;
-                       row.Parent = _parent;
-                       return row;
-               }
-
-               public ConstantRow CreateConstantRow (ElementType _type, MetadataToken _parent, uint _value)
-               {
-                       ConstantRow row = new ConstantRow ();
-                       row.Type = _type;
-                       row.Parent = _parent;
-                       row.Value = _value;
-                       return row;
-               }
-
-               public CustomAttributeRow CreateCustomAttributeRow (MetadataToken _parent, MetadataToken _type, uint _value)
-               {
-                       CustomAttributeRow row = new CustomAttributeRow ();
-                       row.Parent = _parent;
-                       row.Type = _type;
-                       row.Value = _value;
-                       return row;
-               }
-
-               public DeclSecurityRow CreateDeclSecurityRow (SecurityAction _action, MetadataToken _parent, uint _permissionSet)
-               {
-                       DeclSecurityRow row = new DeclSecurityRow ();
-                       row.Action = _action;
-                       row.Parent = _parent;
-                       row.PermissionSet = _permissionSet;
-                       return row;
-               }
-
-               public EventRow CreateEventRow (EventAttributes _eventFlags, uint _name, MetadataToken _eventType)
-               {
-                       EventRow row = new EventRow ();
-                       row.EventFlags = _eventFlags;
-                       row.Name = _name;
-                       row.EventType = _eventType;
-                       return row;
-               }
-
-               public EventMapRow CreateEventMapRow (uint _parent, uint _eventList)
-               {
-                       EventMapRow row = new EventMapRow ();
-                       row.Parent = _parent;
-                       row.EventList = _eventList;
-                       return row;
-               }
-
-               public EventPtrRow CreateEventPtrRow (uint _event)
-               {
-                       EventPtrRow row = new EventPtrRow ();
-                       row.Event = _event;
-                       return row;
-               }
-
-               public ExportedTypeRow CreateExportedTypeRow (TypeAttributes _flags, uint _typeDefId, uint _typeName, uint _typeNamespace, MetadataToken _implementation)
-               {
-                       ExportedTypeRow row = new ExportedTypeRow ();
-                       row.Flags = _flags;
-                       row.TypeDefId = _typeDefId;
-                       row.TypeName = _typeName;
-                       row.TypeNamespace = _typeNamespace;
-                       row.Implementation = _implementation;
-                       return row;
-               }
-
-               public FieldRow CreateFieldRow (FieldAttributes _flags, uint _name, uint _signature)
-               {
-                       FieldRow row = new FieldRow ();
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.Signature = _signature;
-                       return row;
-               }
-
-               public FieldLayoutRow CreateFieldLayoutRow (uint _offset, uint _field)
-               {
-                       FieldLayoutRow row = new FieldLayoutRow ();
-                       row.Offset = _offset;
-                       row.Field = _field;
-                       return row;
-               }
-
-               public FieldMarshalRow CreateFieldMarshalRow (MetadataToken _parent, uint _nativeType)
-               {
-                       FieldMarshalRow row = new FieldMarshalRow ();
-                       row.Parent = _parent;
-                       row.NativeType = _nativeType;
-                       return row;
-               }
-
-               public FieldPtrRow CreateFieldPtrRow (uint _field)
-               {
-                       FieldPtrRow row = new FieldPtrRow ();
-                       row.Field = _field;
-                       return row;
-               }
-
-               public FieldRVARow CreateFieldRVARow (RVA _rVA, uint _field)
-               {
-                       FieldRVARow row = new FieldRVARow ();
-                       row.RVA = _rVA;
-                       row.Field = _field;
-                       return row;
-               }
-
-               public FileRow CreateFileRow (FileAttributes _flags, uint _name, uint _hashValue)
-               {
-                       FileRow row = new FileRow ();
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.HashValue = _hashValue;
-                       return row;
-               }
-
-               public GenericParamRow CreateGenericParamRow (ushort _number, GenericParameterAttributes _flags, MetadataToken _owner, uint _name)
-               {
-                       GenericParamRow row = new GenericParamRow ();
-                       row.Number = _number;
-                       row.Flags = _flags;
-                       row.Owner = _owner;
-                       row.Name = _name;
-                       return row;
-               }
-
-               public GenericParamConstraintRow CreateGenericParamConstraintRow (uint _owner, MetadataToken _constraint)
-               {
-                       GenericParamConstraintRow row = new GenericParamConstraintRow ();
-                       row.Owner = _owner;
-                       row.Constraint = _constraint;
-                       return row;
-               }
-
-               public ImplMapRow CreateImplMapRow (PInvokeAttributes _mappingFlags, MetadataToken _memberForwarded, uint _importName, uint _importScope)
-               {
-                       ImplMapRow row = new ImplMapRow ();
-                       row.MappingFlags = _mappingFlags;
-                       row.MemberForwarded = _memberForwarded;
-                       row.ImportName = _importName;
-                       row.ImportScope = _importScope;
-                       return row;
-               }
-
-               public InterfaceImplRow CreateInterfaceImplRow (uint _class, MetadataToken _interface)
-               {
-                       InterfaceImplRow row = new InterfaceImplRow ();
-                       row.Class = _class;
-                       row.Interface = _interface;
-                       return row;
-               }
-
-               public ManifestResourceRow CreateManifestResourceRow (uint _offset, ManifestResourceAttributes _flags, uint _name, MetadataToken _implementation)
-               {
-                       ManifestResourceRow row = new ManifestResourceRow ();
-                       row.Offset = _offset;
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.Implementation = _implementation;
-                       return row;
-               }
-
-               public MemberRefRow CreateMemberRefRow (MetadataToken _class, uint _name, uint _signature)
-               {
-                       MemberRefRow row = new MemberRefRow ();
-                       row.Class = _class;
-                       row.Name = _name;
-                       row.Signature = _signature;
-                       return row;
-               }
-
-               public MethodRow CreateMethodRow (RVA _rVA, MethodImplAttributes _implFlags, MethodAttributes _flags, uint _name, uint _signature, uint _paramList)
-               {
-                       MethodRow row = new MethodRow ();
-                       row.RVA = _rVA;
-                       row.ImplFlags = _implFlags;
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.Signature = _signature;
-                       row.ParamList = _paramList;
-                       return row;
-               }
-
-               public MethodImplRow CreateMethodImplRow (uint _class, MetadataToken _methodBody, MetadataToken _methodDeclaration)
-               {
-                       MethodImplRow row = new MethodImplRow ();
-                       row.Class = _class;
-                       row.MethodBody = _methodBody;
-                       row.MethodDeclaration = _methodDeclaration;
-                       return row;
-               }
-
-               public MethodPtrRow CreateMethodPtrRow (uint _method)
-               {
-                       MethodPtrRow row = new MethodPtrRow ();
-                       row.Method = _method;
-                       return row;
-               }
-
-               public MethodSemanticsRow CreateMethodSemanticsRow (MethodSemanticsAttributes _semantics, uint _method, MetadataToken _association)
-               {
-                       MethodSemanticsRow row = new MethodSemanticsRow ();
-                       row.Semantics = _semantics;
-                       row.Method = _method;
-                       row.Association = _association;
-                       return row;
-               }
-
-               public MethodSpecRow CreateMethodSpecRow (MetadataToken _method, uint _instantiation)
-               {
-                       MethodSpecRow row = new MethodSpecRow ();
-                       row.Method = _method;
-                       row.Instantiation = _instantiation;
-                       return row;
-               }
-
-               public ModuleRow CreateModuleRow (ushort _generation, uint _name, uint _mvid, uint _encId, uint _encBaseId)
-               {
-                       ModuleRow row = new ModuleRow ();
-                       row.Generation = _generation;
-                       row.Name = _name;
-                       row.Mvid = _mvid;
-                       row.EncId = _encId;
-                       row.EncBaseId = _encBaseId;
-                       return row;
-               }
-
-               public ModuleRefRow CreateModuleRefRow (uint _name)
-               {
-                       ModuleRefRow row = new ModuleRefRow ();
-                       row.Name = _name;
-                       return row;
-               }
-
-               public NestedClassRow CreateNestedClassRow (uint _nestedClass, uint _enclosingClass)
-               {
-                       NestedClassRow row = new NestedClassRow ();
-                       row.NestedClass = _nestedClass;
-                       row.EnclosingClass = _enclosingClass;
-                       return row;
-               }
-
-               public ParamRow CreateParamRow (ParameterAttributes _flags, ushort _sequence, uint _name)
-               {
-                       ParamRow row = new ParamRow ();
-                       row.Flags = _flags;
-                       row.Sequence = _sequence;
-                       row.Name = _name;
-                       return row;
-               }
-
-               public ParamPtrRow CreateParamPtrRow (uint _param)
-               {
-                       ParamPtrRow row = new ParamPtrRow ();
-                       row.Param = _param;
-                       return row;
-               }
-
-               public PropertyRow CreatePropertyRow (PropertyAttributes _flags, uint _name, uint _type)
-               {
-                       PropertyRow row = new PropertyRow ();
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.Type = _type;
-                       return row;
-               }
-
-               public PropertyMapRow CreatePropertyMapRow (uint _parent, uint _propertyList)
-               {
-                       PropertyMapRow row = new PropertyMapRow ();
-                       row.Parent = _parent;
-                       row.PropertyList = _propertyList;
-                       return row;
-               }
-
-               public PropertyPtrRow CreatePropertyPtrRow (uint _property)
-               {
-                       PropertyPtrRow row = new PropertyPtrRow ();
-                       row.Property = _property;
-                       return row;
-               }
-
-               public StandAloneSigRow CreateStandAloneSigRow (uint _signature)
-               {
-                       StandAloneSigRow row = new StandAloneSigRow ();
-                       row.Signature = _signature;
-                       return row;
-               }
-
-               public TypeDefRow CreateTypeDefRow (TypeAttributes _flags, uint _name, uint _namespace, MetadataToken _extends, uint _fieldList, uint _methodList)
-               {
-                       TypeDefRow row = new TypeDefRow ();
-                       row.Flags = _flags;
-                       row.Name = _name;
-                       row.Namespace = _namespace;
-                       row.Extends = _extends;
-                       row.FieldList = _fieldList;
-                       row.MethodList = _methodList;
-                       return row;
-               }
-
-               public TypeRefRow CreateTypeRefRow (MetadataToken _resolutionScope, uint _name, uint _namespace)
-               {
-                       TypeRefRow row = new TypeRefRow ();
-                       row.ResolutionScope = _resolutionScope;
-                       row.Name = _name;
-                       row.Namespace = _namespace;
-                       return row;
-               }
-
-               public TypeSpecRow CreateTypeSpecRow (uint _signature)
-               {
-                       TypeSpecRow row = new TypeSpecRow ();
-                       row.Signature = _signature;
-                       return row;
-               }
-
-               public override void VisitRowCollection (RowCollection coll)
-               {
-                       m_blobHeapIdxSz = m_root.Streams.BlobHeap != null ?
-                               m_root.Streams.BlobHeap.IndexSize : 2;
-                       m_stringsHeapIdxSz = m_root.Streams.StringsHeap != null ?
-                               m_root.Streams.StringsHeap.IndexSize : 2;
-                       m_guidHeapIdxSz = m_root.Streams.GuidHeap != null ?
-                               m_root.Streams.GuidHeap.IndexSize : 2;
-               }
-
-               public override void VisitAssemblyRow (AssemblyRow row)
-               {
-                       m_binaryWriter.Write ((uint) row.HashAlgId);
-                       m_binaryWriter.Write (row.MajorVersion);
-                       m_binaryWriter.Write (row.MinorVersion);
-                       m_binaryWriter.Write (row.BuildNumber);
-                       m_binaryWriter.Write (row.RevisionNumber);
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       WriteBlobPointer (row.PublicKey);
-                       WriteStringPointer (row.Name);
-                       WriteStringPointer (row.Culture);
-               }
-
-               public override void VisitAssemblyOSRow (AssemblyOSRow row)
-               {
-                       m_binaryWriter.Write (row.OSPlatformID);
-                       m_binaryWriter.Write (row.OSMajorVersion);
-                       m_binaryWriter.Write (row.OSMinorVersion);
-               }
-
-               public override void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
-               {
-                       m_binaryWriter.Write (row.Processor);
-               }
-
-               public override void VisitAssemblyRefRow (AssemblyRefRow row)
-               {
-                       m_binaryWriter.Write (row.MajorVersion);
-                       m_binaryWriter.Write (row.MinorVersion);
-                       m_binaryWriter.Write (row.BuildNumber);
-                       m_binaryWriter.Write (row.RevisionNumber);
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       WriteBlobPointer (row.PublicKeyOrToken);
-                       WriteStringPointer (row.Name);
-                       WriteStringPointer (row.Culture);
-                       WriteBlobPointer (row.HashValue);
-               }
-
-               public override void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
-               {
-                       m_binaryWriter.Write (row.OSPlatformID);
-                       m_binaryWriter.Write (row.OSMajorVersion);
-                       m_binaryWriter.Write (row.OSMinorVersion);
-                       WriteTablePointer (row.AssemblyRef, AssemblyRefTable.RId);
-               }
-
-               public override void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
-               {
-                       m_binaryWriter.Write (row.Processor);
-                       WriteTablePointer (row.AssemblyRef, AssemblyRefTable.RId);
-               }
-
-               public override void VisitClassLayoutRow (ClassLayoutRow row)
-               {
-                       m_binaryWriter.Write (row.PackingSize);
-                       m_binaryWriter.Write (row.ClassSize);
-                       WriteTablePointer (row.Parent, TypeDefTable.RId);
-               }
-
-               public override void VisitConstantRow (ConstantRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.Type);
-                       WriteMetadataToken (row.Parent, CodedIndex.HasConstant);
-                       WriteBlobPointer (row.Value);
-               }
-
-               public override void VisitCustomAttributeRow (CustomAttributeRow row)
-               {
-                       WriteMetadataToken (row.Parent, CodedIndex.HasCustomAttribute);
-                       WriteMetadataToken (row.Type, CodedIndex.CustomAttributeType);
-                       WriteBlobPointer (row.Value);
-               }
-
-               public override void VisitDeclSecurityRow (DeclSecurityRow row)
-               {
-                       m_binaryWriter.Write ((short) row.Action);
-                       WriteMetadataToken (row.Parent, CodedIndex.HasDeclSecurity);
-                       WriteBlobPointer (row.PermissionSet);
-               }
-
-               public override void VisitEventRow (EventRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.EventFlags);
-                       WriteStringPointer (row.Name);
-                       WriteMetadataToken (row.EventType, CodedIndex.TypeDefOrRef);
-               }
-
-               public override void VisitEventMapRow (EventMapRow row)
-               {
-                       WriteTablePointer (row.Parent, TypeDefTable.RId);
-                       WriteTablePointer (row.EventList, EventTable.RId);
-               }
-
-               public override void VisitEventPtrRow (EventPtrRow row)
-               {
-                       WriteTablePointer (row.Event, EventTable.RId);
-               }
-
-               public override void VisitExportedTypeRow (ExportedTypeRow row)
-               {
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       m_binaryWriter.Write (row.TypeDefId);
-                       WriteStringPointer (row.TypeName);
-                       WriteStringPointer (row.TypeNamespace);
-                       WriteMetadataToken (row.Implementation, CodedIndex.Implementation);
-               }
-
-               public override void VisitFieldRow (FieldRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteBlobPointer (row.Signature);
-               }
-
-               public override void VisitFieldLayoutRow (FieldLayoutRow row)
-               {
-                       m_binaryWriter.Write (row.Offset);
-                       WriteTablePointer (row.Field, FieldTable.RId);
-               }
-
-               public override void VisitFieldMarshalRow (FieldMarshalRow row)
-               {
-                       WriteMetadataToken (row.Parent, CodedIndex.HasFieldMarshal);
-                       WriteBlobPointer (row.NativeType);
-               }
-
-               public override void VisitFieldPtrRow (FieldPtrRow row)
-               {
-                       WriteTablePointer (row.Field, FieldTable.RId);
-               }
-
-               public override void VisitFieldRVARow (FieldRVARow row)
-               {
-                       m_binaryWriter.Write (row.RVA.Value);
-                       WriteTablePointer (row.Field, FieldTable.RId);
-               }
-
-               public override void VisitFileRow (FileRow row)
-               {
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteBlobPointer (row.HashValue);
-               }
-
-               public override void VisitGenericParamRow (GenericParamRow row)
-               {
-                       m_binaryWriter.Write (row.Number);
-                       m_binaryWriter.Write ((ushort) row.Flags);
-                       WriteMetadataToken (row.Owner, CodedIndex.TypeOrMethodDef);
-                       WriteStringPointer (row.Name);
-               }
-
-               public override void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
-               {
-                       WriteTablePointer (row.Owner, GenericParamTable.RId);
-                       WriteMetadataToken (row.Constraint, CodedIndex.TypeDefOrRef);
-               }
-
-               public override void VisitImplMapRow (ImplMapRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.MappingFlags);
-                       WriteMetadataToken (row.MemberForwarded, CodedIndex.MemberForwarded);
-                       WriteStringPointer (row.ImportName);
-                       WriteTablePointer (row.ImportScope, ModuleRefTable.RId);
-               }
-
-               public override void VisitInterfaceImplRow (InterfaceImplRow row)
-               {
-                       WriteTablePointer (row.Class, TypeDefTable.RId);
-                       WriteMetadataToken (row.Interface, CodedIndex.TypeDefOrRef);
-               }
-
-               public override void VisitManifestResourceRow (ManifestResourceRow row)
-               {
-                       m_binaryWriter.Write (row.Offset);
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteMetadataToken (row.Implementation, CodedIndex.Implementation);
-               }
-
-               public override void VisitMemberRefRow (MemberRefRow row)
-               {
-                       WriteMetadataToken (row.Class, CodedIndex.MemberRefParent);
-                       WriteStringPointer (row.Name);
-                       WriteBlobPointer (row.Signature);
-               }
-
-               public override void VisitMethodRow (MethodRow row)
-               {
-                       m_binaryWriter.Write (row.RVA.Value);
-                       m_binaryWriter.Write ((ushort) row.ImplFlags);
-                       m_binaryWriter.Write ((ushort) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteBlobPointer (row.Signature);
-                       WriteTablePointer (row.ParamList, ParamTable.RId);
-               }
-
-               public override void VisitMethodImplRow (MethodImplRow row)
-               {
-                       WriteTablePointer (row.Class, TypeDefTable.RId);
-                       WriteMetadataToken (row.MethodBody, CodedIndex.MethodDefOrRef);
-                       WriteMetadataToken (row.MethodDeclaration, CodedIndex.MethodDefOrRef);
-               }
-
-               public override void VisitMethodPtrRow (MethodPtrRow row)
-               {
-                       WriteTablePointer (row.Method, MethodTable.RId);
-               }
-
-               public override void VisitMethodSemanticsRow (MethodSemanticsRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.Semantics);
-                       WriteTablePointer (row.Method, MethodTable.RId);
-                       WriteMetadataToken (row.Association, CodedIndex.HasSemantics);
-               }
-
-               public override void VisitMethodSpecRow (MethodSpecRow row)
-               {
-                       WriteMetadataToken (row.Method, CodedIndex.MethodDefOrRef);
-                       WriteBlobPointer (row.Instantiation);
-               }
-
-               public override void VisitModuleRow (ModuleRow row)
-               {
-                       m_binaryWriter.Write (row.Generation);
-                       WriteStringPointer (row.Name);
-                       WriteGuidPointer (row.Mvid);
-                       WriteGuidPointer (row.EncId);
-                       WriteGuidPointer (row.EncBaseId);
-               }
-
-               public override void VisitModuleRefRow (ModuleRefRow row)
-               {
-                       WriteStringPointer (row.Name);
-               }
-
-               public override void VisitNestedClassRow (NestedClassRow row)
-               {
-                       WriteTablePointer (row.NestedClass, TypeDefTable.RId);
-                       WriteTablePointer (row.EnclosingClass, TypeDefTable.RId);
-               }
-
-               public override void VisitParamRow (ParamRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.Flags);
-                       m_binaryWriter.Write (row.Sequence);
-                       WriteStringPointer (row.Name);
-               }
-
-               public override void VisitParamPtrRow (ParamPtrRow row)
-               {
-                       WriteTablePointer (row.Param, ParamTable.RId);
-               }
-
-               public override void VisitPropertyRow (PropertyRow row)
-               {
-                       m_binaryWriter.Write ((ushort) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteBlobPointer (row.Type);
-               }
-
-               public override void VisitPropertyMapRow (PropertyMapRow row)
-               {
-                       WriteTablePointer (row.Parent, TypeDefTable.RId);
-                       WriteTablePointer (row.PropertyList, PropertyTable.RId);
-               }
-
-               public override void VisitPropertyPtrRow (PropertyPtrRow row)
-               {
-                       WriteTablePointer (row.Property, PropertyTable.RId);
-               }
-
-               public override void VisitStandAloneSigRow (StandAloneSigRow row)
-               {
-                       WriteBlobPointer (row.Signature);
-               }
-
-               public override void VisitTypeDefRow (TypeDefRow row)
-               {
-                       m_binaryWriter.Write ((uint) row.Flags);
-                       WriteStringPointer (row.Name);
-                       WriteStringPointer (row.Namespace);
-                       WriteMetadataToken (row.Extends, CodedIndex.TypeDefOrRef);
-                       WriteTablePointer (row.FieldList, FieldTable.RId);
-                       WriteTablePointer (row.MethodList, MethodTable.RId);
-               }
-
-               public override void VisitTypeRefRow (TypeRefRow row)
-               {
-                       WriteMetadataToken (row.ResolutionScope, CodedIndex.ResolutionScope);
-                       WriteStringPointer (row.Name);
-                       WriteStringPointer (row.Namespace);
-               }
-
-               public override void VisitTypeSpecRow (TypeSpecRow row)
-               {
-                       WriteBlobPointer (row.Signature);
-               }
-
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs
deleted file mode 100644 (file)
index 96ba0b4..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// MetadataStream.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public class MetadataStream : IMetadataVisitable {
-
-               public const string Strings = "#Strings";
-               public const string Tables = "#~";
-               public const string IncrementalTables = "#-";
-               public const string Blob = "#Blob";
-               public const string GUID = "#GUID";
-               public const string UserStrings = "#US";
-
-               MetadataStreamHeader m_header;
-               MetadataHeap m_heap;
-
-               public MetadataStreamHeader Header {
-                       get { return m_header; }
-                       set { m_header = value; }
-               }
-
-               public MetadataHeap Heap {
-                       get { return m_heap; }
-                       set { m_heap = value; }
-               }
-
-               internal MetadataStream ()
-               {
-                       m_header = new MetadataStreamHeader (this);
-               }
-
-               public void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitMetadataStream (this);
-
-                       m_header.Accept (visitor);
-                       if (m_heap != null)
-                               m_heap.Accept (visitor);
-               }
-
-               public class MetadataStreamHeader : IMetadataVisitable {
-
-                       public uint Offset;
-                       public uint Size;
-                       public string Name;
-
-                       private MetadataStream m_stream;
-
-                       public MetadataStream Stream {
-                               get { return m_stream; }
-                       }
-
-                       internal MetadataStreamHeader (MetadataStream stream)
-                       {
-                               m_stream = stream;
-                       }
-
-                       public void Accept (IMetadataVisitor visitor)
-                       {
-                               visitor.VisitMetadataStreamHeader (this);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs
deleted file mode 100644 (file)
index b602f17..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// MetadataStreamCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       public class MetadataStreamCollection : ICollection, IMetadataVisitable {
-
-               IList m_items;
-
-               BlobHeap m_blobHeap;
-               GuidHeap m_guidHeap;
-               StringsHeap m_stringsHeap;
-               UserStringsHeap m_usHeap;
-               TablesHeap m_tablesHeap;
-
-               public MetadataStream this [int index] {
-                       get { return m_items [index] as MetadataStream; }
-                       set { m_items [index] = value; }
-               }
-
-               public int Count {
-                       get { return m_items.Count; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               public BlobHeap BlobHeap {
-                       get {
-                               if (m_blobHeap == null)
-                                       m_blobHeap = GetHeap (MetadataStream.Blob) as BlobHeap;
-                               return m_blobHeap;
-                       }
-               }
-
-               public GuidHeap GuidHeap {
-                       get {
-                               if (m_guidHeap == null)
-                                       m_guidHeap = GetHeap (MetadataStream.GUID) as GuidHeap;
-                               return m_guidHeap;
-                       }
-               }
-
-               public StringsHeap StringsHeap {
-                       get {
-                               if (m_stringsHeap == null)
-                                       m_stringsHeap = GetHeap (MetadataStream.Strings) as StringsHeap;
-                               return m_stringsHeap;
-                       }
-               }
-
-               public TablesHeap TablesHeap {
-                       get {
-                               if (m_tablesHeap == null)
-                                       m_tablesHeap = GetHeap (MetadataStream.Tables) as TablesHeap;
-                               return m_tablesHeap;
-                       }
-               }
-
-               public UserStringsHeap UserStringsHeap {
-                       get {
-                               if (m_usHeap == null)
-                                       m_usHeap = GetHeap (MetadataStream.UserStrings) as UserStringsHeap;
-                               return m_usHeap;
-                       }
-               }
-
-               public MetadataStreamCollection ()
-               {
-                       m_items = new ArrayList (5);
-               }
-
-               private MetadataHeap GetHeap (string name)
-               {
-                       for (int i = 0; i < m_items.Count; i++) {
-                               MetadataStream stream = m_items [i] as MetadataStream;
-                               if (stream.Heap.Name == name)
-                                       return stream.Heap;
-                       }
-
-                       return null;
-               }
-
-               internal void Add (MetadataStream value)
-               {
-                       m_items.Add (value);
-               }
-
-               internal void Remove (MetadataStream value)
-               {
-                       m_items.Remove (value);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       m_items.CopyTo (ary, index);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return m_items.GetEnumerator ();
-               }
-
-               public void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitMetadataStreamCollection (this);
-
-                       for (int i = 0; i < m_items.Count; i++)
-                               this [i].Accept (visitor);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableReader.cs
deleted file mode 100644 (file)
index 94a980e..0000000
+++ /dev/null
@@ -1,769 +0,0 @@
-//
-// MetadataTableReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Jul 17 00:22:32 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-
-       sealed class MetadataTableReader : BaseMetadataTableVisitor {
-
-               MetadataRoot m_metadataRoot;
-               TablesHeap m_heap;
-               MetadataRowReader m_mrrv;
-               BinaryReader m_binaryReader;
-
-               int [] m_rows = new int [TablesHeap.MaxTableCount];
-
-               public MetadataTableReader (MetadataReader mrv)
-               {
-                       m_metadataRoot = mrv.GetMetadataRoot ();
-                       m_heap = m_metadataRoot.Streams.TablesHeap;
-                       m_binaryReader = new BinaryReader (new MemoryStream (m_heap.Data));
-                       m_binaryReader.BaseStream.Position = 24;
-                       m_mrrv = new MetadataRowReader (this);
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_metadataRoot;
-               }
-
-               public BinaryReader GetReader ()
-               {
-                       return m_binaryReader;
-               }
-
-               public override IMetadataRowVisitor GetRowVisitor ()
-               {
-                       return m_mrrv;
-               }
-
-               public int GetNumberOfRows (int rid)
-               {
-                       return m_rows [rid];
-               }
-
-               public AssemblyTable GetAssemblyTable ()
-               {
-                       return (AssemblyTable) m_heap [AssemblyTable.RId];
-               }
-
-               public AssemblyOSTable GetAssemblyOSTable ()
-               {
-                       return (AssemblyOSTable) m_heap [AssemblyOSTable.RId];
-               }
-
-               public AssemblyProcessorTable GetAssemblyProcessorTable ()
-               {
-                       return (AssemblyProcessorTable) m_heap [AssemblyProcessorTable.RId];
-               }
-
-               public AssemblyRefTable GetAssemblyRefTable ()
-               {
-                       return (AssemblyRefTable) m_heap [AssemblyRefTable.RId];
-               }
-
-               public AssemblyRefOSTable GetAssemblyRefOSTable ()
-               {
-                       return (AssemblyRefOSTable) m_heap [AssemblyRefOSTable.RId];
-               }
-
-               public AssemblyRefProcessorTable GetAssemblyRefProcessorTable ()
-               {
-                       return (AssemblyRefProcessorTable) m_heap [AssemblyRefProcessorTable.RId];
-               }
-
-               public ClassLayoutTable GetClassLayoutTable ()
-               {
-                       return (ClassLayoutTable) m_heap [ClassLayoutTable.RId];
-               }
-
-               public ConstantTable GetConstantTable ()
-               {
-                       return (ConstantTable) m_heap [ConstantTable.RId];
-               }
-
-               public CustomAttributeTable GetCustomAttributeTable ()
-               {
-                       return (CustomAttributeTable) m_heap [CustomAttributeTable.RId];
-               }
-
-               public DeclSecurityTable GetDeclSecurityTable ()
-               {
-                       return (DeclSecurityTable) m_heap [DeclSecurityTable.RId];
-               }
-
-               public EventTable GetEventTable ()
-               {
-                       return (EventTable) m_heap [EventTable.RId];
-               }
-
-               public EventMapTable GetEventMapTable ()
-               {
-                       return (EventMapTable) m_heap [EventMapTable.RId];
-               }
-
-               public EventPtrTable GetEventPtrTable ()
-               {
-                       return (EventPtrTable) m_heap [EventPtrTable.RId];
-               }
-
-               public ExportedTypeTable GetExportedTypeTable ()
-               {
-                       return (ExportedTypeTable) m_heap [ExportedTypeTable.RId];
-               }
-
-               public FieldTable GetFieldTable ()
-               {
-                       return (FieldTable) m_heap [FieldTable.RId];
-               }
-
-               public FieldLayoutTable GetFieldLayoutTable ()
-               {
-                       return (FieldLayoutTable) m_heap [FieldLayoutTable.RId];
-               }
-
-               public FieldMarshalTable GetFieldMarshalTable ()
-               {
-                       return (FieldMarshalTable) m_heap [FieldMarshalTable.RId];
-               }
-
-               public FieldPtrTable GetFieldPtrTable ()
-               {
-                       return (FieldPtrTable) m_heap [FieldPtrTable.RId];
-               }
-
-               public FieldRVATable GetFieldRVATable ()
-               {
-                       return (FieldRVATable) m_heap [FieldRVATable.RId];
-               }
-
-               public FileTable GetFileTable ()
-               {
-                       return (FileTable) m_heap [FileTable.RId];
-               }
-
-               public GenericParamTable GetGenericParamTable ()
-               {
-                       return (GenericParamTable) m_heap [GenericParamTable.RId];
-               }
-
-               public GenericParamConstraintTable GetGenericParamConstraintTable ()
-               {
-                       return (GenericParamConstraintTable) m_heap [GenericParamConstraintTable.RId];
-               }
-
-               public ImplMapTable GetImplMapTable ()
-               {
-                       return (ImplMapTable) m_heap [ImplMapTable.RId];
-               }
-
-               public InterfaceImplTable GetInterfaceImplTable ()
-               {
-                       return (InterfaceImplTable) m_heap [InterfaceImplTable.RId];
-               }
-
-               public ManifestResourceTable GetManifestResourceTable ()
-               {
-                       return (ManifestResourceTable) m_heap [ManifestResourceTable.RId];
-               }
-
-               public MemberRefTable GetMemberRefTable ()
-               {
-                       return (MemberRefTable) m_heap [MemberRefTable.RId];
-               }
-
-               public MethodTable GetMethodTable ()
-               {
-                       return (MethodTable) m_heap [MethodTable.RId];
-               }
-
-               public MethodImplTable GetMethodImplTable ()
-               {
-                       return (MethodImplTable) m_heap [MethodImplTable.RId];
-               }
-
-               public MethodPtrTable GetMethodPtrTable ()
-               {
-                       return (MethodPtrTable) m_heap [MethodPtrTable.RId];
-               }
-
-               public MethodSemanticsTable GetMethodSemanticsTable ()
-               {
-                       return (MethodSemanticsTable) m_heap [MethodSemanticsTable.RId];
-               }
-
-               public MethodSpecTable GetMethodSpecTable ()
-               {
-                       return (MethodSpecTable) m_heap [MethodSpecTable.RId];
-               }
-
-               public ModuleTable GetModuleTable ()
-               {
-                       return (ModuleTable) m_heap [ModuleTable.RId];
-               }
-
-               public ModuleRefTable GetModuleRefTable ()
-               {
-                       return (ModuleRefTable) m_heap [ModuleRefTable.RId];
-               }
-
-               public NestedClassTable GetNestedClassTable ()
-               {
-                       return (NestedClassTable) m_heap [NestedClassTable.RId];
-               }
-
-               public ParamTable GetParamTable ()
-               {
-                       return (ParamTable) m_heap [ParamTable.RId];
-               }
-
-               public ParamPtrTable GetParamPtrTable ()
-               {
-                       return (ParamPtrTable) m_heap [ParamPtrTable.RId];
-               }
-
-               public PropertyTable GetPropertyTable ()
-               {
-                       return (PropertyTable) m_heap [PropertyTable.RId];
-               }
-
-               public PropertyMapTable GetPropertyMapTable ()
-               {
-                       return (PropertyMapTable) m_heap [PropertyMapTable.RId];
-               }
-
-               public PropertyPtrTable GetPropertyPtrTable ()
-               {
-                       return (PropertyPtrTable) m_heap [PropertyPtrTable.RId];
-               }
-
-               public StandAloneSigTable GetStandAloneSigTable ()
-               {
-                       return (StandAloneSigTable) m_heap [StandAloneSigTable.RId];
-               }
-
-               public TypeDefTable GetTypeDefTable ()
-               {
-                       return (TypeDefTable) m_heap [TypeDefTable.RId];
-               }
-
-               public TypeRefTable GetTypeRefTable ()
-               {
-                       return (TypeRefTable) m_heap [TypeRefTable.RId];
-               }
-
-               public TypeSpecTable GetTypeSpecTable ()
-               {
-                       return (TypeSpecTable) m_heap [TypeSpecTable.RId];
-               }
-
-               public override void VisitTableCollection (TableCollection coll)
-               {
-                       if (m_heap.HasTable (ModuleTable.RId)) {
-                               coll.Add (new ModuleTable ());
-                               m_rows [ModuleTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (TypeRefTable.RId)) {
-                               coll.Add (new TypeRefTable ());
-                               m_rows [TypeRefTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (TypeDefTable.RId)) {
-                               coll.Add (new TypeDefTable ());
-                               m_rows [TypeDefTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FieldPtrTable.RId)) {
-                               coll.Add (new FieldPtrTable ());
-                               m_rows [FieldPtrTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FieldTable.RId)) {
-                               coll.Add (new FieldTable ());
-                               m_rows [FieldTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MethodPtrTable.RId)) {
-                               coll.Add (new MethodPtrTable ());
-                               m_rows [MethodPtrTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MethodTable.RId)) {
-                               coll.Add (new MethodTable ());
-                               m_rows [MethodTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ParamPtrTable.RId)) {
-                               coll.Add (new ParamPtrTable ());
-                               m_rows [ParamPtrTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ParamTable.RId)) {
-                               coll.Add (new ParamTable ());
-                               m_rows [ParamTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (InterfaceImplTable.RId)) {
-                               coll.Add (new InterfaceImplTable ());
-                               m_rows [InterfaceImplTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MemberRefTable.RId)) {
-                               coll.Add (new MemberRefTable ());
-                               m_rows [MemberRefTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ConstantTable.RId)) {
-                               coll.Add (new ConstantTable ());
-                               m_rows [ConstantTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (CustomAttributeTable.RId)) {
-                               coll.Add (new CustomAttributeTable ());
-                               m_rows [CustomAttributeTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FieldMarshalTable.RId)) {
-                               coll.Add (new FieldMarshalTable ());
-                               m_rows [FieldMarshalTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (DeclSecurityTable.RId)) {
-                               coll.Add (new DeclSecurityTable ());
-                               m_rows [DeclSecurityTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ClassLayoutTable.RId)) {
-                               coll.Add (new ClassLayoutTable ());
-                               m_rows [ClassLayoutTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FieldLayoutTable.RId)) {
-                               coll.Add (new FieldLayoutTable ());
-                               m_rows [FieldLayoutTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (StandAloneSigTable.RId)) {
-                               coll.Add (new StandAloneSigTable ());
-                               m_rows [StandAloneSigTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (EventMapTable.RId)) {
-                               coll.Add (new EventMapTable ());
-                               m_rows [EventMapTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (EventPtrTable.RId)) {
-                               coll.Add (new EventPtrTable ());
-                               m_rows [EventPtrTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (EventTable.RId)) {
-                               coll.Add (new EventTable ());
-                               m_rows [EventTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (PropertyMapTable.RId)) {
-                               coll.Add (new PropertyMapTable ());
-                               m_rows [PropertyMapTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (PropertyPtrTable.RId)) {
-                               coll.Add (new PropertyPtrTable ());
-                               m_rows [PropertyPtrTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (PropertyTable.RId)) {
-                               coll.Add (new PropertyTable ());
-                               m_rows [PropertyTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MethodSemanticsTable.RId)) {
-                               coll.Add (new MethodSemanticsTable ());
-                               m_rows [MethodSemanticsTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MethodImplTable.RId)) {
-                               coll.Add (new MethodImplTable ());
-                               m_rows [MethodImplTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ModuleRefTable.RId)) {
-                               coll.Add (new ModuleRefTable ());
-                               m_rows [ModuleRefTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (TypeSpecTable.RId)) {
-                               coll.Add (new TypeSpecTable ());
-                               m_rows [TypeSpecTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ImplMapTable.RId)) {
-                               coll.Add (new ImplMapTable ());
-                               m_rows [ImplMapTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FieldRVATable.RId)) {
-                               coll.Add (new FieldRVATable ());
-                               m_rows [FieldRVATable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyTable.RId)) {
-                               coll.Add (new AssemblyTable ());
-                               m_rows [AssemblyTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyProcessorTable.RId)) {
-                               coll.Add (new AssemblyProcessorTable ());
-                               m_rows [AssemblyProcessorTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyOSTable.RId)) {
-                               coll.Add (new AssemblyOSTable ());
-                               m_rows [AssemblyOSTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyRefTable.RId)) {
-                               coll.Add (new AssemblyRefTable ());
-                               m_rows [AssemblyRefTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyRefProcessorTable.RId)) {
-                               coll.Add (new AssemblyRefProcessorTable ());
-                               m_rows [AssemblyRefProcessorTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (AssemblyRefOSTable.RId)) {
-                               coll.Add (new AssemblyRefOSTable ());
-                               m_rows [AssemblyRefOSTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (FileTable.RId)) {
-                               coll.Add (new FileTable ());
-                               m_rows [FileTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ExportedTypeTable.RId)) {
-                               coll.Add (new ExportedTypeTable ());
-                               m_rows [ExportedTypeTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (ManifestResourceTable.RId)) {
-                               coll.Add (new ManifestResourceTable ());
-                               m_rows [ManifestResourceTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (NestedClassTable.RId)) {
-                               coll.Add (new NestedClassTable ());
-                               m_rows [NestedClassTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (GenericParamTable.RId)) {
-                               coll.Add (new GenericParamTable ());
-                               m_rows [GenericParamTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (MethodSpecTable.RId)) {
-                               coll.Add (new MethodSpecTable ());
-                               m_rows [MethodSpecTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-                       if (m_heap.HasTable (GenericParamConstraintTable.RId)) {
-                               coll.Add (new GenericParamConstraintTable ());
-                               m_rows [GenericParamConstraintTable.RId] = m_binaryReader.ReadInt32 ();
-                       }
-               }
-
-               public override void VisitAssemblyTable (AssemblyTable table)
-               {
-                       int number = m_rows [AssemblyTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyRow ());
-               }
-               public override void VisitAssemblyOSTable (AssemblyOSTable table)
-               {
-                       int number = m_rows [AssemblyOSTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyOSRow ());
-               }
-               public override void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
-               {
-                       int number = m_rows [AssemblyProcessorTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyProcessorRow ());
-               }
-               public override void VisitAssemblyRefTable (AssemblyRefTable table)
-               {
-                       int number = m_rows [AssemblyRefTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyRefRow ());
-               }
-               public override void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
-               {
-                       int number = m_rows [AssemblyRefOSTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyRefOSRow ());
-               }
-               public override void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
-               {
-                       int number = m_rows [AssemblyRefProcessorTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new AssemblyRefProcessorRow ());
-               }
-               public override void VisitClassLayoutTable (ClassLayoutTable table)
-               {
-                       int number = m_rows [ClassLayoutTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ClassLayoutRow ());
-               }
-               public override void VisitConstantTable (ConstantTable table)
-               {
-                       int number = m_rows [ConstantTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ConstantRow ());
-               }
-               public override void VisitCustomAttributeTable (CustomAttributeTable table)
-               {
-                       int number = m_rows [CustomAttributeTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new CustomAttributeRow ());
-               }
-               public override void VisitDeclSecurityTable (DeclSecurityTable table)
-               {
-                       int number = m_rows [DeclSecurityTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new DeclSecurityRow ());
-               }
-               public override void VisitEventTable (EventTable table)
-               {
-                       int number = m_rows [EventTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new EventRow ());
-               }
-               public override void VisitEventMapTable (EventMapTable table)
-               {
-                       int number = m_rows [EventMapTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new EventMapRow ());
-               }
-               public override void VisitEventPtrTable (EventPtrTable table)
-               {
-                       int number = m_rows [EventPtrTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new EventPtrRow ());
-               }
-               public override void VisitExportedTypeTable (ExportedTypeTable table)
-               {
-                       int number = m_rows [ExportedTypeTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ExportedTypeRow ());
-               }
-               public override void VisitFieldTable (FieldTable table)
-               {
-                       int number = m_rows [FieldTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FieldRow ());
-               }
-               public override void VisitFieldLayoutTable (FieldLayoutTable table)
-               {
-                       int number = m_rows [FieldLayoutTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FieldLayoutRow ());
-               }
-               public override void VisitFieldMarshalTable (FieldMarshalTable table)
-               {
-                       int number = m_rows [FieldMarshalTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FieldMarshalRow ());
-               }
-               public override void VisitFieldPtrTable (FieldPtrTable table)
-               {
-                       int number = m_rows [FieldPtrTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FieldPtrRow ());
-               }
-               public override void VisitFieldRVATable (FieldRVATable table)
-               {
-                       int number = m_rows [FieldRVATable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FieldRVARow ());
-               }
-               public override void VisitFileTable (FileTable table)
-               {
-                       int number = m_rows [FileTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new FileRow ());
-               }
-               public override void VisitGenericParamTable (GenericParamTable table)
-               {
-                       int number = m_rows [GenericParamTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new GenericParamRow ());
-               }
-               public override void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
-               {
-                       int number = m_rows [GenericParamConstraintTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new GenericParamConstraintRow ());
-               }
-               public override void VisitImplMapTable (ImplMapTable table)
-               {
-                       int number = m_rows [ImplMapTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ImplMapRow ());
-               }
-               public override void VisitInterfaceImplTable (InterfaceImplTable table)
-               {
-                       int number = m_rows [InterfaceImplTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new InterfaceImplRow ());
-               }
-               public override void VisitManifestResourceTable (ManifestResourceTable table)
-               {
-                       int number = m_rows [ManifestResourceTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ManifestResourceRow ());
-               }
-               public override void VisitMemberRefTable (MemberRefTable table)
-               {
-                       int number = m_rows [MemberRefTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MemberRefRow ());
-               }
-               public override void VisitMethodTable (MethodTable table)
-               {
-                       int number = m_rows [MethodTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MethodRow ());
-               }
-               public override void VisitMethodImplTable (MethodImplTable table)
-               {
-                       int number = m_rows [MethodImplTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MethodImplRow ());
-               }
-               public override void VisitMethodPtrTable (MethodPtrTable table)
-               {
-                       int number = m_rows [MethodPtrTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MethodPtrRow ());
-               }
-               public override void VisitMethodSemanticsTable (MethodSemanticsTable table)
-               {
-                       int number = m_rows [MethodSemanticsTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MethodSemanticsRow ());
-               }
-               public override void VisitMethodSpecTable (MethodSpecTable table)
-               {
-                       int number = m_rows [MethodSpecTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new MethodSpecRow ());
-               }
-               public override void VisitModuleTable (ModuleTable table)
-               {
-                       int number = m_rows [ModuleTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ModuleRow ());
-               }
-               public override void VisitModuleRefTable (ModuleRefTable table)
-               {
-                       int number = m_rows [ModuleRefTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ModuleRefRow ());
-               }
-               public override void VisitNestedClassTable (NestedClassTable table)
-               {
-                       int number = m_rows [NestedClassTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new NestedClassRow ());
-               }
-               public override void VisitParamTable (ParamTable table)
-               {
-                       int number = m_rows [ParamTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ParamRow ());
-               }
-               public override void VisitParamPtrTable (ParamPtrTable table)
-               {
-                       int number = m_rows [ParamPtrTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new ParamPtrRow ());
-               }
-               public override void VisitPropertyTable (PropertyTable table)
-               {
-                       int number = m_rows [PropertyTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new PropertyRow ());
-               }
-               public override void VisitPropertyMapTable (PropertyMapTable table)
-               {
-                       int number = m_rows [PropertyMapTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new PropertyMapRow ());
-               }
-               public override void VisitPropertyPtrTable (PropertyPtrTable table)
-               {
-                       int number = m_rows [PropertyPtrTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new PropertyPtrRow ());
-               }
-               public override void VisitStandAloneSigTable (StandAloneSigTable table)
-               {
-                       int number = m_rows [StandAloneSigTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new StandAloneSigRow ());
-               }
-               public override void VisitTypeDefTable (TypeDefTable table)
-               {
-                       int number = m_rows [TypeDefTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new TypeDefRow ());
-               }
-               public override void VisitTypeRefTable (TypeRefTable table)
-               {
-                       int number = m_rows [TypeRefTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new TypeRefRow ());
-               }
-               public override void VisitTypeSpecTable (TypeSpecTable table)
-               {
-                       int number = m_rows [TypeSpecTable.RId];
-                       table.Rows = new RowCollection (number);
-                       for (int i = 0; i < number; i++)
-                               table.Rows.Add (new TypeSpecRow ());
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableWriter.cs
deleted file mode 100644 (file)
index 6c7fab4..0000000
+++ /dev/null
@@ -1,602 +0,0 @@
-//
-// MetadataTableWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Binary;
-
-       internal sealed class MetadataTableWriter : BaseMetadataTableVisitor {
-
-               MetadataRoot m_root;
-               TablesHeap m_heap;
-               MetadataRowWriter m_mrrw;
-               MemoryBinaryWriter m_binaryWriter;
-
-               public MetadataTableWriter (MetadataWriter mrv, MemoryBinaryWriter writer)
-               {
-                       m_root = mrv.GetMetadataRoot ();
-                       m_heap = m_root.Streams.TablesHeap;
-                       m_binaryWriter = writer;
-                       m_mrrw = new MetadataRowWriter (this);
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_root;
-               }
-
-               public override IMetadataRowVisitor GetRowVisitor ()
-               {
-                       return m_mrrw;
-               }
-
-               public MemoryBinaryWriter GetWriter ()
-               {
-                       return m_binaryWriter;
-               }
-
-               void InitializeTable (IMetadataTable table)
-               {
-                       table.Rows = new RowCollection ();
-                       m_heap.Valid |= 1L << table.Id;
-                       m_heap.Tables.Add (table);
-               }
-
-               void WriteCount (int rid)
-               {
-                       if (m_heap.HasTable (rid))
-                               m_binaryWriter.Write (m_heap [rid].Rows.Count);
-               }
-
-               public AssemblyTable GetAssemblyTable ()
-               {
-                       AssemblyTable table = m_heap [AssemblyTable.RId] as AssemblyTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public AssemblyOSTable GetAssemblyOSTable ()
-               {
-                       AssemblyOSTable table = m_heap [AssemblyOSTable.RId] as AssemblyOSTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyOSTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public AssemblyProcessorTable GetAssemblyProcessorTable ()
-               {
-                       AssemblyProcessorTable table = m_heap [AssemblyProcessorTable.RId] as AssemblyProcessorTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyProcessorTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public AssemblyRefTable GetAssemblyRefTable ()
-               {
-                       AssemblyRefTable table = m_heap [AssemblyRefTable.RId] as AssemblyRefTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyRefTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public AssemblyRefOSTable GetAssemblyRefOSTable ()
-               {
-                       AssemblyRefOSTable table = m_heap [AssemblyRefOSTable.RId] as AssemblyRefOSTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyRefOSTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public AssemblyRefProcessorTable GetAssemblyRefProcessorTable ()
-               {
-                       AssemblyRefProcessorTable table = m_heap [AssemblyRefProcessorTable.RId] as AssemblyRefProcessorTable;
-                       if (table != null)
-                               return table;
-
-                       table = new AssemblyRefProcessorTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ClassLayoutTable GetClassLayoutTable ()
-               {
-                       ClassLayoutTable table = m_heap [ClassLayoutTable.RId] as ClassLayoutTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ClassLayoutTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ConstantTable GetConstantTable ()
-               {
-                       ConstantTable table = m_heap [ConstantTable.RId] as ConstantTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ConstantTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public CustomAttributeTable GetCustomAttributeTable ()
-               {
-                       CustomAttributeTable table = m_heap [CustomAttributeTable.RId] as CustomAttributeTable;
-                       if (table != null)
-                               return table;
-
-                       table = new CustomAttributeTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public DeclSecurityTable GetDeclSecurityTable ()
-               {
-                       DeclSecurityTable table = m_heap [DeclSecurityTable.RId] as DeclSecurityTable;
-                       if (table != null)
-                               return table;
-
-                       table = new DeclSecurityTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public EventTable GetEventTable ()
-               {
-                       EventTable table = m_heap [EventTable.RId] as EventTable;
-                       if (table != null)
-                               return table;
-
-                       table = new EventTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public EventMapTable GetEventMapTable ()
-               {
-                       EventMapTable table = m_heap [EventMapTable.RId] as EventMapTable;
-                       if (table != null)
-                               return table;
-
-                       table = new EventMapTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public EventPtrTable GetEventPtrTable ()
-               {
-                       EventPtrTable table = m_heap [EventPtrTable.RId] as EventPtrTable;
-                       if (table != null)
-                               return table;
-
-                       table = new EventPtrTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ExportedTypeTable GetExportedTypeTable ()
-               {
-                       ExportedTypeTable table = m_heap [ExportedTypeTable.RId] as ExportedTypeTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ExportedTypeTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FieldTable GetFieldTable ()
-               {
-                       FieldTable table = m_heap [FieldTable.RId] as FieldTable;
-                       if (table != null)
-                               return table;
-
-                       table = new FieldTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FieldLayoutTable GetFieldLayoutTable ()
-               {
-                       FieldLayoutTable table = m_heap [FieldLayoutTable.RId] as FieldLayoutTable;
-                       if (table != null)
-                               return table;
-
-                       table = new FieldLayoutTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FieldMarshalTable GetFieldMarshalTable ()
-               {
-                       FieldMarshalTable table = m_heap [FieldMarshalTable.RId] as FieldMarshalTable;
-                       if (table != null)
-                               return table;
-
-                       table = new FieldMarshalTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FieldPtrTable GetFieldPtrTable ()
-               {
-                       FieldPtrTable table = m_heap [FieldPtrTable.RId] as FieldPtrTable;
-                       if (table != null)
-                               return table;
-
-                       table = new FieldPtrTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FieldRVATable GetFieldRVATable ()
-               {
-                       FieldRVATable table = m_heap [FieldRVATable.RId] as FieldRVATable;
-                       if (table != null)
-                               return table;
-
-                       table = new FieldRVATable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public FileTable GetFileTable ()
-               {
-                       FileTable table = m_heap [FileTable.RId] as FileTable;
-                       if (table != null)
-                               return table;
-
-                       table = new FileTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public GenericParamTable GetGenericParamTable ()
-               {
-                       GenericParamTable table = m_heap [GenericParamTable.RId] as GenericParamTable;
-                       if (table != null)
-                               return table;
-
-                       table = new GenericParamTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public GenericParamConstraintTable GetGenericParamConstraintTable ()
-               {
-                       GenericParamConstraintTable table = m_heap [GenericParamConstraintTable.RId] as GenericParamConstraintTable;
-                       if (table != null)
-                               return table;
-
-                       table = new GenericParamConstraintTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ImplMapTable GetImplMapTable ()
-               {
-                       ImplMapTable table = m_heap [ImplMapTable.RId] as ImplMapTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ImplMapTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public InterfaceImplTable GetInterfaceImplTable ()
-               {
-                       InterfaceImplTable table = m_heap [InterfaceImplTable.RId] as InterfaceImplTable;
-                       if (table != null)
-                               return table;
-
-                       table = new InterfaceImplTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ManifestResourceTable GetManifestResourceTable ()
-               {
-                       ManifestResourceTable table = m_heap [ManifestResourceTable.RId] as ManifestResourceTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ManifestResourceTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MemberRefTable GetMemberRefTable ()
-               {
-                       MemberRefTable table = m_heap [MemberRefTable.RId] as MemberRefTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MemberRefTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MethodTable GetMethodTable ()
-               {
-                       MethodTable table = m_heap [MethodTable.RId] as MethodTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MethodTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MethodImplTable GetMethodImplTable ()
-               {
-                       MethodImplTable table = m_heap [MethodImplTable.RId] as MethodImplTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MethodImplTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MethodPtrTable GetMethodPtrTable ()
-               {
-                       MethodPtrTable table = m_heap [MethodPtrTable.RId] as MethodPtrTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MethodPtrTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MethodSemanticsTable GetMethodSemanticsTable ()
-               {
-                       MethodSemanticsTable table = m_heap [MethodSemanticsTable.RId] as MethodSemanticsTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MethodSemanticsTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public MethodSpecTable GetMethodSpecTable ()
-               {
-                       MethodSpecTable table = m_heap [MethodSpecTable.RId] as MethodSpecTable;
-                       if (table != null)
-                               return table;
-
-                       table = new MethodSpecTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ModuleTable GetModuleTable ()
-               {
-                       ModuleTable table = m_heap [ModuleTable.RId] as ModuleTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ModuleTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ModuleRefTable GetModuleRefTable ()
-               {
-                       ModuleRefTable table = m_heap [ModuleRefTable.RId] as ModuleRefTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ModuleRefTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public NestedClassTable GetNestedClassTable ()
-               {
-                       NestedClassTable table = m_heap [NestedClassTable.RId] as NestedClassTable;
-                       if (table != null)
-                               return table;
-
-                       table = new NestedClassTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ParamTable GetParamTable ()
-               {
-                       ParamTable table = m_heap [ParamTable.RId] as ParamTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ParamTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public ParamPtrTable GetParamPtrTable ()
-               {
-                       ParamPtrTable table = m_heap [ParamPtrTable.RId] as ParamPtrTable;
-                       if (table != null)
-                               return table;
-
-                       table = new ParamPtrTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public PropertyTable GetPropertyTable ()
-               {
-                       PropertyTable table = m_heap [PropertyTable.RId] as PropertyTable;
-                       if (table != null)
-                               return table;
-
-                       table = new PropertyTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public PropertyMapTable GetPropertyMapTable ()
-               {
-                       PropertyMapTable table = m_heap [PropertyMapTable.RId] as PropertyMapTable;
-                       if (table != null)
-                               return table;
-
-                       table = new PropertyMapTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public PropertyPtrTable GetPropertyPtrTable ()
-               {
-                       PropertyPtrTable table = m_heap [PropertyPtrTable.RId] as PropertyPtrTable;
-                       if (table != null)
-                               return table;
-
-                       table = new PropertyPtrTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public StandAloneSigTable GetStandAloneSigTable ()
-               {
-                       StandAloneSigTable table = m_heap [StandAloneSigTable.RId] as StandAloneSigTable;
-                       if (table != null)
-                               return table;
-
-                       table = new StandAloneSigTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public TypeDefTable GetTypeDefTable ()
-               {
-                       TypeDefTable table = m_heap [TypeDefTable.RId] as TypeDefTable;
-                       if (table != null)
-                               return table;
-
-                       table = new TypeDefTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public TypeRefTable GetTypeRefTable ()
-               {
-                       TypeRefTable table = m_heap [TypeRefTable.RId] as TypeRefTable;
-                       if (table != null)
-                               return table;
-
-                       table = new TypeRefTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public TypeSpecTable GetTypeSpecTable ()
-               {
-                       TypeSpecTable table = m_heap [TypeSpecTable.RId] as TypeSpecTable;
-                       if (table != null)
-                               return table;
-
-                       table = new TypeSpecTable ();
-                       InitializeTable (table);
-                       return table;
-               }
-
-               public override void VisitTableCollection (TableCollection coll)
-               {
-                       WriteCount (ModuleTable.RId);
-                       WriteCount (TypeRefTable.RId);
-                       WriteCount (TypeDefTable.RId);
-                       WriteCount (FieldPtrTable.RId);
-                       WriteCount (FieldTable.RId);
-                       WriteCount (MethodPtrTable.RId);
-                       WriteCount (MethodTable.RId);
-                       WriteCount (ParamPtrTable.RId);
-                       WriteCount (ParamTable.RId);
-                       WriteCount (InterfaceImplTable.RId);
-                       WriteCount (MemberRefTable.RId);
-                       WriteCount (ConstantTable.RId);
-                       WriteCount (CustomAttributeTable.RId);
-                       WriteCount (FieldMarshalTable.RId);
-                       WriteCount (DeclSecurityTable.RId);
-                       WriteCount (ClassLayoutTable.RId);
-                       WriteCount (FieldLayoutTable.RId);
-                       WriteCount (StandAloneSigTable.RId);
-                       WriteCount (EventMapTable.RId);
-                       WriteCount (EventPtrTable.RId);
-                       WriteCount (EventTable.RId);
-                       WriteCount (PropertyMapTable.RId);
-                       WriteCount (PropertyPtrTable.RId);
-                       WriteCount (PropertyTable.RId);
-                       WriteCount (MethodSemanticsTable.RId);
-                       WriteCount (MethodImplTable.RId);
-                       WriteCount (ModuleRefTable.RId);
-                       WriteCount (TypeSpecTable.RId);
-                       WriteCount (ImplMapTable.RId);
-                       WriteCount (FieldRVATable.RId);
-                       WriteCount (AssemblyTable.RId);
-                       WriteCount (AssemblyProcessorTable.RId);
-                       WriteCount (AssemblyOSTable.RId);
-                       WriteCount (AssemblyRefTable.RId);
-                       WriteCount (AssemblyRefProcessorTable.RId);
-                       WriteCount (AssemblyRefOSTable.RId);
-                       WriteCount (FileTable.RId);
-                       WriteCount (ExportedTypeTable.RId);
-                       WriteCount (ManifestResourceTable.RId);
-                       WriteCount (NestedClassTable.RId);
-                       WriteCount (GenericParamTable.RId);
-                       WriteCount (MethodSpecTable.RId);
-                       WriteCount (GenericParamConstraintTable.RId);
-               }
-       }
-}
index a771bad5291798358586818fc47784a1185ab55c..8c1338e948252d7469cf851ee47d7b942e033330 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+namespace Mono.Cecil {
 
        public struct MetadataToken {
 
-               uint m_rid;
-               TokenType m_type;
+               readonly uint token;
 
-               public uint RID {
-                       get { return m_rid; }
+               public uint RID {
+                       get { return token & 0x00ffffff; }
                }
 
                public TokenType TokenType {
-                       get { return m_type; }
+                       get { return (TokenType) (token & 0xff000000); }
                }
 
-               public static readonly MetadataToken Zero = new MetadataToken ((TokenType) 0, 0);
+               public static readonly MetadataToken Zero = new MetadataToken ((uint) 0);
 
-               public MetadataToken (int token)
+               public MetadataToken (uint token)
                {
-                       m_type = (TokenType) (token & 0xff000000);
-                       m_rid = (uint) token & 0x00ffffff;
+                       this.token = token;
                }
 
-               public MetadataToken (TokenType table, uint rid)
+               public MetadataToken (TokenType type)
+                       : this (type, 0)
                {
-                       m_type = table;
-                       m_rid = rid;
                }
 
-               internal static MetadataToken FromMetadataRow (TokenType table, int rowIndex)
+               public MetadataToken (TokenType type, uint rid)
                {
-                       return new MetadataToken (table, (uint) rowIndex + 1);
+                       token = (uint) type | rid;
                }
 
-               public uint ToUInt ()
+               public MetadataToken (TokenType type, int rid)
                {
-                       return (uint) m_type | m_rid;
+                       token = (uint) type | (uint) rid;
                }
 
-               public override int GetHashCode ()
+               public int ToInt32 ()
                {
-                       return (int) ToUInt ();
+                       return (int) token;
                }
 
-               public override bool Equals (object other)
+               public uint ToUInt32 ()
                {
-                       if (other is MetadataToken)
-                               return Equals ((MetadataToken) other);
+                       return token;
+               }
 
-                       return false;
+               public override int GetHashCode ()
+               {
+                       return (int) token;
                }
 
-               private bool Equals (MetadataToken other)
+               public override bool Equals (object obj)
                {
-                       return other.m_rid == m_rid && other.m_type == m_type;
+                       if (obj is MetadataToken) {
+                               var other = (MetadataToken) obj;
+                               return other.token == token;
+                       }
+
+                       return false;
                }
 
                public static bool operator == (MetadataToken one, MetadataToken other)
                {
-                       return one.Equals (other);
+                       return one.token == other.token;
                }
 
                public static bool operator != (MetadataToken one, MetadataToken other)
                {
-                       return !one.Equals (other);
+                       return one.token != other.token;
                }
 
                public override string ToString ()
                {
-                       return string.Format ("{0} [0x{1}]",
-                               m_type, m_rid.ToString ("x4"));
+                       return string.Format ("[{0}:0x{1}]", TokenType, RID.ToString ("x4"));
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataWriter.cs
deleted file mode 100644 (file)
index 53cb186..0000000
+++ /dev/null
@@ -1,531 +0,0 @@
-//
-// MetadataWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil;
-       using Mono.Cecil.Binary;
-
-       internal sealed class MetadataWriter : BaseMetadataVisitor {
-
-               AssemblyDefinition m_assembly;
-               MetadataRoot m_root;
-               TargetRuntime m_runtime;
-               ImageWriter m_imgWriter;
-               MetadataTableWriter m_tableWriter;
-               MemoryBinaryWriter m_binaryWriter;
-
-               IDictionary m_stringCache;
-               MemoryBinaryWriter m_stringWriter;
-
-               IDictionary m_guidCache;
-               MemoryBinaryWriter m_guidWriter;
-
-               IDictionary m_usCache;
-               MemoryBinaryWriter m_usWriter;
-
-               IDictionary m_blobCache;
-               MemoryBinaryWriter m_blobWriter;
-
-               MemoryBinaryWriter m_tWriter;
-
-               MemoryBinaryWriter m_cilWriter;
-
-               MemoryBinaryWriter m_fieldDataWriter;
-               MemoryBinaryWriter m_resWriter;
-
-               uint m_mdStart, m_mdSize;
-               uint m_resStart, m_resSize;
-               uint m_snsStart, m_snsSize;
-               uint m_debugHeaderStart;
-               uint m_imporTableStart;
-
-               uint m_entryPointToken;
-
-               RVA m_cursor = new RVA (0x2050);
-
-               public MemoryBinaryWriter CilWriter {
-                       get { return m_cilWriter; }
-               }
-
-               public MemoryBinaryWriter StringWriter {
-                       get { return m_stringWriter; }
-               }
-
-               public MemoryBinaryWriter GuidWriter {
-                       get { return m_guidWriter; }
-               }
-
-               public MemoryBinaryWriter UserStringWriter {
-                       get { return m_usWriter; }
-               }
-
-               public MemoryBinaryWriter BlobWriter {
-                       get { return m_blobWriter; }
-               }
-
-               public uint DebugHeaderPosition {
-                       get { return m_debugHeaderStart; }
-               }
-
-               public uint ImportTablePosition {
-                       get { return m_imporTableStart; }
-               }
-
-               public uint EntryPointToken {
-                       get { return m_entryPointToken; }
-                       set { m_entryPointToken = value; }
-               }
-
-               public TargetRuntime TargetRuntime {
-                       get { return m_runtime; }
-               }
-
-               public MetadataWriter (AssemblyDefinition asm, MetadataRoot root,
-                       AssemblyKind kind, TargetRuntime rt, BinaryWriter writer)
-               {
-                       m_assembly = asm;
-                       m_root = root;
-                       m_runtime = rt;
-                       m_imgWriter = new ImageWriter (this, kind, writer);
-                       m_binaryWriter = m_imgWriter.GetTextWriter ();
-
-                       m_stringCache = new Hashtable ();
-                       m_stringWriter = new MemoryBinaryWriter (Encoding.UTF8);
-                       m_stringWriter.Write ((byte) 0);
-
-                       m_guidCache = new Hashtable ();
-                       m_guidWriter = new MemoryBinaryWriter ();
-
-                       m_usCache = new Hashtable ();
-                       m_usWriter = new MemoryBinaryWriter (Encoding.Unicode);
-                       m_usWriter.Write ((byte) 0);
-
-                       m_blobCache = new Hashtable (ByteArrayEqualityComparer.Instance, ByteArrayEqualityComparer.Instance);
-                       m_blobWriter = new MemoryBinaryWriter ();
-                       m_blobWriter.Write ((byte) 0);
-
-                       m_tWriter = new MemoryBinaryWriter ();
-                       m_tableWriter = new MetadataTableWriter (this, m_tWriter);
-
-                       m_cilWriter = new MemoryBinaryWriter ();
-
-                       m_fieldDataWriter = new MemoryBinaryWriter ();
-                       m_resWriter = new MemoryBinaryWriter ();
-               }
-
-               public MetadataRoot GetMetadataRoot ()
-               {
-                       return m_root;
-               }
-
-               public ImageWriter GetImageWriter ()
-               {
-                       return m_imgWriter;
-               }
-
-               public MemoryBinaryWriter GetWriter ()
-               {
-                       return m_binaryWriter;
-               }
-
-               public MetadataTableWriter GetTableVisitor ()
-               {
-                       return m_tableWriter;
-               }
-
-               public void AddData (int length)
-               {
-                       m_cursor += new RVA ((uint) length);
-               }
-
-               public RVA GetDataCursor ()
-               {
-                       return m_cursor;
-               }
-
-               public uint AddString (string str)
-               {
-                       if (str == null || str.Length == 0)
-                               return 0;
-
-                       if (m_stringCache.Contains (str))
-                               return (uint) m_stringCache [str];
-
-                       uint pointer = (uint) m_stringWriter.BaseStream.Position;
-                       m_stringCache [str] = pointer;
-                       m_stringWriter.Write (Encoding.UTF8.GetBytes (str));
-                       m_stringWriter.Write ('\0');
-                       return pointer;
-               }
-
-               public uint AddBlob (byte [] data)
-               {
-                       if (data == null || data.Length == 0)
-                               return 0;
-
-                       object cached = m_blobCache [data];
-                       if (cached != null)
-                               return (uint) cached;
-
-                       uint pointer = (uint) m_blobWriter.BaseStream.Position;
-                       m_blobCache [data] = pointer;
-                       Utilities.WriteCompressedInteger (m_blobWriter, data.Length);
-                       m_blobWriter.Write (data);
-                       return pointer;
-               }
-
-               public uint AddGuid (Guid g)
-               {
-                       if (m_guidCache.Contains (g))
-                               return (uint) m_guidCache [g];
-
-                       uint pointer = (uint) m_guidWriter.BaseStream.Position;
-                       m_guidCache [g] = pointer;
-                       m_guidWriter.Write (g.ToByteArray ());
-                       return pointer + 1;
-               }
-
-               public uint AddUserString (string str)
-               {
-                       if (str == null)
-                               return 0;
-
-                       if (m_usCache.Contains (str))
-                               return (uint) m_usCache [str];
-
-                       uint pointer = (uint) m_usWriter.BaseStream.Position;
-                       m_usCache [str] = pointer;
-                       byte [] us = Encoding.Unicode.GetBytes (str);
-                       Utilities.WriteCompressedInteger (m_usWriter, us.Length + 1);
-                       m_usWriter.Write (us);
-                       m_usWriter.Write ((byte) (RequiresSpecialHandling (us) ? 1 : 0));
-                       return pointer;
-               }
-
-               static bool RequiresSpecialHandling (byte [] chars)
-               {
-                       for (int i = 0; i < chars.Length; i++) {
-                               byte c = chars [i];
-                               if ((i % 2) == 1)
-                                       if (c != 0)
-                                               return true;
-
-                               if (InRange (0x01, 0x08, c) ||
-                                       InRange (0x0e, 0x1f, c) ||
-                                       c == 0x27 ||
-                                       c == 0x2d ||
-                                       c == 0x7f) {
-
-                                       return true;
-                               }
-                       }
-
-                       return false;
-               }
-
-               static bool InRange (int left, int right, int value)
-               {
-                       return left <= value && value <= right;
-               }
-
-               void CreateStream (string name)
-               {
-                       MetadataStream stream = new MetadataStream ();
-                       stream.Header.Name = name;
-                       stream.Heap = MetadataHeap.HeapFactory (stream);
-                       m_root.Streams.Add (stream);
-               }
-
-               void SetHeapSize (MetadataHeap heap, MemoryBinaryWriter data, byte flag)
-               {
-                       if (data.BaseStream.Length > 65536) {
-                               m_root.Streams.TablesHeap.HeapSizes |= flag;
-                               heap.IndexSize = 4;
-                       } else
-                               heap.IndexSize = 2;
-               }
-
-               public uint AddResource (byte [] data)
-               {
-                       uint offset = (uint) m_resWriter.BaseStream.Position;
-                       m_resWriter.Write (data.Length);
-                       m_resWriter.Write (data);
-                       m_resWriter.QuadAlign ();
-                       return offset;
-               }
-
-               public void AddFieldInitData (byte [] data)
-               {
-                       m_fieldDataWriter.Write (data);
-                       m_fieldDataWriter.QuadAlign ();
-               }
-
-               uint GetStrongNameSignatureSize ()
-               {
-                       if (m_assembly.Name.PublicKey != null) {
-                               // in fx 2.0 the key may be from 384 to 16384 bits
-                               // so we must calculate the signature size based on
-                               // the size of the public key (minus the 32 byte header)
-                               int size = m_assembly.Name.PublicKey.Length;
-                               if (size > 32)
-                                       return (uint) (size - 32);
-                               // note: size == 16 for the ECMA "key" which is replaced
-                               // by the runtime with a 1024 bits key (128 bytes)
-                       }
-                       return 128; // default strongname signature size
-               }
-
-               public override void VisitMetadataRoot (MetadataRoot root)
-               {
-                       WriteMemStream (m_cilWriter);
-                       WriteMemStream (m_fieldDataWriter);
-                       m_resStart = (uint) m_binaryWriter.BaseStream.Position;
-                       WriteMemStream (m_resWriter);
-                       m_resSize = (uint) (m_binaryWriter.BaseStream.Position - m_resStart);
-
-                       // for now, we only reserve the place for the strong name signature
-                       if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) > 0) {
-                               m_snsStart = (uint) m_binaryWriter.BaseStream.Position;
-                               m_snsSize = GetStrongNameSignatureSize ();
-                               m_binaryWriter.Write (new byte [m_snsSize]);
-                               m_binaryWriter.QuadAlign ();
-                       }
-
-                       // save place for debug header
-                       if (m_imgWriter.GetImage ().DebugHeader != null) {
-                               m_debugHeaderStart = (uint) m_binaryWriter.BaseStream.Position;
-                               m_binaryWriter.Write (new byte [m_imgWriter.GetImage ().DebugHeader.GetSize ()]);
-                               m_binaryWriter.QuadAlign ();
-                       }
-
-                       m_mdStart = (uint) m_binaryWriter.BaseStream.Position;
-
-                       if (m_stringWriter.BaseStream.Length > 1) {
-                               CreateStream (MetadataStream.Strings);
-                               SetHeapSize (root.Streams.StringsHeap, m_stringWriter, 0x01);
-                               m_stringWriter.QuadAlign ();
-                       }
-
-                       if (m_guidWriter.BaseStream.Length > 0) {
-                               CreateStream (MetadataStream.GUID);
-                               SetHeapSize (root.Streams.GuidHeap, m_guidWriter, 0x02);
-                       }
-
-                       if (m_blobWriter.BaseStream.Length > 1) {
-                               CreateStream (MetadataStream.Blob);
-                               SetHeapSize (root.Streams.BlobHeap, m_blobWriter, 0x04);
-                               m_blobWriter.QuadAlign ();
-                       }
-
-                       if (m_usWriter.BaseStream.Length > 2) {
-                               CreateStream (MetadataStream.UserStrings);
-                               m_usWriter.QuadAlign ();
-                       }
-
-                       m_root.Header.MajorVersion = 1;
-                       m_root.Header.MinorVersion = 1;
-
-                       switch (m_runtime) {
-                       case TargetRuntime.NET_1_0 :
-                               m_root.Header.Version = "v1.0.3705";
-                               break;
-                       case TargetRuntime.NET_1_1 :
-                               m_root.Header.Version = "v1.1.4322";
-                               break;
-                       case TargetRuntime.NET_2_0 :
-                               m_root.Header.Version = "v2.0.50727";
-                               break;
-                       case TargetRuntime.NET_4_0 :
-                               m_root.Header.Version = "v4.0.30319";
-                               break;
-                       }
-
-                       m_root.Streams.TablesHeap.Tables.Accept (m_tableWriter);
-
-                       if (m_tWriter.BaseStream.Length == 0)
-                               m_root.Streams.Remove (m_root.Streams.TablesHeap.GetStream ());
-               }
-
-               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-               {
-                       m_binaryWriter.Write (header.Signature);
-                       m_binaryWriter.Write (header.MajorVersion);
-                       m_binaryWriter.Write (header.MinorVersion);
-                       m_binaryWriter.Write (header.Reserved);
-                       m_binaryWriter.Write (header.Version.Length + 3 & (~3));
-                       m_binaryWriter.Write (Encoding.ASCII.GetBytes (header.Version));
-                       m_binaryWriter.QuadAlign ();
-                       m_binaryWriter.Write (header.Flags);
-                       m_binaryWriter.Write ((ushort) m_root.Streams.Count);
-               }
-
-               public override void VisitMetadataStreamCollection (MetadataStreamCollection streams)
-               {
-                       foreach (MetadataStream stream in streams) {
-                               MetadataStream.MetadataStreamHeader header = stream.Header;
-
-                               header.Offset = (uint) (m_binaryWriter.BaseStream.Position);
-                               m_binaryWriter.Write (header.Offset);
-                               MemoryBinaryWriter container;
-                               string name = header.Name;
-                               uint size = 0;
-                               switch (header.Name) {
-                               case MetadataStream.Tables :
-                                       container = m_tWriter;
-                                       size += 24; // header
-                                       break;
-                               case MetadataStream.Strings :
-                                       name += "\0\0\0\0";
-                                       container = m_stringWriter;
-                                       break;
-                               case MetadataStream.GUID :
-                                       container = m_guidWriter;
-                                       break;
-                               case MetadataStream.Blob :
-                                       container = m_blobWriter;
-                                       break;
-                               case MetadataStream.UserStrings :
-                                       container = m_usWriter;
-                                       break;
-                               default :
-                                       throw new MetadataFormatException ("Unknown stream kind");
-                               }
-
-                               size += (uint) (container.BaseStream.Length + 3 & (~3));
-                               m_binaryWriter.Write (size);
-                               m_binaryWriter.Write (Encoding.ASCII.GetBytes (name));
-                               m_binaryWriter.QuadAlign ();
-                       }
-               }
-
-               void WriteMemStream (MemoryBinaryWriter writer)
-               {
-                       m_binaryWriter.Write (writer);
-                       m_binaryWriter.QuadAlign ();
-               }
-
-               void PatchStreamHeaderOffset (MetadataHeap heap)
-               {
-                       long pos = m_binaryWriter.BaseStream.Position;
-                       m_binaryWriter.BaseStream.Position = heap.GetStream ().Header.Offset;
-                       m_binaryWriter.Write ((uint) (pos - m_mdStart));
-                       m_binaryWriter.BaseStream.Position = pos;
-               }
-
-               public override void VisitGuidHeap (GuidHeap heap)
-               {
-                       PatchStreamHeaderOffset (heap);
-                       WriteMemStream (m_guidWriter);
-               }
-
-               public override void VisitStringsHeap (StringsHeap heap)
-               {
-                       PatchStreamHeaderOffset (heap);
-                       WriteMemStream (m_stringWriter);
-               }
-
-               public override void VisitTablesHeap (TablesHeap heap)
-               {
-                       PatchStreamHeaderOffset (heap);
-                       m_binaryWriter.Write (heap.Reserved);
-                       switch (m_runtime) {
-                       case TargetRuntime.NET_1_0 :
-                       case TargetRuntime.NET_1_1 :
-                               heap.MajorVersion = 1;
-                               heap.MinorVersion = 0;
-                               break;
-                       case TargetRuntime.NET_2_0 :
-                       case TargetRuntime.NET_4_0 :
-                               heap.MajorVersion = 2;
-                               heap.MinorVersion = 0;
-                               break;
-                       }
-                       m_binaryWriter.Write (heap.MajorVersion);
-                       m_binaryWriter.Write (heap.MinorVersion);
-                       m_binaryWriter.Write (heap.HeapSizes);
-                       m_binaryWriter.Write (heap.Reserved2);
-                       m_binaryWriter.Write (heap.Valid);
-                       m_binaryWriter.Write (heap.Sorted);
-                       WriteMemStream (m_tWriter);
-               }
-
-               public override void VisitBlobHeap (BlobHeap heap)
-               {
-                       PatchStreamHeaderOffset (heap);
-                       WriteMemStream (m_blobWriter);
-               }
-
-               public override void VisitUserStringsHeap (UserStringsHeap heap)
-               {
-                       PatchStreamHeaderOffset (heap);
-                       WriteMemStream (m_usWriter);
-               }
-
-               void PatchHeader ()
-               {
-                       Image img = m_imgWriter.GetImage ();
-
-                       img.CLIHeader.EntryPointToken = m_entryPointToken;
-
-                       if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) == 0)
-                               img.CLIHeader.Flags &= ~RuntimeImage.StrongNameSigned;
-
-                       if (m_mdSize > 0)
-                               img.CLIHeader.Metadata = new DataDirectory (
-                                       img.TextSection.VirtualAddress + m_mdStart, m_imporTableStart - m_mdStart);
-
-                       if (m_resSize > 0)
-                               img.CLIHeader.Resources = new DataDirectory (
-                                       img.TextSection.VirtualAddress + m_resStart, m_resSize);
-
-                       if (m_snsStart > 0)
-                               img.CLIHeader.StrongNameSignature = new DataDirectory (
-                                       img.TextSection.VirtualAddress + m_snsStart, m_snsSize);
-
-                       if (m_debugHeaderStart > 0)
-                               img.PEOptionalHeader.DataDirectories.Debug = new DataDirectory (
-                                       img.TextSection.VirtualAddress + m_debugHeaderStart, 0x1c);
-               }
-
-               public override void TerminateMetadataRoot (MetadataRoot root)
-               {
-                       m_mdSize = (uint) (m_binaryWriter.BaseStream.Position - m_mdStart);
-                       m_imporTableStart = (uint) m_binaryWriter.BaseStream.Position;
-                       m_binaryWriter.Write (new byte [0x60]); // imports
-                       m_imgWriter.Initialize ();
-                       PatchHeader ();
-                       root.GetImage ().Accept (m_imgWriter);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs
deleted file mode 100644 (file)
index 3d195bc..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// MethodTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       using Mono.Cecil.Binary;
-
-       public sealed class MethodTable : IMetadataTable {
-
-               public const int RId = 0x06;
-
-               RowCollection m_rows;
-
-               public MethodRow this [int index] {
-                       get { return m_rows [index] as MethodRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MethodTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMethodTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MethodRow : IMetadataRow {
-
-               public RVA RVA;
-               public MethodImplAttributes ImplFlags;
-               public MethodAttributes Flags;
-               public uint Name;
-               public uint Signature;
-               public uint ParamList;
-
-               internal MethodRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMethodRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs
deleted file mode 100644 (file)
index fa9a9d2..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// MethodImplTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class MethodImplTable : IMetadataTable {
-
-               public const int RId = 0x19;
-
-               RowCollection m_rows;
-
-               public MethodImplRow this [int index] {
-                       get { return m_rows [index] as MethodImplRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MethodImplTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMethodImplTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MethodImplRow : IMetadataRow {
-
-               public uint Class;
-               public MetadataToken MethodBody;
-               public MetadataToken MethodDeclaration;
-
-               internal MethodImplRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMethodImplRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs
deleted file mode 100644 (file)
index 7a81b88..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// MethodPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class MethodPtrTable : IMetadataTable {
-
-               public const int RId = 0x05;
-
-               RowCollection m_rows;
-
-               public MethodPtrRow this [int index] {
-                       get { return m_rows [index] as MethodPtrRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MethodPtrTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMethodPtrTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MethodPtrRow : IMetadataRow {
-
-               public uint Method;
-
-               internal MethodPtrRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMethodPtrRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs
deleted file mode 100644 (file)
index c1dd175..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// MethodSemanticsTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class MethodSemanticsTable : IMetadataTable {
-
-               public const int RId = 0x18;
-
-               RowCollection m_rows;
-
-               public MethodSemanticsRow this [int index] {
-                       get { return m_rows [index] as MethodSemanticsRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MethodSemanticsTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMethodSemanticsTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MethodSemanticsRow : IMetadataRow {
-
-               public MethodSemanticsAttributes Semantics;
-               public uint Method;
-               public MetadataToken Association;
-
-               internal MethodSemanticsRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMethodSemanticsRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs
deleted file mode 100644 (file)
index dc5a61d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// MethodSpecTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class MethodSpecTable : IMetadataTable {
-
-               public const int RId = 0x2b;
-
-               RowCollection m_rows;
-
-               public MethodSpecRow this [int index] {
-                       get { return m_rows [index] as MethodSpecRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal MethodSpecTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitMethodSpecTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class MethodSpecRow : IMetadataRow {
-
-               public MetadataToken Method;
-               public uint Instantiation;
-
-               internal MethodSpecRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitMethodSpecRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs
deleted file mode 100644 (file)
index be06b96..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ModuleTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class ModuleTable : IMetadataTable {
-
-               public const int RId = 0x00;
-
-               RowCollection m_rows;
-
-               public ModuleRow this [int index] {
-                       get { return m_rows [index] as ModuleRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ModuleTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitModuleTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ModuleRow : IMetadataRow {
-
-               public ushort Generation;
-               public uint Name;
-               public uint Mvid;
-               public uint EncId;
-               public uint EncBaseId;
-
-               internal ModuleRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitModuleRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs
deleted file mode 100644 (file)
index fd88991..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// ModuleRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class ModuleRefTable : IMetadataTable {
-
-               public const int RId = 0x1a;
-
-               RowCollection m_rows;
-
-               public ModuleRefRow this [int index] {
-                       get { return m_rows [index] as ModuleRefRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ModuleRefTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitModuleRefTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ModuleRefRow : IMetadataRow {
-
-               public uint Name;
-
-               internal ModuleRefRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitModuleRefRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs
deleted file mode 100644 (file)
index 9920a64..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// NestedClassTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class NestedClassTable : IMetadataTable {
-
-               public const int RId = 0x29;
-
-               RowCollection m_rows;
-
-               public NestedClassRow this [int index] {
-                       get { return m_rows [index] as NestedClassRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal NestedClassTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitNestedClassTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class NestedClassRow : IMetadataRow {
-
-               public uint NestedClass;
-               public uint EnclosingClass;
-
-               internal NestedClassRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitNestedClassRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs
deleted file mode 100644 (file)
index 5704ce6..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ParamTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class ParamTable : IMetadataTable {
-
-               public const int RId = 0x08;
-
-               RowCollection m_rows;
-
-               public ParamRow this [int index] {
-                       get { return m_rows [index] as ParamRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ParamTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitParamTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ParamRow : IMetadataRow {
-
-               public ParameterAttributes Flags;
-               public ushort Sequence;
-               public uint Name;
-
-               internal ParamRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitParamRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs
deleted file mode 100644 (file)
index ffba322..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// ParamPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class ParamPtrTable : IMetadataTable {
-
-               public const int RId = 0x07;
-
-               RowCollection m_rows;
-
-               public ParamPtrRow this [int index] {
-                       get { return m_rows [index] as ParamPtrRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal ParamPtrTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitParamPtrTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class ParamPtrRow : IMetadataRow {
-
-               public uint Param;
-
-               internal ParamPtrRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitParamPtrRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs
deleted file mode 100644 (file)
index 5f3bcc9..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// PropertyTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class PropertyTable : IMetadataTable {
-
-               public const int RId = 0x17;
-
-               RowCollection m_rows;
-
-               public PropertyRow this [int index] {
-                       get { return m_rows [index] as PropertyRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal PropertyTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitPropertyTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class PropertyRow : IMetadataRow {
-
-               public PropertyAttributes Flags;
-               public uint Name;
-               public uint Type;
-
-               internal PropertyRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitPropertyRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs
deleted file mode 100644 (file)
index 5a3b13c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// PropertyMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class PropertyMapTable : IMetadataTable {
-
-               public const int RId = 0x15;
-
-               RowCollection m_rows;
-
-               public PropertyMapRow this [int index] {
-                       get { return m_rows [index] as PropertyMapRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal PropertyMapTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitPropertyMapTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class PropertyMapRow : IMetadataRow {
-
-               public uint Parent;
-               public uint PropertyList;
-
-               internal PropertyMapRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitPropertyMapRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs
deleted file mode 100644 (file)
index f767757..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// PropertyPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class PropertyPtrTable : IMetadataTable {
-
-               public const int RId = 0x16;
-
-               RowCollection m_rows;
-
-               public PropertyPtrRow this [int index] {
-                       get { return m_rows [index] as PropertyPtrRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal PropertyPtrTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitPropertyPtrTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class PropertyPtrRow : IMetadataRow {
-
-               public uint Property;
-
-               internal PropertyPtrRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitPropertyPtrRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs
new file mode 100644 (file)
index 0000000..ab491a6
--- /dev/null
@@ -0,0 +1,170 @@
+//
+// Row.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections.Generic;
+
+namespace Mono.Cecil.Metadata {
+
+       struct Row<T1, T2> {
+               internal T1 Col1;
+               internal T2 Col2;
+
+               public Row (T1 col1, T2 col2)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+               }
+       }
+
+       struct Row<T1, T2, T3> {
+               internal T1 Col1;
+               internal T2 Col2;
+               internal T3 Col3;
+
+               public Row (T1 col1, T2 col2, T3 col3)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+                       Col3 = col3;
+               }
+       }
+
+       struct Row<T1, T2, T3, T4> {
+               internal T1 Col1;
+               internal T2 Col2;
+               internal T3 Col3;
+               internal T4 Col4;
+
+               public Row (T1 col1, T2 col2, T3 col3, T4 col4)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+                       Col3 = col3;
+                       Col4 = col4;
+               }
+       }
+
+       struct Row<T1, T2, T3, T4, T5> {
+               internal T1 Col1;
+               internal T2 Col2;
+               internal T3 Col3;
+               internal T4 Col4;
+               internal T5 Col5;
+
+               public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+                       Col3 = col3;
+                       Col4 = col4;
+                       Col5 = col5;
+               }
+       }
+
+       struct Row<T1, T2, T3, T4, T5, T6> {
+               internal T1 Col1;
+               internal T2 Col2;
+               internal T3 Col3;
+               internal T4 Col4;
+               internal T5 Col5;
+               internal T6 Col6;
+
+               public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+                       Col3 = col3;
+                       Col4 = col4;
+                       Col5 = col5;
+                       Col6 = col6;
+               }
+       }
+
+       struct Row<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
+               internal T1 Col1;
+               internal T2 Col2;
+               internal T3 Col3;
+               internal T4 Col4;
+               internal T5 Col5;
+               internal T6 Col6;
+               internal T7 Col7;
+               internal T8 Col8;
+               internal T9 Col9;
+
+               public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6, T7 col7, T8 col8, T9 col9)
+               {
+                       Col1 = col1;
+                       Col2 = col2;
+                       Col3 = col3;
+                       Col4 = col4;
+                       Col5 = col5;
+                       Col6 = col6;
+                       Col7 = col7;
+                       Col8 = col8;
+                       Col9 = col9;
+               }
+       }
+
+       sealed class RowEqualityComparer : IEqualityComparer<Row<string, string>>, IEqualityComparer<Row<uint, uint>>, IEqualityComparer<Row<uint, uint, uint>> {
+
+               public bool Equals (Row<string, string> x, Row<string, string> y)
+               {
+                       return x.Col1 == y.Col1
+                               && x.Col2 == y.Col2;
+               }
+
+               public int GetHashCode (Row<string, string> obj)
+               {
+                       string x = obj.Col1, y = obj.Col2;
+                       return (x != null ? x.GetHashCode () : 0) ^ (y != null ? y.GetHashCode () : 0);
+               }
+
+               public bool Equals (Row<uint, uint> x, Row<uint, uint> y)
+               {
+                       return x.Col1 == y.Col1
+                               && x.Col2 == y.Col2;
+               }
+
+               public int GetHashCode (Row<uint, uint> obj)
+               {
+                       return (int) (obj.Col1 ^ obj.Col2);
+               }
+
+               public bool Equals (Row<uint, uint, uint> x, Row<uint, uint, uint> y)
+               {
+                       return x.Col1 == y.Col1
+                               && x.Col2 == y.Col2
+                               && x.Col3 == y.Col3;
+               }
+
+               public int GetHashCode (Row<uint, uint, uint> obj)
+               {
+                       return (int) (obj.Col1 ^ obj.Col2 ^ obj.Col3);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs
deleted file mode 100644 (file)
index 4da8c4e..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// RowCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       public class RowCollection : ICollection, IMetadataRowVisitable {
-
-               ArrayList m_items;
-
-               public IMetadataRow this [int index] {
-                       get { return m_items [index] as IMetadataRow; }
-                       set { m_items [index] = value; }
-               }
-
-               public int Count {
-                       get { return m_items.Count; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               internal RowCollection (int size)
-               {
-                       m_items = new ArrayList (size);
-               }
-
-               internal RowCollection ()
-               {
-                       m_items = new ArrayList ();
-               }
-
-               internal void Add (IMetadataRow value)
-               {
-                       m_items.Add (value);
-               }
-
-               public void Clear ()
-               {
-                       m_items.Clear ();
-               }
-
-               public bool Contains (IMetadataRow value)
-               {
-                       return m_items.Contains (value);
-               }
-
-               public int IndexOf (IMetadataRow value)
-               {
-                       return m_items.IndexOf (value);
-               }
-
-               public void Insert (int index, IMetadataRow value)
-               {
-                       m_items.Insert (index, value);
-               }
-
-               public void Remove (IMetadataRow value)
-               {
-                       m_items.Remove (value);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       m_items.Remove (index);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       m_items.CopyTo (ary, index);
-               }
-
-               public void Sort (IComparer comp)
-               {
-                       m_items.Sort (comp);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return m_items.GetEnumerator ();
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitRowCollection (this);
-
-                       for (int i = 0; i < m_items.Count; i++)
-                               this [i].Accept (visitor);
-
-                       visitor.TerminateRowCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs
deleted file mode 100644 (file)
index cb3c7f9..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// StandAloneSigTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class StandAloneSigTable : IMetadataTable {
-
-               public const int RId = 0x11;
-
-               RowCollection m_rows;
-
-               public StandAloneSigRow this [int index] {
-                       get { return m_rows [index] as StandAloneSigRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal StandAloneSigTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitStandAloneSigTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class StandAloneSigRow : IMetadataRow {
-
-               public uint Signature;
-
-               internal StandAloneSigRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitStandAloneSigRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs
new file mode 100644 (file)
index 0000000..85a2892
--- /dev/null
@@ -0,0 +1,81 @@
+//
+// StringHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+       class StringHeap : Heap {
+
+               readonly Dictionary<uint, string> strings = new Dictionary<uint, string> ();
+
+               public StringHeap (Section section, uint start, uint size)
+                       : base (section, start, size)
+               {
+               }
+
+               public string Read (uint index)
+               {
+                       if (index == 0)
+                               return string.Empty;
+
+                       string @string;
+                       if (strings.TryGetValue (index, out @string))
+                               return @string;
+
+                       if (index > Size - 1)
+                               return string.Empty;
+
+                       @string = ReadStringAt (index);
+                       if (@string.Length != 0)
+                               strings.Add (index, @string);
+
+                       return @string;
+               }
+
+               protected virtual string ReadStringAt (uint index)
+               {
+                       int length = 0;
+                       byte [] data = Section.Data;
+                       int start = (int) (index + Offset);
+
+                       for (int i = start; ; i++) {
+                               if (data [i] == 0)
+                                       break;
+
+                               length++;
+                       }
+
+                       return Encoding.UTF8.GetString (data, start, length);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs
deleted file mode 100644 (file)
index 608faf8..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// StringsHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System.Collections;
-       using System.Text;
-
-       public class StringsHeap : MetadataHeap {
-
-               IDictionary m_strings;
-
-               public string this [uint index] {
-                       get {
-                               string str = m_strings [index] as string;
-                               if (str == null) {
-                                       str = ReadStringAt (index);
-                                       m_strings [index] = str;
-                               }
-                               return str;
-                       }
-                       set { m_strings [index] = value; }
-               }
-
-               internal StringsHeap (MetadataStream stream) : base (stream, MetadataStream.Strings)
-               {
-                       m_strings = new Hashtable ();
-               }
-
-               string ReadStringAt (uint index)
-               {
-                       byte [] data = this.Data;
-                       int heap_length = data.Length;
-
-                       if (index > heap_length - 1)
-                               return string.Empty;
-
-                       int length = 0;
-                       for (int i = (int) index; i < heap_length; i++) {
-                               if (data [i] == 0)
-                                       break;
-
-                               length++;
-                       }
-
-                       return Encoding.UTF8.GetString (data, (int) index, length);
-               }
-
-               public override void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitStringsHeap (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs
deleted file mode 100644 (file)
index 817ccb0..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// TableCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       public class TableCollection : ICollection, IMetadataTableVisitable     {
-
-               IMetadataTable [] m_tables = new IMetadataTable [TablesHeap.MaxTableCount];
-
-               TablesHeap m_heap;
-
-               public IMetadataTable this [int index] {
-                       get { return m_tables [index]; }
-                       set { m_tables [index] = value; }
-               }
-
-               public int Count {
-                       get {
-                               return GetList ().Count;
-                       }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               public TablesHeap Heap {
-                       get { return m_heap; }
-               }
-
-               internal TableCollection (TablesHeap heap)
-               {
-                       m_heap = heap;
-               }
-
-               internal void Add (IMetadataTable value)
-               {
-                       m_tables [value.Id] = value;
-               }
-
-               public bool Contains (IMetadataTable value)
-               {
-                       return m_tables [value.Id] != null;
-               }
-
-               internal void Remove (IMetadataTable value)
-               {
-                       m_tables [value.Id] = null;
-               }
-
-               public void CopyTo (Array array, int index)
-               {
-                       GetList ().CopyTo (array, index);
-               }
-
-               internal IList GetList ()
-               {
-                       IList tables = new ArrayList ();
-                       for (int i = 0; i < m_tables.Length; i++) {
-                               IMetadataTable table = m_tables [i];
-                               if (table != null)
-                                       tables.Add (table);
-                       }
-
-                       return tables;
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return GetList ().GetEnumerator ();
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitTableCollection (this);
-
-                       foreach (IMetadataTable table in GetList ())
-                               table.Accept (visitor);
-
-                       visitor.TerminateTableCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs
new file mode 100644 (file)
index 0000000..cc441db
--- /dev/null
@@ -0,0 +1,153 @@
+//
+// TableHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+       enum Table : byte {
+               Module = 0x00,
+               TypeRef = 0x01,
+               TypeDef = 0x02,
+               FieldPtr = 0x03,
+               Field = 0x04,
+               MethodPtr = 0x05,
+               Method = 0x06,
+               ParamPtr = 0x07,
+               Param = 0x08,
+               InterfaceImpl = 0x09,
+               MemberRef = 0x0a,
+               Constant = 0x0b,
+               CustomAttribute = 0x0c,
+               FieldMarshal = 0x0d,
+               DeclSecurity = 0x0e,
+               ClassLayout = 0x0f,
+               FieldLayout = 0x10,
+               StandAloneSig = 0x11,
+               EventMap = 0x12,
+               EventPtr = 0x13,
+               Event = 0x14,
+               PropertyMap = 0x15,
+               PropertyPtr = 0x16,
+               Property = 0x17,
+               MethodSemantics = 0x18,
+               MethodImpl = 0x19,
+               ModuleRef = 0x1a,
+               TypeSpec = 0x1b,
+               ImplMap = 0x1c,
+               FieldRVA = 0x1d,
+               Assembly = 0x20,
+               AssemblyProcessor = 0x21,
+               AssemblyOS = 0x22,
+               AssemblyRef = 0x23,
+               AssemblyRefProcessor = 0x24,
+               AssemblyRefOS = 0x25,
+               File = 0x26,
+               ExportedType = 0x27,
+               ManifestResource = 0x28,
+               NestedClass = 0x29,
+               GenericParam = 0x2a,
+               MethodSpec = 0x2b,
+               GenericParamConstraint = 0x2c,
+       }
+
+       struct TableInformation {
+               public uint Offset;
+               public uint Length;
+               public uint RowSize;
+       }
+
+       sealed class TableHeap : Heap {
+
+               public long Valid;
+               public long Sorted;
+
+               public static readonly Table [] TableIdentifiers = new [] {
+                       Table.Module,
+                       Table.TypeRef,
+                       Table.TypeDef,
+                       Table.FieldPtr,
+                       Table.Field,
+                       Table.MethodPtr,
+                       Table.Method,
+                       Table.ParamPtr,
+                       Table.Param,
+                       Table.InterfaceImpl,
+                       Table.MemberRef,
+                       Table.Constant,
+                       Table.CustomAttribute,
+                       Table.FieldMarshal,
+                       Table.DeclSecurity,
+                       Table.ClassLayout,
+                       Table.FieldLayout,
+                       Table.StandAloneSig,
+                       Table.EventMap,
+                       Table.EventPtr,
+                       Table.Event,
+                       Table.PropertyMap,
+                       Table.PropertyPtr,
+                       Table.Property,
+                       Table.MethodSemantics,
+                       Table.MethodImpl,
+                       Table.ModuleRef,
+                       Table.TypeSpec,
+                       Table.ImplMap,
+                       Table.FieldRVA,
+                       Table.Assembly,
+                       Table.AssemblyProcessor,
+                       Table.AssemblyOS,
+                       Table.AssemblyRef,
+                       Table.AssemblyRefProcessor,
+                       Table.AssemblyRefOS,
+                       Table.File,
+                       Table.ExportedType,
+                       Table.ManifestResource,
+                       Table.NestedClass,
+                       Table.GenericParam,
+                       Table.MethodSpec,
+                       Table.GenericParamConstraint,
+               };
+
+               public readonly TableInformation [] Tables = new TableInformation [45];
+
+               public TableInformation this [Table table] {
+                       get { return Tables [(int) table]; }
+               }
+
+               public TableHeap (Section section, uint start, uint size)
+                       : base (section, start, size)
+               {
+               }
+
+               public bool HasTable (Table table)
+               {
+                       return (Valid & (1L << (int) table)) != 0;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs
deleted file mode 100644 (file)
index 583ac7e..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// TablesHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System;
-       using System.Collections;
-
-       public class TablesHeap : MetadataHeap {
-
-               public uint Reserved;
-               public byte MajorVersion;
-               public byte MinorVersion;
-               public byte HeapSizes;
-               public byte Reserved2;
-               public long Valid;
-               public long Sorted;
-
-               TableCollection m_tables;
-
-               public const int MaxTableCount = 45;
-
-               public TableCollection Tables {
-                       get { return m_tables; }
-                       set { m_tables = value; }
-               }
-
-               public IMetadataTable this [int id]
-               {
-                       get { return m_tables [id]; }
-                       set { m_tables [id] = value; }
-               }
-
-               internal TablesHeap (MetadataStream stream) : base(stream, MetadataStream.Tables)
-               {
-               }
-
-               public bool HasTable (int id)
-               {
-                       return (Valid & (1L << id)) != 0;
-               }
-
-               public override void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitTablesHeap (this);
-               }
-       }
-}
index 44de8042fc039dc7df880923f9fd2494613fdbdb..f822b6dd9fd849d3c18a6df1b0cf1c6f280668d6 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+namespace Mono.Cecil {
 
        public enum TokenType : uint {
-               Module                    = 0x00000000,
-               TypeRef                  = 0x01000000,
-               TypeDef                  = 0x02000000,
-               Field                      = 0x04000000,
-               Method                    = 0x06000000,
-               Param                      = 0x08000000,
-               InterfaceImpl      = 0x09000000,
-               MemberRef                  = 0x0a000000,
-               CustomAttribute  = 0x0c000000,
-               Permission                = 0x0e000000,
-               Signature                  = 0x11000000,
-               Event                      = 0x14000000,
-               Property                        = 0x17000000,
-               ModuleRef                  = 0x1a000000,
-               TypeSpec                        = 0x1b000000,
-               Assembly                        = 0x20000000,
-               AssemblyRef              = 0x23000000,
-               File                            = 0x26000000,
-               ExportedType            = 0x27000000,
-               ManifestResource        = 0x28000000,
-               GenericParam                    = 0x2a000000,
-               MethodSpec                      = 0x2b000000,
-               String                    = 0x70000000,
-               Name                            = 0x71000000,
-               BaseType                        = 0x72000000
+               Module = 0x00000000,
+               TypeRef = 0x01000000,
+               TypeDef = 0x02000000,
+               Field = 0x04000000,
+               Method = 0x06000000,
+               Param = 0x08000000,
+               InterfaceImpl = 0x09000000,
+               MemberRef = 0x0a000000,
+               CustomAttribute = 0x0c000000,
+               Permission = 0x0e000000,
+               Signature = 0x11000000,
+               Event = 0x14000000,
+               Property = 0x17000000,
+               ModuleRef = 0x1a000000,
+               TypeSpec = 0x1b000000,
+               Assembly = 0x20000000,
+               AssemblyRef = 0x23000000,
+               File = 0x26000000,
+               ExportedType = 0x27000000,
+               ManifestResource = 0x28000000,
+               GenericParam = 0x2a000000,
+               MethodSpec = 0x2b000000,
+               String = 0x70000000,
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs
deleted file mode 100644 (file)
index d611ac9..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// TypeDefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using Mono.Cecil;
-
-       public sealed class TypeDefTable : IMetadataTable {
-
-               public const int RId = 0x02;
-
-               RowCollection m_rows;
-
-               public TypeDefRow this [int index] {
-                       get { return m_rows [index] as TypeDefRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal TypeDefTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitTypeDefTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class TypeDefRow : IMetadataRow {
-
-               public TypeAttributes Flags;
-               public uint Name;
-               public uint Namespace;
-               public MetadataToken Extends;
-               public uint FieldList;
-               public uint MethodList;
-
-               internal TypeDefRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitTypeDefRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs
deleted file mode 100644 (file)
index d27d72e..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// TypeRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class TypeRefTable : IMetadataTable {
-
-               public const int RId = 0x01;
-
-               RowCollection m_rows;
-
-               public TypeRefRow this [int index] {
-                       get { return m_rows [index] as TypeRefRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal TypeRefTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitTypeRefTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class TypeRefRow : IMetadataRow {
-
-               public MetadataToken ResolutionScope;
-               public uint Name;
-               public uint Namespace;
-
-               internal TypeRefRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitTypeRefRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs
deleted file mode 100644 (file)
index 5c20402..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// TypeSpecTable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       public sealed class TypeSpecTable : IMetadataTable {
-
-               public const int RId = 0x1b;
-
-               RowCollection m_rows;
-
-               public TypeSpecRow this [int index] {
-                       get { return m_rows [index] as TypeSpecRow; }
-                       set { m_rows [index] = value; }
-               }
-
-               public RowCollection Rows {
-                       get { return m_rows; }
-                       set { m_rows = value; }
-               }
-
-               public int Id {
-                       get { return RId; }
-               }
-
-               internal TypeSpecTable ()
-               {
-               }
-
-               public void Accept (IMetadataTableVisitor visitor)
-               {
-                       visitor.VisitTypeSpecTable (this);
-                       this.Rows.Accept (visitor.GetRowVisitor ());
-               }
-       }
-
-       public sealed class TypeSpecRow : IMetadataRow {
-
-               public uint Signature;
-
-               internal TypeSpecRow ()
-               {
-               }
-
-               public void Accept (IMetadataRowVisitor visitor)
-               {
-                       visitor.VisitTypeSpecRow (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs
new file mode 100644 (file)
index 0000000..7353cb7
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// UserStringHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+       sealed class UserStringHeap : StringHeap {
+
+               public UserStringHeap (Section section, uint start, uint size)
+                       : base (section, start, size)
+               {
+               }
+
+               protected override string ReadStringAt (uint index)
+               {
+                       byte [] data = Section.Data;
+                       int start = (int) (index + Offset);
+
+                       uint length = (uint) (data.ReadCompressedUInt32 (ref start) & ~1);
+                       if (length < 1)
+                               return string.Empty;
+
+                       var chars = new char [length / 2];
+
+                       for (int i = start, j = 0; i < start + length; i += 2)
+                               chars [j++] = (char) (data [i] | (data [i + 1] << 8));
+
+                       return new string (chars);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs
deleted file mode 100644 (file)
index dcf776a..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// UserStringsHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-       using System.Collections;
-       using System.Text;
-
-       public class UserStringsHeap : MetadataHeap {
-
-               readonly IDictionary m_strings;
-
-               public string this [uint offset] {
-                       get {
-                               string us = m_strings [offset] as string;
-                               if (us != null)
-                                       return us;
-
-                               us = ReadStringAt ((int) offset);
-                               if (us != null && us.Length != 0)
-                                       m_strings [offset] = us;
-
-                               return us;
-                       }
-                       set { m_strings [offset] = value; }
-               }
-
-               internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings)
-               {
-                       m_strings = new Hashtable ();
-               }
-
-               string ReadStringAt (int offset)
-               {
-                       int length = Utilities.ReadCompressedInteger (this.Data, offset, out offset) - 1;
-                       if (length < 1)
-                               return string.Empty;
-
-                       char [] chars = new char [length / 2];
-
-                       for (int i = offset, j = 0; i < offset + length; i += 2)
-                               chars [j++] = (char) (Data [i] | (Data [i + 1] << 8));
-
-                       return new string (chars);
-               }
-
-               public override void Accept (IMetadataVisitor visitor)
-               {
-                       visitor.VisitUserStringsHeap (this);
-               }
-       }
-}
index 7f762529c625c56443dbaa74d784e0d01c524c2b..496c61b51f74e01ea04e225d12883f3db955d707 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Sat Feb 16 23:23:29 +0100 2008
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+using System;
 
-       using System;
-       using System.Collections;
-       using System.IO;
+using Mono.Cecil.Metadata;
 
-       sealed class Utilities {
+namespace Mono.Cecil {
 
-               Utilities ()
-               {
-               }
+       static partial class Mixin {
 
-               public static int ReadCompressedInteger (byte [] data, int pos, out int start)
+               public static uint ReadCompressedUInt32 (this byte [] data, ref int position)
                {
-                       int integer;
-                       start = pos;
-                       if ((data [pos] & 0x80) == 0) {
-                               integer = data [pos];
-                               start++;
-                       } else if ((data [pos] & 0x40) == 0) {
-                               integer = (data [start] & ~0x80) << 8;
-                               integer |= data [pos + 1];
-                               start += 2;
+                       uint integer;
+                       if ((data [position] & 0x80) == 0) {
+                               integer = data [position];
+                               position++;
+                       } else if ((data [position] & 0x40) == 0) {
+                               integer = (uint) (data [position] & ~0x80) << 8;
+                               integer |= data [position + 1];
+                               position += 2;
                        } else {
-                               integer = (data [start] & ~0xc0) << 24;
-                               integer |= data [pos + 1] << 16;
-                               integer |= data [pos + 2] << 8;
-                               integer |= data [pos + 3];
-                               start += 4;
+                               integer = (uint) (data [position] & ~0xc0) << 24;
+                               integer |= (uint) data [position + 1] << 16;
+                               integer |= (uint) data [position + 2] << 8;
+                               integer |= (uint) data [position + 3];
+                               position += 4;
                        }
                        return integer;
                }
 
-               public static int ReadCompressedSignedInteger (byte [] data, int pos, out int start)
+               public static MetadataToken GetMetadataToken (this CodedIndex self, uint data)
                {
-                       int integer = ReadCompressedInteger (data, pos, out start) >> 1;
-                       if ((integer & 1) == 0)
-                               return integer;
-
-                       if (integer < 0x40)
-                               return integer - 0x40;
-
-                       if (integer < 0x2000)
-                               return integer - 0x2000;
-
-                       if (integer < 0x10000000)
-                               return integer - 0x10000000;
-
-                       return integer - 0x20000000;
-               }
-
-               public static int WriteCompressedInteger (BinaryWriter writer, int value)
-               {
-                       if (value < 0x80)
-                               writer.Write ((byte) value);
-                       else if (value < 0x4000) {
-                               writer.Write ((byte) (0x80 | (value >> 8)));
-                               writer.Write ((byte) (value & 0xff));
-                       } else {
-                               writer.Write ((byte) ((value >> 24) | 0xc0));
-                               writer.Write ((byte) ((value >> 16) & 0xff));
-                               writer.Write ((byte) ((value >> 8) & 0xff));
-                               writer.Write ((byte) (value & 0xff));
-                       }
-                       return (int) writer.BaseStream.Position;
-               }
-
-               public static MetadataToken GetMetadataToken (CodedIndex cidx, uint data)
-               {
-                       uint rid = 0;
-                       switch (cidx) {
-                       case CodedIndex.TypeDefOrRef :
+                       uint rid;
+                       TokenType token_type;
+                       switch (self) {
+                       case CodedIndex.TypeDefOrRef:
                                rid = data >> 2;
                                switch (data & 3) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.TypeDef, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.TypeRef, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.TypeSpec, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.TypeDef; goto ret;
+                               case 1:
+                                       token_type = TokenType.TypeRef; goto ret;
+                               case 2:
+                                       token_type = TokenType.TypeSpec; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasConstant :
+                       case CodedIndex.HasConstant:
                                rid = data >> 2;
                                switch (data & 3) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Field, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Param, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.Property, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Field; goto ret;
+                               case 1:
+                                       token_type = TokenType.Param; goto ret;
+                               case 2:
+                                       token_type = TokenType.Property; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasCustomAttribute :
+                       case CodedIndex.HasCustomAttribute:
                                rid = data >> 5;
                                switch (data & 31) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Field, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.TypeRef, rid);
-                               case 3 :
-                                       return new MetadataToken (TokenType.TypeDef, rid);
-                               case 4 :
-                                       return new MetadataToken (TokenType.Param, rid);
-                               case 5 :
-                                       return new MetadataToken (TokenType.InterfaceImpl, rid);
-                               case 6 :
-                                       return new MetadataToken (TokenType.MemberRef, rid);
-                               case 7 :
-                                       return new MetadataToken (TokenType.Module, rid);
-                               case 8 :
-                                       return new MetadataToken (TokenType.Permission, rid);
-                               case 9 :
-                                       return new MetadataToken (TokenType.Property, rid);
-                               case 10 :
-                                       return new MetadataToken (TokenType.Event, rid);
-                               case 11 :
-                                       return new MetadataToken (TokenType.Signature, rid);
-                               case 12 :
-                                       return new MetadataToken (TokenType.ModuleRef, rid);
-                               case 13 :
-                                       return new MetadataToken (TokenType.TypeSpec, rid);
-                               case 14 :
-                                       return new MetadataToken (TokenType.Assembly, rid);
-                               case 15 :
-                                       return new MetadataToken (TokenType.AssemblyRef, rid);
-                               case 16 :
-                                       return new MetadataToken (TokenType.File, rid);
-                               case 17 :
-                                       return new MetadataToken (TokenType.ExportedType, rid);
-                               case 18 :
-                                       return new MetadataToken (TokenType.ManifestResource, rid);
-                               case 19 :
-                                       return new MetadataToken (TokenType.GenericParam, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Method; goto ret;
+                               case 1:
+                                       token_type = TokenType.Field; goto ret;
+                               case 2:
+                                       token_type = TokenType.TypeRef; goto ret;
+                               case 3:
+                                       token_type = TokenType.TypeDef; goto ret;
+                               case 4:
+                                       token_type = TokenType.Param; goto ret;
+                               case 5:
+                                       token_type = TokenType.InterfaceImpl; goto ret;
+                               case 6:
+                                       token_type = TokenType.MemberRef; goto ret;
+                               case 7:
+                                       token_type = TokenType.Module; goto ret;
+                               case 8:
+                                       token_type = TokenType.Permission; goto ret;
+                               case 9:
+                                       token_type = TokenType.Property; goto ret;
+                               case 10:
+                                       token_type = TokenType.Event; goto ret;
+                               case 11:
+                                       token_type = TokenType.Signature; goto ret;
+                               case 12:
+                                       token_type = TokenType.ModuleRef; goto ret;
+                               case 13:
+                                       token_type = TokenType.TypeSpec; goto ret;
+                               case 14:
+                                       token_type = TokenType.Assembly; goto ret;
+                               case 15:
+                                       token_type = TokenType.AssemblyRef; goto ret;
+                               case 16:
+                                       token_type = TokenType.File; goto ret;
+                               case 17:
+                                       token_type = TokenType.ExportedType; goto ret;
+                               case 18:
+                                       token_type = TokenType.ManifestResource; goto ret;
+                               case 19:
+                                       token_type = TokenType.GenericParam; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasFieldMarshal :
+                       case CodedIndex.HasFieldMarshal:
                                rid = data >> 1;
                                switch (data & 1) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Field, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Param, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Field; goto ret;
+                               case 1:
+                                       token_type = TokenType.Param; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasDeclSecurity :
+                       case CodedIndex.HasDeclSecurity:
                                rid = data >> 2;
                                switch (data & 3) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.TypeDef, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.Assembly, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.TypeDef; goto ret;
+                               case 1:
+                                       token_type = TokenType.Method; goto ret;
+                               case 2:
+                                       token_type = TokenType.Assembly; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MemberRefParent :
+                       case CodedIndex.MemberRefParent:
                                rid = data >> 3;
                                switch (data & 7) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.TypeDef, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.TypeRef, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.ModuleRef, rid);
-                               case 3 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               case 4 :
-                                       return new MetadataToken (TokenType.TypeSpec, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.TypeDef; goto ret;
+                               case 1:
+                                       token_type = TokenType.TypeRef; goto ret;
+                               case 2:
+                                       token_type = TokenType.ModuleRef; goto ret;
+                               case 3:
+                                       token_type = TokenType.Method; goto ret;
+                               case 4:
+                                       token_type = TokenType.TypeSpec; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasSemantics :
+                       case CodedIndex.HasSemantics:
                                rid = data >> 1;
                                switch (data & 1) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Event, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Property, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Event; goto ret;
+                               case 1:
+                                       token_type = TokenType.Property; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MethodDefOrRef :
+                       case CodedIndex.MethodDefOrRef:
                                rid = data >> 1;
                                switch (data & 1) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.MemberRef, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Method; goto ret;
+                               case 1:
+                                       token_type = TokenType.MemberRef; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MemberForwarded :
+                       case CodedIndex.MemberForwarded:
                                rid = data >> 1;
                                switch (data & 1) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Field, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Field; goto ret;
+                               case 1:
+                                       token_type = TokenType.Method; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.Implementation :
+                       case CodedIndex.Implementation:
                                rid = data >> 2;
                                switch (data & 3) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.File, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.AssemblyRef, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.ExportedType, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.File; goto ret;
+                               case 1:
+                                       token_type = TokenType.AssemblyRef; goto ret;
+                               case 2:
+                                       token_type = TokenType.ExportedType; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.CustomAttributeType :
+                       case CodedIndex.CustomAttributeType:
                                rid = data >> 3;
                                switch (data & 7) {
-                               case 2 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               case 3 :
-                                       return new MetadataToken (TokenType.MemberRef, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 2:
+                                       token_type = TokenType.Method; goto ret;
+                               case 3:
+                                       token_type = TokenType.MemberRef; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.ResolutionScope :
+                       case CodedIndex.ResolutionScope:
                                rid = data >> 2;
                                switch (data & 3) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.Module, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.ModuleRef, rid);
-                               case 2 :
-                                       return new MetadataToken (TokenType.AssemblyRef, rid);
-                               case 3 :
-                                       return new MetadataToken (TokenType.TypeRef, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.Module; goto ret;
+                               case 1:
+                                       token_type = TokenType.ModuleRef; goto ret;
+                               case 2:
+                                       token_type = TokenType.AssemblyRef; goto ret;
+                               case 3:
+                                       token_type = TokenType.TypeRef; goto ret;
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.TypeOrMethodDef :
+                       case CodedIndex.TypeOrMethodDef:
                                rid = data >> 1;
                                switch (data & 1) {
-                               case 0 :
-                                       return new MetadataToken (TokenType.TypeDef, rid);
-                               case 1 :
-                                       return new MetadataToken (TokenType.Method, rid);
-                               default :
-                                       return MetadataToken.Zero;
+                               case 0:
+                                       token_type = TokenType.TypeDef; goto ret;
+                               case 1:
+                                       token_type = TokenType.Method; goto ret;
+                               default: goto exit;
                                }
-                       default :
-                               return MetadataToken.Zero;
+                       default:
+                               goto exit;
                        }
+               ret:
+                       return new MetadataToken (token_type, rid);
+               exit:
+                       return MetadataToken.Zero;
                }
 
-               public static uint CompressMetadataToken (CodedIndex cidx, MetadataToken token)
+#if !READ_ONLY
+               public static uint CompressMetadataToken (this CodedIndex self, MetadataToken token)
                {
                        uint ret = 0;
                        if (token.RID == 0)
                                return ret;
-                       switch (cidx) {
-                       case CodedIndex.TypeDefOrRef :
+                       switch (self) {
+                       case CodedIndex.TypeDefOrRef:
                                ret = token.RID << 2;
                                switch (token.TokenType) {
-                               case TokenType.TypeDef :
+                               case TokenType.TypeDef:
                                        return ret | 0;
-                               case TokenType.TypeRef :
+                               case TokenType.TypeRef:
                                        return ret | 1;
-                               case TokenType.TypeSpec :
+                               case TokenType.TypeSpec:
                                        return ret | 2;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for TypeDefOrRef");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasConstant :
+                       case CodedIndex.HasConstant:
                                ret = token.RID << 2;
                                switch (token.TokenType) {
-                               case TokenType.Field :
+                               case TokenType.Field:
                                        return ret | 0;
-                               case TokenType.Param :
+                               case TokenType.Param:
                                        return ret | 1;
-                               case TokenType.Property :
+                               case TokenType.Property:
                                        return ret | 2;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for HasConstant");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasCustomAttribute :
+                       case CodedIndex.HasCustomAttribute:
                                ret = token.RID << 5;
                                switch (token.TokenType) {
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 0;
-                               case TokenType.Field :
+                               case TokenType.Field:
                                        return ret | 1;
-                               case TokenType.TypeRef :
+                               case TokenType.TypeRef:
                                        return ret | 2;
-                               case TokenType.TypeDef :
+                               case TokenType.TypeDef:
                                        return ret | 3;
-                               case TokenType.Param :
+                               case TokenType.Param:
                                        return ret | 4;
-                               case TokenType.InterfaceImpl :
+                               case TokenType.InterfaceImpl:
                                        return ret | 5;
-                               case TokenType.MemberRef :
+                               case TokenType.MemberRef:
                                        return ret | 6;
-                               case TokenType.Module :
+                               case TokenType.Module:
                                        return ret | 7;
-                               case TokenType.Permission :
+                               case TokenType.Permission:
                                        return ret | 8;
-                               case TokenType.Property :
+                               case TokenType.Property:
                                        return ret | 9;
-                               case TokenType.Event :
+                               case TokenType.Event:
                                        return ret | 10;
-                               case TokenType.Signature :
+                               case TokenType.Signature:
                                        return ret | 11;
-                               case TokenType.ModuleRef :
+                               case TokenType.ModuleRef:
                                        return ret | 12;
-                               case TokenType.TypeSpec :
+                               case TokenType.TypeSpec:
                                        return ret | 13;
-                               case TokenType.Assembly :
+                               case TokenType.Assembly:
                                        return ret | 14;
-                               case TokenType.AssemblyRef :
+                               case TokenType.AssemblyRef:
                                        return ret | 15;
-                               case TokenType.File :
+                               case TokenType.File:
                                        return ret | 16;
-                               case TokenType.ExportedType :
+                               case TokenType.ExportedType:
                                        return ret | 17;
-                               case TokenType.ManifestResource :
+                               case TokenType.ManifestResource:
                                        return ret | 18;
-                               case TokenType.GenericParam :
+                               case TokenType.GenericParam:
                                        return ret | 19;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for HasCustomAttribute");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasFieldMarshal :
+                       case CodedIndex.HasFieldMarshal:
                                ret = token.RID << 1;
                                switch (token.TokenType) {
-                               case TokenType.Field :
+                               case TokenType.Field:
                                        return ret | 0;
-                               case TokenType.Param :
+                               case TokenType.Param:
                                        return ret | 1;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for HasFieldMarshal");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasDeclSecurity :
+                       case CodedIndex.HasDeclSecurity:
                                ret = token.RID << 2;
                                switch (token.TokenType) {
-                               case TokenType.TypeDef :
+                               case TokenType.TypeDef:
                                        return ret | 0;
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 1;
-                               case TokenType.Assembly :
+                               case TokenType.Assembly:
                                        return ret | 2;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for HasDeclSecurity");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MemberRefParent :
+                       case CodedIndex.MemberRefParent:
                                ret = token.RID << 3;
                                switch (token.TokenType) {
-                               case TokenType.TypeDef :
+                               case TokenType.TypeDef:
                                        return ret | 0;
-                               case TokenType.TypeRef :
+                               case TokenType.TypeRef:
                                        return ret | 1;
-                               case TokenType.ModuleRef :
+                               case TokenType.ModuleRef:
                                        return ret | 2;
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 3;
-                               case TokenType.TypeSpec :
+                               case TokenType.TypeSpec:
                                        return ret | 4;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for MemberRefParent");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.HasSemantics :
+                       case CodedIndex.HasSemantics:
                                ret = token.RID << 1;
                                switch (token.TokenType) {
-                               case TokenType.Event :
+                               case TokenType.Event:
                                        return ret | 0;
-                               case TokenType.Property :
+                               case TokenType.Property:
                                        return ret | 1;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for HasSemantics");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MethodDefOrRef :
+                       case CodedIndex.MethodDefOrRef:
                                ret = token.RID << 1;
                                switch (token.TokenType) {
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 0;
-                               case TokenType.MemberRef :
+                               case TokenType.MemberRef:
                                        return ret | 1;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for MethodDefOrRef");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.MemberForwarded :
+                       case CodedIndex.MemberForwarded:
                                ret = token.RID << 1;
                                switch (token.TokenType) {
-                               case TokenType.Field :
+                               case TokenType.Field:
                                        return ret | 0;
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 1;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for MemberForwarded");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.Implementation :
+                       case CodedIndex.Implementation:
                                ret = token.RID << 2;
                                switch (token.TokenType) {
-                               case TokenType.File :
+                               case TokenType.File:
                                        return ret | 0;
-                               case TokenType.AssemblyRef :
+                               case TokenType.AssemblyRef:
                                        return ret | 1;
-                               case TokenType.ExportedType :
+                               case TokenType.ExportedType:
                                        return ret | 2;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for Implementation");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.CustomAttributeType :
+                       case CodedIndex.CustomAttributeType:
                                ret = token.RID << 3;
                                switch (token.TokenType) {
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 2;
-                               case TokenType.MemberRef :
+                               case TokenType.MemberRef:
                                        return ret | 3;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for CustomAttributeType");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.ResolutionScope :
+                       case CodedIndex.ResolutionScope:
                                ret = token.RID << 2;
                                switch (token.TokenType) {
-                               case TokenType.Module :
+                               case TokenType.Module:
                                        return ret | 0;
-                               case TokenType.ModuleRef :
+                               case TokenType.ModuleRef:
                                        return ret | 1;
-                               case TokenType.AssemblyRef :
+                               case TokenType.AssemblyRef:
                                        return ret | 2;
-                               case TokenType.TypeRef :
+                               case TokenType.TypeRef:
                                        return ret | 3;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for ResolutionScope");
+                               default:
+                                       goto exit;
                                }
-                       case CodedIndex.TypeOrMethodDef :
+                       case CodedIndex.TypeOrMethodDef:
                                ret = token.RID << 1;
                                switch (token.TokenType) {
-                               case TokenType.TypeDef :
+                               case TokenType.TypeDef:
                                        return ret | 0;
-                               case TokenType.Method :
+                               case TokenType.Method:
                                        return ret | 1;
-                               default :
-                                       throw new MetadataFormatException("Non valid Token for TypeOrMethodDef");
+                               default:
+                                       goto exit;
                                }
-                       default :
-                               throw new MetadataFormatException ("Non valid CodedIndex");
-                       }
-               }
-
-               internal static Type GetCorrespondingTable (TokenType t)
-               {
-                       switch (t) {
-                       case TokenType.Assembly :
-                               return typeof (AssemblyTable);
-                       case TokenType.AssemblyRef :
-                               return typeof (AssemblyRefTable);
-                       case TokenType.CustomAttribute :
-                               return typeof (CustomAttributeTable);
-                       case TokenType.Event :
-                               return typeof (EventTable);
-                       case TokenType.ExportedType :
-                               return typeof (ExportedTypeTable);
-                       case TokenType.Field :
-                               return typeof (FieldTable);
-                       case TokenType.File :
-                               return typeof (FileTable);
-                       case TokenType.InterfaceImpl :
-                               return typeof (InterfaceImplTable);
-                       case TokenType.MemberRef :
-                               return typeof (MemberRefTable);
-                       case TokenType.Method :
-                               return typeof (MethodTable);
-                       case TokenType.Module :
-                               return typeof (ModuleTable);
-                       case TokenType.ModuleRef :
-                               return typeof (ModuleRefTable);
-                       case TokenType.Param :
-                               return typeof (ParamTable);
-                       case TokenType.Permission :
-                               return typeof (DeclSecurityTable);
-                       case TokenType.Property :
-                               return typeof (PropertyTable);
-                       case TokenType.Signature :
-                               return typeof (StandAloneSigTable);
-                       case TokenType.TypeDef :
-                               return typeof (TypeDefTable);
-                       case TokenType.TypeRef :
-                               return typeof (TypeRefTable);
-                       case TokenType.TypeSpec :
-                               return typeof (TypeSpecTable);
-                       default :
-                               return null;
+                       default:
+                               goto exit;
                        }
+               exit:
+                       throw new ArgumentException ();
                }
+#endif
 
-               internal delegate int TableRowCounter (int rid);
-
-               internal static int GetCodedIndexSize (CodedIndex ci, TableRowCounter rowCounter, int [] codedIndexCache)
+               public static int GetSize (this CodedIndex self, Func<Table, int> counter)
                {
-                       int bits = 0, max = 0, index = (int) ci;
-                       if (codedIndexCache [index] != 0)
-                               return codedIndexCache [index];
+                       int bits;
+                       Table [] tables;
 
-                       int res = 0;
-                       int [] rids;
-                       switch (ci) {
-                       case CodedIndex.TypeDefOrRef :
+                       switch (self) {
+                       case CodedIndex.TypeDefOrRef:
                                bits = 2;
-                               rids = new int [3];
-                               rids [0] = TypeDefTable.RId;
-                               rids [1] = TypeRefTable.RId;
-                               rids [2] = TypeSpecTable.RId;
+                               tables = new [] { Table.TypeDef, Table.TypeRef, Table.TypeSpec };
                                break;
-                       case CodedIndex.HasConstant :
+                       case CodedIndex.HasConstant:
                                bits = 2;
-                               rids = new int [3];
-                               rids [0] = FieldTable.RId;
-                               rids [1] = ParamTable.RId;
-                               rids [2] = PropertyTable.RId;
+                               tables = new [] { Table.Field, Table.Param, Table.Property };
                                break;
-                       case CodedIndex.HasCustomAttribute :
+                       case CodedIndex.HasCustomAttribute:
                                bits = 5;
-                               rids = new int [20];
-                               rids [0] = MethodTable.RId;
-                               rids [1] = FieldTable.RId;
-                               rids [2] = TypeRefTable.RId;
-                               rids [3] = TypeDefTable.RId;
-                               rids [4] = ParamTable.RId;
-                               rids [5] = InterfaceImplTable.RId;
-                               rids [6] = MemberRefTable.RId;
-                               rids [7] = ModuleTable.RId;
-                               rids [8] = DeclSecurityTable.RId;
-                               rids [9] = PropertyTable.RId;
-                               rids [10] = EventTable.RId;
-                               rids [11] = StandAloneSigTable.RId;
-                               rids [12] = ModuleRefTable.RId;
-                               rids [13] = TypeSpecTable.RId;
-                               rids [14] = AssemblyTable.RId;
-                               rids [15] = AssemblyRefTable.RId;
-                               rids [16] = FileTable.RId;
-                               rids [17] = ExportedTypeTable.RId;
-                               rids [18] = ManifestResourceTable.RId;
-                               rids [19] = GenericParamTable.RId;
+                               tables = new [] {
+                                       Table.Method, Table.Field, Table.TypeRef, Table.TypeDef, Table.Param, Table.InterfaceImpl, Table.MemberRef,
+                                       Table.Module, Table.DeclSecurity, Table.Property, Table.Event, Table.StandAloneSig, Table.ModuleRef,
+                                       Table.TypeSpec, Table.Assembly, Table.AssemblyRef, Table.File, Table.ExportedType,
+                                       Table.ManifestResource, Table.GenericParam
+                               };
                                break;
-                       case CodedIndex.HasFieldMarshal :
+                       case CodedIndex.HasFieldMarshal:
                                bits = 1;
-                               rids = new int [2];
-                               rids [0] = FieldTable.RId;
-                               rids [1] = ParamTable.RId;
+                               tables = new [] { Table.Field, Table.Param };
                                break;
-                       case CodedIndex.HasDeclSecurity :
+                       case CodedIndex.HasDeclSecurity:
                                bits = 2;
-                               rids = new int [3];
-                               rids [0] = TypeDefTable.RId;
-                               rids [1] = MethodTable.RId;
-                               rids [2] = AssemblyTable.RId;
+                               tables = new [] { Table.TypeDef, Table.Method, Table.Assembly };
                                break;
-                       case CodedIndex.MemberRefParent :
+                       case CodedIndex.MemberRefParent:
                                bits = 3;
-                               rids = new int [5];
-                               rids [0] = TypeDefTable.RId;
-                               rids [1] = TypeRefTable.RId;
-                               rids [2] = ModuleRefTable.RId;
-                               rids [3] = MethodTable.RId;
-                               rids [4] = TypeSpecTable.RId;
+                               tables = new [] { Table.TypeDef, Table.TypeRef, Table.ModuleRef, Table.Method, Table.TypeSpec };
                                break;
-                       case CodedIndex.HasSemantics :
+                       case CodedIndex.HasSemantics:
                                bits = 1;
-                               rids = new int [2];
-                               rids [0] = EventTable.RId;
-                               rids [1] = PropertyTable.RId;
+                               tables = new [] { Table.Event, Table.Property };
                                break;
-                       case CodedIndex.MethodDefOrRef :
+                       case CodedIndex.MethodDefOrRef:
                                bits = 1;
-                               rids = new int [2];
-                               rids [0] = MethodTable.RId;
-                               rids [1] = MemberRefTable.RId;
+                               tables = new [] { Table.Method, Table.MemberRef };
                                break;
-                       case CodedIndex.MemberForwarded :
+                       case CodedIndex.MemberForwarded:
                                bits = 1;
-                               rids = new int [2];
-                               rids [0] = FieldTable.RId;
-                               rids [1] = MethodTable.RId;
+                               tables = new [] { Table.Field, Table.Method };
                                break;
-                       case CodedIndex.Implementation :
+                       case CodedIndex.Implementation:
                                bits = 2;
-                               rids = new int [3];
-                               rids [0] = FileTable.RId;
-                               rids [1] = AssemblyRefTable.RId;
-                               rids [2] = ExportedTypeTable.RId;
+                               tables = new [] { Table.File, Table.AssemblyRef, Table.ExportedType };
                                break;
-                       case CodedIndex.CustomAttributeType :
+                       case CodedIndex.CustomAttributeType:
                                bits = 3;
-                               rids = new int [2];
-                               rids [0] = MethodTable.RId;
-                               rids [1] = MemberRefTable.RId;
+                               tables = new [] { Table.Method, Table.MemberRef };
                                break;
-                       case CodedIndex.ResolutionScope :
+                       case CodedIndex.ResolutionScope:
                                bits = 2;
-                               rids = new int [4];
-                               rids [0] = ModuleTable.RId;
-                               rids [1] = ModuleRefTable.RId;
-                               rids [2] = AssemblyRefTable.RId;
-                               rids [3] = TypeRefTable.RId;
+                               tables = new [] { Table.Module, Table.ModuleRef, Table.AssemblyRef, Table.TypeRef };
                                break;
-                       case CodedIndex.TypeOrMethodDef :
+                       case CodedIndex.TypeOrMethodDef:
                                bits = 1;
-                               rids = new int [2];
-                               rids [0] = TypeDefTable.RId;
-                               rids [1] = MethodTable.RId;
+                               tables = new [] { Table.TypeDef, Table.Method };
                                break;
-                       default :
-                               throw new MetadataFormatException ("Non valid CodedIndex");
+                       default:
+                               throw new ArgumentException ();
                        }
 
-                       for (int i = 0; i < rids.Length; i++) {
-                               int rows = rowCounter (rids [i]);
-                               if (rows > max) max = rows;
+                       int max = 0;
+
+                       for (int i = 0; i < tables.Length; i++) {
+                               max = System.Math.Max (counter (tables [i]), max);
                        }
 
-                       res = max < (1 << (16 - bits)) ? 2 : 4;
-                       codedIndexCache [index] = res;
-                       return res;
+                       return max < (1 << (16 - bits)) ? 2 : 4;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs
new file mode 100644 (file)
index 0000000..8f5b38e
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// BinaryStreamReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+namespace Mono.Cecil.PE {
+
+       class BinaryStreamReader : BinaryReader {
+
+               public BinaryStreamReader (Stream stream)
+                       : base (stream)
+               {
+               }
+
+               protected void Advance (int bytes)
+               {
+                       BaseStream.Seek (bytes, SeekOrigin.Current);
+               }
+
+               protected DataDirectory ReadDataDirectory ()
+               {
+                       return new DataDirectory (ReadUInt32 (), ReadUInt32 ());
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs
new file mode 100644 (file)
index 0000000..37189cb
--- /dev/null
@@ -0,0 +1,96 @@
+//
+// BinaryStreamWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+#if !READ_ONLY
+
+namespace Mono.Cecil.PE {
+
+       class BinaryStreamWriter : BinaryWriter {
+
+               public BinaryStreamWriter (Stream stream)
+                       : base (stream)
+               {
+               }
+
+               public void WriteByte (byte value)
+               {
+                       Write (value);
+               }
+
+               public void WriteUInt16 (ushort value)
+               {
+                       Write (value);
+               }
+
+               public void WriteInt16 (short value)
+               {
+                       Write (value);
+               }
+
+               public void WriteUInt32 (uint value)
+               {
+                       Write (value);
+               }
+
+               public void WriteInt32 (int value)
+               {
+                       Write (value);
+               }
+
+               public void WriteUInt64 (ulong value)
+               {
+                       Write (value);
+               }
+
+               public void WriteBytes (byte [] bytes)
+               {
+                       Write (bytes);
+               }
+
+               public void WriteDataDirectory (DataDirectory directory)
+               {
+                       Write (directory.VirtualAddress);
+                       Write (directory.Size);
+               }
+
+               public void WriteBuffer (ByteBuffer buffer)
+               {
+                       Write (buffer.buffer, 0, buffer.length);
+               }
+
+               protected void Advance (int bytes)
+               {
+                       BaseStream.Seek (bytes, SeekOrigin.Current);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs
new file mode 100644 (file)
index 0000000..4303b6d
--- /dev/null
@@ -0,0 +1,342 @@
+//
+// ByteBuffer.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil.PE {
+
+       class ByteBuffer {
+
+               internal byte [] buffer;
+               internal int length;
+               internal int position;
+
+               public ByteBuffer ()
+               {
+                       this.buffer = Empty<byte>.Array;
+               }
+
+               public ByteBuffer (int length)
+               {
+                       this.buffer = new byte [length];
+               }
+
+               public ByteBuffer (byte [] buffer)
+               {
+                       this.buffer = buffer ?? Empty<byte>.Array;
+                       this.length = this.buffer.Length;
+               }
+
+               public void Reset (byte [] buffer)
+               {
+                       this.buffer = buffer ?? Empty<byte>.Array;
+                       this.length = this.buffer.Length;
+               }
+
+               public void Advance (int length)
+               {
+                       position += length;
+               }
+
+               public byte ReadByte ()
+               {
+                       return buffer [position++];
+               }
+
+               public sbyte ReadSByte ()
+               {
+                       return (sbyte) ReadByte ();
+               }
+
+               public byte [] ReadBytes (int length)
+               {
+                       var bytes = new byte [length];
+                       Buffer.BlockCopy (buffer, position, bytes, 0, length);
+                       position += length;
+                       return bytes;
+               }
+
+               public ushort ReadUInt16 ()
+               {
+                       ushort value = (ushort) (buffer [position]
+                               | (buffer [position + 1] << 8));
+                       position += 2;
+                       return value;
+               }
+
+               public short ReadInt16 ()
+               {
+                       return (short) ReadUInt16 ();
+               }
+
+               public uint ReadUInt32 ()
+               {
+                       uint value = (uint) (buffer [position]
+                               | (buffer [position + 1] << 8)
+                               | (buffer [position + 2] << 16)
+                               | (buffer [position + 3] << 24));
+                       position += 4;
+                       return value;
+               }
+
+               public int ReadInt32 ()
+               {
+                       return (int) ReadUInt32 ();
+               }
+
+               public ulong ReadUInt64 ()
+               {
+                       uint low = ReadUInt32 ();
+                       uint high = ReadUInt32 ();
+
+                       return (((ulong) high) << 32) | low;
+               }
+
+               public long ReadInt64 ()
+               {
+                       return (long) ReadUInt64 ();
+               }
+
+               public uint ReadCompressedUInt32 ()
+               {
+                       byte first = ReadByte ();
+                       if ((first & 0x80) == 0)
+                               return first;
+
+                       if ((first & 0x40) == 0)
+                               return ((uint) (first & ~0x80) << 8)
+                                       | ReadByte ();
+
+                       return ((uint) (first & ~0xc0) << 24)
+                               | (uint) ReadByte () << 16
+                               | (uint) ReadByte () << 8
+                               | ReadByte ();
+               }
+
+               public int ReadCompressedInt32 ()
+               {
+                       var value = (int) ReadCompressedUInt32 ();
+
+                       return (value & 1) != 0
+                               ? -(value >> 1)
+                               : value >> 1;
+               }
+
+               public float ReadSingle ()
+               {
+                       if (!BitConverter.IsLittleEndian) {
+                               var bytes = ReadBytes (4);
+                               Array.Reverse (bytes);
+                               return BitConverter.ToSingle (bytes, 0);
+                       }
+
+                       float value = BitConverter.ToSingle (buffer, position);
+                       position += 4;
+                       return value;
+               }
+
+               public double ReadDouble ()
+               {
+                       if (!BitConverter.IsLittleEndian) {
+                               var bytes = ReadBytes (8);
+                               Array.Reverse (bytes);
+                               return BitConverter.ToDouble (bytes, 0);
+                       }
+
+                       double value = BitConverter.ToDouble (buffer, position);
+                       position += 8;
+                       return value;
+               }
+
+#if !READ_ONLY
+
+               public void WriteByte (byte value)
+               {
+                       if (position == buffer.Length)
+                               Grow (1);
+
+                       buffer [position++] = value;
+
+                       if (position > length)
+                               length = position;
+               }
+
+               public void WriteSByte (sbyte value)
+               {
+                       WriteByte ((byte) value);
+               }
+
+               public void WriteUInt16 (ushort value)
+               {
+                       if (position + 2 > buffer.Length)
+                               Grow (2);
+
+                       buffer [position++] = (byte) value;
+                       buffer [position++] = (byte) (value >> 8);
+
+                       if (position > length)
+                               length = position;
+               }
+
+               public void WriteInt16 (short value)
+               {
+                       WriteUInt16 ((ushort) value);
+               }
+
+               public void WriteUInt32 (uint value)
+               {
+                       if (position + 4 > buffer.Length)
+                               Grow (4);
+
+                       buffer [position++] = (byte) value;
+                       buffer [position++] = (byte) (value >> 8);
+                       buffer [position++] = (byte) (value >> 16);
+                       buffer [position++] = (byte) (value >> 24);
+
+                       if (position > length)
+                               length = position;
+               }
+
+               public void WriteInt32 (int value)
+               {
+                       WriteUInt32 ((uint) value);
+               }
+
+               public void WriteUInt64 (ulong value)
+               {
+                       if (position + 8 > buffer.Length)
+                               Grow (8);
+
+                       buffer [position++] = (byte) value;
+                       buffer [position++] = (byte) (value >> 8);
+                       buffer [position++] = (byte) (value >> 16);
+                       buffer [position++] = (byte) (value >> 24);
+                       buffer [position++] = (byte) (value >> 32);
+                       buffer [position++] = (byte) (value >> 40);
+                       buffer [position++] = (byte) (value >> 48);
+                       buffer [position++] = (byte) (value >> 56);
+
+                       if (position > length)
+                               length = position;
+               }
+
+               public void WriteInt64 (long value)
+               {
+                       WriteUInt64 ((ulong) value);
+               }
+
+               public void WriteCompressedUInt32 (uint value)
+               {
+                       if (value < 0x80)
+                               WriteByte ((byte) value);
+                       else if (value < 0x4000) {
+                               WriteByte ((byte) (0x80 | (value >> 8)));
+                               WriteByte ((byte) (value & 0xff));
+                       } else {
+                               WriteByte ((byte) ((value >> 24) | 0xc0));
+                               WriteByte ((byte) ((value >> 16) & 0xff));
+                               WriteByte ((byte) ((value >> 8) & 0xff));
+                               WriteByte ((byte) (value & 0xff));
+                       }
+               }
+
+               public void WriteCompressedInt32 (int value)
+               {
+                       WriteCompressedUInt32 ((uint) ((value < 0) ? ((-value) << 1) | 1 : value << 1));
+               }
+
+               public void WriteBytes (byte [] bytes)
+               {
+                       var length = bytes.Length;
+                       if (position + length > buffer.Length)
+                               Grow (length);
+
+                       Buffer.BlockCopy (bytes, 0, buffer, position, length);
+                       position += length;
+
+                       if (position > this.length)
+                               this.length = position;
+               }
+
+               public void WriteBytes (int length)
+               {
+                       if (position + length > buffer.Length)
+                               Grow (length);
+
+                       position += length;
+
+                       if (position > this.length)
+                               this.length = position;
+               }
+
+               public void WriteBytes (ByteBuffer buffer)
+               {
+                       if (position + buffer.length > this.buffer.Length)
+                               Grow (buffer.length);
+
+                       Buffer.BlockCopy (buffer.buffer, 0, this.buffer, position, buffer.length);
+                       position += buffer.length;
+
+                       if (position > this.length)
+                               this.length = position;
+               }
+
+               public void WriteSingle (float value)
+               {
+                       var bytes = BitConverter.GetBytes (value);
+
+                       if (!BitConverter.IsLittleEndian)
+                               Array.Reverse (bytes);
+
+                       WriteBytes (bytes);
+               }
+
+               public void WriteDouble (double value)
+               {
+                       var bytes = BitConverter.GetBytes (value);
+
+                       if (!BitConverter.IsLittleEndian)
+                               Array.Reverse (bytes);
+
+                       WriteBytes (bytes);
+               }
+
+               void Grow (int desired)
+               {
+                       var current = this.buffer;
+                       var current_length = current.Length;
+
+                       var buffer = new byte [System.Math.Max (current_length + desired, current_length * 2)];
+                       Buffer.BlockCopy (current, 0, buffer, 0, current_length);
+                       this.buffer = buffer;
+               }
+
+#endif
+
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs
new file mode 100644 (file)
index 0000000..fd78025
--- /dev/null
@@ -0,0 +1,61 @@
+//
+// ByteBufferEqualityComparer.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+namespace Mono.Cecil.PE {
+
+       sealed class ByteBufferEqualityComparer : IEqualityComparer<ByteBuffer> {
+
+               public bool Equals (ByteBuffer x, ByteBuffer y)
+               {
+                       if (x.length != y.length)
+                               return false;
+
+                       var x_buffer = x.buffer;
+                       var y_buffer = y.buffer;
+
+                       for (int i = 0; i < x.length; i++)
+                               if (x_buffer [i] != y_buffer [i])
+                                       return false;
+
+                       return true;
+               }
+
+               public int GetHashCode (ByteBuffer buffer)
+               {
+                       var hash = 0;
+                       var bytes = buffer.buffer;
+                       for (int i = 0; i < buffer.length; i++)
+                               hash = (hash * 37) ^ bytes [i];
+
+                       return hash;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs
new file mode 100644 (file)
index 0000000..5ba2d2d
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// DataDirectory.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       struct DataDirectory {
+
+               public readonly RVA VirtualAddress;
+               public readonly uint Size;
+
+               public bool IsZero {
+                       get { return VirtualAddress == 0 && Size == 0; }
+               }
+
+               public DataDirectory (RVA rva, uint size)
+               {
+                       this.VirtualAddress = rva;
+                       this.Size = size;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs
new file mode 100644 (file)
index 0000000..11aba8f
--- /dev/null
@@ -0,0 +1,159 @@
+//
+// Image.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       sealed class Image {
+
+               public ModuleKind Kind;
+               public TargetRuntime Runtime;
+               public TargetArchitecture Architecture;
+               public string FileName;
+
+               public Section [] Sections;
+
+               public Section MetadataSection;
+
+               public uint EntryPointToken;
+               public ModuleAttributes Attributes;
+
+               public DataDirectory Debug;
+               public DataDirectory Resources;
+
+               public StringHeap StringHeap;
+               public BlobHeap BlobHeap;
+               public UserStringHeap UserStringHeap;
+               public GuidHeap GuidHeap;
+               public TableHeap TableHeap;
+
+               readonly int [] coded_index_sizes = new int [13];
+
+               readonly Func<Table, int> counter;
+
+               public Image ()
+               {
+                       counter = GetTableLength;
+               }
+
+               public bool HasTable (Table table)
+               {
+                       return GetTableLength (table) > 0;
+               }
+
+               public int GetTableLength (Table table)
+               {
+                       return (int) TableHeap [table].Length;
+               }
+
+               public int GetTableIndexSize (Table table)
+               {
+                       return GetTableLength (table) < 65536 ? 2 : 4;
+               }
+
+               public int GetCodedIndexSize (CodedIndex coded_index)
+               {
+                       var index = (int) coded_index;
+                       var size = coded_index_sizes [index];
+                       if (size != 0)
+                               return size;
+
+                       return coded_index_sizes [index] = coded_index.GetSize (counter);
+               }
+
+               public uint ResolveVirtualAddress (RVA rva)
+               {
+                       var section = GetSectionAtVirtualAddress (rva);
+                       if (section == null)
+                               throw new ArgumentOutOfRangeException ();
+
+                       return ResolveVirtualAddressInSection (rva, section);
+               }
+
+               public uint ResolveVirtualAddressInSection (RVA rva, Section section)
+               {
+                       return rva + section.PointerToRawData - section.VirtualAddress;
+               }
+
+               public Section GetSection (string name)
+               {
+                       var sections = this.Sections;
+                       for (int i = 0; i < sections.Length; i++) {
+                               var section = sections [i];
+                               if (section.Name == name)
+                                       return section;
+                       }
+
+                       return null;
+               }
+
+               public Section GetSectionAtVirtualAddress (RVA rva)
+               {
+                       var sections = this.Sections;
+                       for (int i = 0; i < sections.Length; i++) {
+                               var section = sections [i];
+                               if (rva >= section.VirtualAddress && rva < section.VirtualAddress + section.SizeOfRawData)
+                                       return section;
+                       }
+
+                       return null;
+               }
+
+               public ImageDebugDirectory GetDebugHeader (out byte [] header)
+               {
+                       var section = GetSectionAtVirtualAddress (Debug.VirtualAddress);
+                       var buffer = new ByteBuffer (section.Data);
+                       buffer.position = (int) (Debug.VirtualAddress - section.VirtualAddress);
+
+                       var directory = new ImageDebugDirectory {
+                               Characteristics = buffer.ReadInt32 (),
+                               TimeDateStamp = buffer.ReadInt32 (),
+                               MajorVersion = buffer.ReadInt16 (),
+                               MinorVersion = buffer.ReadInt16 (),
+                               Type = buffer.ReadInt32 (),
+                               SizeOfData = buffer.ReadInt32 (),
+                               AddressOfRawData = buffer.ReadInt32 (),
+                               PointerToRawData = buffer.ReadInt32 (),
+                       };
+
+                       buffer.position = (int) (directory.PointerToRawData - section.PointerToRawData);
+
+                       header = new byte [directory.SizeOfData];
+                       Buffer.BlockCopy (buffer.buffer, buffer.position, header, 0, header.Length);
+
+                       return directory;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs
new file mode 100644 (file)
index 0000000..a228c1f
--- /dev/null
@@ -0,0 +1,678 @@
+//
+// ImageReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       sealed class ImageReader : BinaryStreamReader {
+
+               readonly Image image;
+
+               DataDirectory cli;
+               DataDirectory metadata;
+
+               public ImageReader (Stream stream)
+                       : base (stream)
+               {
+                       image = new Image ();
+
+                       image.FileName = stream.GetFullyQualifiedName ();
+               }
+
+               void MoveTo (DataDirectory directory)
+               {
+                       BaseStream.Position = image.ResolveVirtualAddress (directory.VirtualAddress);
+               }
+
+               void MoveTo (uint position)
+               {
+                       BaseStream.Position = position;
+               }
+
+               void ReadImage ()
+               {
+                       if (BaseStream.Length < 128)
+                               throw new BadImageFormatException ();
+
+                       // - DOSHeader
+
+                       // PE                                   2
+                       // Start                                58
+                       // Lfanew                               4
+                       // End                                  64
+
+                       if (ReadUInt16 () != 0x5a4d)
+                               throw new BadImageFormatException ();
+
+                       Advance (58);
+
+                       MoveTo (ReadUInt32 ());
+
+                       if (ReadUInt32 () != 0x00004550)
+                               throw new BadImageFormatException ();
+
+                       // - PEFileHeader
+
+                       // Machine                              2
+                       image.Architecture = ReadArchitecture ();
+
+                       // NumberOfSections             2
+                       ushort sections = ReadUInt16 ();
+
+                       // TimeDateStamp                4
+                       // PointerToSymbolTable 4
+                       // NumberOfSymbols              4
+                       // OptionalHeaderSize   2
+                       Advance (14);
+
+                       // Characteristics              2
+                       ushort characteristics = ReadUInt16 ();
+
+                       ushort subsystem;
+                       ReadOptionalHeaders (out subsystem);
+                       ReadSections (sections);
+                       ReadCLIHeader ();
+                       ReadMetadata ();
+
+                       image.Kind = GetModuleKind (characteristics, subsystem);
+               }
+
+               TargetArchitecture ReadArchitecture ()
+               {
+                       var machine = ReadUInt16 ();
+                       switch (machine) {
+                       case 0x014c:
+                               return TargetArchitecture.I386;
+                       case 0x8664:
+                               return TargetArchitecture.AMD64;
+                       case 0x0200:
+                               return TargetArchitecture.IA64;
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               static ModuleKind GetModuleKind (ushort characteristics, ushort subsystem)
+               {
+                       if ((characteristics & 0x2000) != 0) // ImageCharacteristics.Dll
+                               return ModuleKind.Dll;
+
+                       if (subsystem == 0x2 || subsystem == 0x9) // SubSystem.WindowsGui || SubSystem.WindowsCeGui
+                               return ModuleKind.Windows;
+
+                       return ModuleKind.Console;
+               }
+
+               void ReadOptionalHeaders (out ushort subsystem)
+               {
+                       // - PEOptionalHeader
+                       //   - StandardFieldsHeader
+
+                       // Magic                                2
+                       bool pe64 = ReadUInt16 () == 0x20b;
+
+                       //                                              pe32 || pe64
+
+                       // LMajor                               1
+                       // LMinor                               1
+                       // CodeSize                             4
+                       // InitializedDataSize  4
+                       // UninitializedDataSize4
+                       // EntryPointRVA                4
+                       // BaseOfCode                   4
+                       // BaseOfData                   4 || 0
+
+                       //   - NTSpecificFieldsHeader
+
+                       // ImageBase                    4 || 8
+                       // SectionAlignment             4
+                       // FileAlignement               4
+                       // OSMajor                              2
+                       // OSMinor                              2
+                       // UserMajor                    2
+                       // UserMinor                    2
+                       // SubSysMajor                  2
+                       // SubSysMinor                  2
+                       // Reserved                             4
+                       // ImageSize                    4
+                       // HeaderSize                   4
+                       // FileChecksum                 4
+                       Advance (66);
+
+                       // SubSystem                    2
+                       subsystem = ReadUInt16 ();
+
+                       // DLLFlags                             2
+                       // StackReserveSize             4 || 8
+                       // StackCommitSize              4 || 8
+                       // HeapReserveSize              4 || 8
+                       // HeapCommitSize               4 || 8
+                       // LoaderFlags                  4
+                       // NumberOfDataDir              4
+
+                       //   - DataDirectoriesHeader
+
+                       // ExportTable                  8
+                       // ImportTable                  8
+                       // ResourceTable                8
+                       // ExceptionTable               8
+                       // CertificateTable             8
+                       // BaseRelocationTable  8
+
+                       Advance (pe64 ? 90 : 74);
+
+                       // Debug                                8
+                       image.Debug = ReadDataDirectory ();
+
+                       // Copyright                    8
+                       // GlobalPtr                    8
+                       // TLSTable                             8
+                       // LoadConfigTable              8
+                       // BoundImport                  8
+                       // IAT                                  8
+                       // DelayImportDescriptor8
+                       Advance (56);
+
+                       // CLIHeader                    8
+                       cli = ReadDataDirectory ();
+
+                       if (cli.IsZero)
+                               throw new BadImageFormatException ();
+
+                       // Reserved                             8
+                       Advance (8);
+               }
+
+               string ReadAlignedString (int length)
+               {
+                       int read = 0;
+                       var buffer = new char [length];
+                       while (read < length) {
+                               var current = ReadByte ();
+                               if (current == 0)
+                                       break;
+
+                               buffer [read++] = (char) current;
+                       }
+
+                       Advance (-1 + ((read + 4) & ~3) - read);
+
+                       return new string (buffer, 0, read);
+               }
+
+               string ReadZeroTerminatedString (int length)
+               {
+                       int read = 0;
+                       var buffer = new char [length];
+                       var bytes = ReadBytes (length);
+                       while (read < length) {
+                               var current = bytes [read];
+                               if (current == 0)
+                                       break;
+
+                               buffer [read++] = (char) current;
+                       }
+
+                       return new string (buffer, 0, read);
+               }
+
+               void ReadSections (ushort count)
+               {
+                       var sections = new Section [count];
+
+                       for (int i = 0; i < count; i++) {
+                               var section = new Section ();
+
+                               // Name
+                               section.Name = ReadZeroTerminatedString (8);
+
+                               // VirtualSize          4
+                               Advance (4);
+
+                               // VirtualAddress       4
+                               section.VirtualAddress = ReadUInt32 ();
+                               // SizeOfRawData        4
+                               section.SizeOfRawData = ReadUInt32 ();
+                               // PointerToRawData     4
+                               section.PointerToRawData = ReadUInt32 ();
+
+                               // PointerToRelocations         4
+                               // PointerToLineNumbers         4
+                               // NumberOfRelocations          2
+                               // NumberOfLineNumbers          2
+                               // Characteristics                      4
+                               Advance (16);
+
+                               sections [i] = section;
+
+                               if (section.Name == ".reloc")
+                                       continue;
+
+                               ReadSectionData (section);
+                       }
+
+                       image.Sections = sections;
+               }
+
+               void ReadSectionData (Section section)
+               {
+                       var position = BaseStream.Position;
+
+                       MoveTo (section.PointerToRawData);
+
+                       var length = (int) section.SizeOfRawData;
+                       var data = new byte [length];
+                       int offset = 0, read;
+
+                       while ((read = Read (data, offset, length - offset)) > 0)
+                               offset += read;
+
+                       section.Data = data;
+
+                       BaseStream.Position = position;
+               }
+
+               void ReadCLIHeader ()
+               {
+                       MoveTo (cli);
+
+                       // - CLIHeader
+
+                       // Cb                                           4
+                       // MajorRuntimeVersion          2
+                       // MinorRuntimeVersion          2
+                       Advance (8);
+
+                       // Metadata                                     8
+                       metadata = ReadDataDirectory ();
+                       // Flags                                        4
+                       image.Attributes = (ModuleAttributes) ReadUInt32 ();
+                       // EntryPointToken                      4
+                       image.EntryPointToken = ReadUInt32 ();
+                       // Resources                            8
+                       image.Resources = ReadDataDirectory ();
+                       // StrongNameSignature          8
+                       // CodeManagerTable                     8
+                       // VTableFixups                         8
+                       // ExportAddressTableJumps      8
+                       // ManagedNativeHeader          8
+               }
+
+               void ReadMetadata ()
+               {
+                       MoveTo (metadata);
+
+                       if (ReadUInt32 () != 0x424a5342)
+                               throw new BadImageFormatException ();
+
+                       // MajorVersion                 2
+                       // MinorVersion                 2
+                       // Reserved                             4
+                       Advance (8);
+
+                       var version = ReadZeroTerminatedString (ReadInt32 ());
+                       image.Runtime = version.ParseRuntime ();
+
+                       // Flags                2
+                       Advance (2);
+
+                       var streams = ReadUInt16 ();
+
+                       var section = image.GetSectionAtVirtualAddress (metadata.VirtualAddress);
+                       if (section == null)
+                               throw new BadImageFormatException ();
+
+                       image.MetadataSection = section;
+
+                       for (int i = 0; i < streams; i++)
+                               ReadMetadataStream (section);
+
+                       if (image.TableHeap != null)
+                               ReadTableHeap ();
+               }
+
+               void ReadMetadataStream (Section section)
+               {
+                       // Offset               4
+                       uint start = metadata.VirtualAddress - section.VirtualAddress + ReadUInt32 (); // relative to the section start
+
+                       // Size                 4
+                       uint size = ReadUInt32 ();
+
+                       var name = ReadAlignedString (16);
+                       switch (name) {
+                       case "#~":
+                       case "#-":
+                               image.TableHeap = new TableHeap (section, start, size);
+                               break;
+                       case "#Strings":
+                               image.StringHeap = new StringHeap (section, start, size);
+                               break;
+                       case "#Blob":
+                               image.BlobHeap = new BlobHeap (section, start, size);
+                               break;
+                       case "#GUID":
+                               image.GuidHeap = new GuidHeap (section, start, size);
+                               break;
+                       case "#US":
+                               image.UserStringHeap = new UserStringHeap (section, start, size);
+                               break;
+                       }
+               }
+
+               void ReadTableHeap ()
+               {
+                       var heap = image.TableHeap;
+
+                       uint start = heap.Section.PointerToRawData;
+
+                       MoveTo (heap.Offset + start);
+
+                       // Reserved                     4
+                       // MajorVersion         1
+                       // MinorVersion         1
+                       Advance (6);
+
+                       // HeapSizes            1
+                       var sizes = ReadByte ();
+
+                       // Reserved2            1
+                       Advance (1);
+
+                       // Valid                        8
+                       heap.Valid = ReadInt64 ();
+
+                       // Sorted                       8
+                       heap.Sorted = ReadInt64 ();
+
+                       for (int i = 0; i < TableHeap.TableIdentifiers.Length; i++) {
+                               var table = TableHeap.TableIdentifiers [i];
+                               if (!heap.HasTable (table))
+                                       continue;
+
+                               heap.Tables [(int) table].Length = ReadUInt32 ();
+                       }
+
+                       SetIndexSize (image.StringHeap, sizes, 0x1);
+                       SetIndexSize (image.GuidHeap, sizes, 0x2);
+                       SetIndexSize (image.BlobHeap, sizes, 0x4);
+
+                       ComputeTableInformations ();
+               }
+
+               static void SetIndexSize (Heap heap, uint sizes, byte flag)
+               {
+                       if (heap == null)
+                               return;
+
+                       heap.IndexSize = (sizes & flag) > 0 ? 4 : 2;
+               }
+
+               int GetTableIndexSize (Table table)
+               {
+                       return image.GetTableIndexSize (table);
+               }
+
+               int GetCodedIndexSize (CodedIndex index)
+               {
+                       return image.GetCodedIndexSize (index);
+               }
+
+               void ComputeTableInformations ()
+               {
+                       uint offset = (uint) BaseStream.Position - image.MetadataSection.PointerToRawData; // header
+
+                       int stridx_size = image.StringHeap.IndexSize;
+                       int blobidx_size = image.BlobHeap != null ? image.BlobHeap.IndexSize : 2;
+
+                       var heap = image.TableHeap;
+                       var tables = heap.Tables;
+
+                       for (int i = 0; i < TableHeap.TableIdentifiers.Length; i++) {
+                               var table = TableHeap.TableIdentifiers [i];
+                               if (!heap.HasTable (table))
+                                       continue;
+
+                               int size;
+                               switch (table) {
+                               case Table.Module:
+                                       size = 2        // Generation
+                                               + stridx_size   // Name
+                                               + (image.GuidHeap.IndexSize * 3);       // Mvid, EncId, EncBaseId
+                                       break;
+                               case Table.TypeRef:
+                                       size = GetCodedIndexSize (CodedIndex.ResolutionScope)   // ResolutionScope
+                                               + (stridx_size * 2);    // Name, Namespace
+                                       break;
+                               case Table.TypeDef:
+                                       size = 4        // Flags
+                                               + (stridx_size * 2)     // Name, Namespace
+                                               + GetCodedIndexSize (CodedIndex.TypeDefOrRef)   // BaseType
+                                               + GetTableIndexSize (Table.Field)       // FieldList
+                                               + GetTableIndexSize (Table.Method);     // MethodList
+                                       break;
+                               case Table.FieldPtr:
+                                       size = GetTableIndexSize (Table.Field); // Field
+                                       break;
+                               case Table.Field:
+                                       size = 2        // Flags
+                                               + stridx_size   // Name
+                                               + blobidx_size; // Signature
+                                       break;
+                               case Table.MethodPtr:
+                                       size = GetTableIndexSize (Table.Method);        // Method
+                                       break;
+                               case Table.Method:
+                                       size = 8        // Rva 4, ImplFlags 2, Flags 2
+                                               + stridx_size   // Name
+                                               + blobidx_size  // Signature
+                                               + GetTableIndexSize (Table.Param); // ParamList
+                                       break;
+                               case Table.ParamPtr:
+                                       size = GetTableIndexSize (Table.Param); // Param
+                                       break;
+                               case Table.Param:
+                                       size = 4        // Flags 2, Sequence 2
+                                               + stridx_size;  // Name
+                                       break;
+                               case Table.InterfaceImpl:
+                                       size = GetTableIndexSize (Table.TypeDef)        // Class
+                                               + GetCodedIndexSize (CodedIndex.TypeDefOrRef);  // Interface
+                                       break;
+                               case Table.MemberRef:
+                                       size = GetCodedIndexSize (CodedIndex.MemberRefParent)   // Class
+                                               + stridx_size   // Name
+                                               + blobidx_size; // Signature
+                                       break;
+                               case Table.Constant:
+                                       size = 2        // Type
+                                               + GetCodedIndexSize (CodedIndex.HasConstant)    // Parent
+                                               + blobidx_size; // Value
+                                       break;
+                               case Table.CustomAttribute:
+                                       size = GetCodedIndexSize (CodedIndex.HasCustomAttribute)        // Parent
+                                               + GetCodedIndexSize (CodedIndex.CustomAttributeType)    // Type
+                                               + blobidx_size; // Value
+                                       break;
+                               case Table.FieldMarshal:
+                                       size = GetCodedIndexSize (CodedIndex.HasFieldMarshal)   // Parent
+                                               + blobidx_size; // NativeType
+                                       break;
+                               case Table.DeclSecurity:
+                                       size = 2        // Action
+                                               + GetCodedIndexSize (CodedIndex.HasDeclSecurity)        // Parent
+                                               + blobidx_size; // PermissionSet
+                                       break;
+                               case Table.ClassLayout:
+                                       size = 6        // PackingSize 2, ClassSize 4
+                                               + GetTableIndexSize (Table.TypeDef);    // Parent
+                                       break;
+                               case Table.FieldLayout:
+                                       size = 4        // Offset
+                                               + GetTableIndexSize (Table.Field);      // Field
+                                       break;
+                               case Table.StandAloneSig:
+                                       size = blobidx_size;    // Signature
+                                       break;
+                               case Table.EventMap:
+                                       size = GetTableIndexSize (Table.TypeDef)        // Parent
+                                               + GetTableIndexSize (Table.Event);      // EventList
+                                       break;
+                               case Table.EventPtr:
+                                       size = GetTableIndexSize (Table.Event); // Event
+                                       break;
+                               case Table.Event:
+                                       size = 2        // Flags
+                                               + stridx_size // Name
+                                               + GetCodedIndexSize (CodedIndex.TypeDefOrRef);  // EventType
+                                       break;
+                               case Table.PropertyMap:
+                                       size = GetTableIndexSize (Table.TypeDef)        // Parent
+                                               + GetTableIndexSize (Table.Property);   // PropertyList
+                                       break;
+                               case Table.PropertyPtr:
+                                       size = GetTableIndexSize (Table.Property);      // Property
+                                       break;
+                               case Table.Property:
+                                       size = 2        // Flags
+                                               + stridx_size   // Name
+                                               + blobidx_size; // Type
+                                       break;
+                               case Table.MethodSemantics:
+                                       size = 2        // Semantics
+                                               + GetTableIndexSize (Table.Method)      // Method
+                                               + GetCodedIndexSize (CodedIndex.HasSemantics);  // Association
+                                       break;
+                               case Table.MethodImpl:
+                                       size = GetTableIndexSize (Table.TypeDef)        // Class
+                                               + GetCodedIndexSize (CodedIndex.MethodDefOrRef) // MethodBody
+                                               + GetCodedIndexSize (CodedIndex.MethodDefOrRef);        // MethodDeclaration
+                                       break;
+                               case Table.ModuleRef:
+                                       size = stridx_size;     // Name
+                                       break;
+                               case Table.TypeSpec:
+                                       size = blobidx_size;    // Signature
+                                       break;
+                               case Table.ImplMap:
+                                       size = 2        // MappingFlags
+                                               + GetCodedIndexSize (CodedIndex.MemberForwarded)        // MemberForwarded
+                                               + stridx_size   // ImportName
+                                               + GetTableIndexSize (Table.ModuleRef);  // ImportScope
+                                       break;
+                               case Table.FieldRVA:
+                                       size = 4        // RVA
+                                               + GetTableIndexSize (Table.Field);      // Field
+                                       break;
+                               case Table.Assembly:
+                                       size = 16 // HashAlgId 4, Version 4 * 2, Flags 4
+                                               + blobidx_size  // PublicKey
+                                               + (stridx_size * 2);    // Name, Culture
+                                       break;
+                               case Table.AssemblyProcessor:
+                                       size = 4;       // Processor
+                                       break;
+                               case Table.AssemblyOS:
+                                       size = 12;      // Platform 4, Version 2 * 4
+                                       break;
+                               case Table.AssemblyRef:
+                                       size = 12       // Version 2 * 4 + Flags 4
+                                               + (blobidx_size * 2)    // PublicKeyOrToken, HashValue
+                                               + (stridx_size * 2);    // Name, Culture
+                                       break;
+                               case Table.AssemblyRefProcessor:
+                                       size = 4        // Processor
+                                               + GetTableIndexSize (Table.AssemblyRef);        // AssemblyRef
+                                       break;
+                               case Table.AssemblyRefOS:
+                                       size = 12       // Platform 4, Version 2 * 4
+                                               + GetTableIndexSize (Table.AssemblyRef);        // AssemblyRef
+                                       break;
+                               case Table.File:
+                                       size = 4        // Flags
+                                               + stridx_size   // Name
+                                               + blobidx_size; // HashValue
+                                       break;
+                               case Table.ExportedType:
+                                       size = 8        // Flags 4, TypeDefId 4
+                                               + (stridx_size * 2)     // Name, Namespace
+                                               + GetCodedIndexSize (CodedIndex.Implementation);        // Implementation
+                                       break;
+                               case Table.ManifestResource:
+                                       size = 8        // Offset, Flags
+                                               + stridx_size   // Name
+                                               + GetCodedIndexSize (CodedIndex.Implementation);        // Implementation
+                                       break;
+                               case Table.NestedClass:
+                                       size = GetTableIndexSize (Table.TypeDef)        // NestedClass
+                                               + GetTableIndexSize (Table.TypeDef);    // EnclosingClass
+                                       break;
+                               case Table.GenericParam:
+                                       size = 4        // Number, Flags
+                                               + GetCodedIndexSize (CodedIndex.TypeOrMethodDef)        // Owner
+                                               + stridx_size;  // Name
+                                       break;
+                               case Table.MethodSpec:
+                                       size = GetCodedIndexSize (CodedIndex.MethodDefOrRef)    // Method
+                                               + blobidx_size; // Instantiation
+                                       break;
+                               case Table.GenericParamConstraint:
+                                       size = GetTableIndexSize (Table.GenericParam)   // Owner
+                                               + GetCodedIndexSize (CodedIndex.TypeDefOrRef);  // Constraint
+                                       break;
+                               default:
+                                       throw new NotSupportedException ();
+                               }
+
+                               int index = (int) table;
+
+                               tables [index].RowSize = (uint) size;
+                               tables [index].Offset = offset;
+
+                               offset += (uint) size * tables [index].Length;
+                       }
+               }
+
+               public static Image ReadImageFrom (Stream stream)
+               {
+                       try {
+                               var reader = new ImageReader (stream);
+                               reader.ReadImage ();
+                               return reader.image;
+                       } catch (EndOfStreamException e) {
+                               throw new BadImageFormatException (stream.GetFullyQualifiedName (), e);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs
new file mode 100644 (file)
index 0000000..939de6b
--- /dev/null
@@ -0,0 +1,820 @@
+//
+// ImageWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+#if !READ_ONLY
+
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       sealed class ImageWriter : BinaryStreamWriter {
+
+               readonly ModuleDefinition module;
+               readonly MetadataBuilder metadata;
+               readonly TextMap text_map;
+
+               ImageDebugDirectory debug_directory;
+               byte [] debug_data;
+
+               ByteBuffer win32_resources;
+
+               const uint pe_header_size = 0x178u;
+               const uint section_header_size = 0x28u;
+               const uint file_alignment = 0x200;
+               const uint section_alignment = 0x2000;
+               const ulong image_base = 0x00400000;
+
+               internal const RVA text_rva = 0x2000;
+
+               readonly bool pe64;
+               readonly uint time_stamp;
+
+               internal Section text;
+               internal Section rsrc;
+               internal Section reloc;
+
+               ushort sections;
+
+               ImageWriter (ModuleDefinition module, MetadataBuilder metadata, Stream stream)
+                       : base (stream)
+               {
+                       this.module = module;
+                       this.metadata = metadata;
+                       this.GetDebugHeader ();
+                       this.GetWin32Resources ();
+                       this.text_map = BuildTextMap ();
+                       this.sections = 2; // text + reloc
+                       this.pe64 = module.Architecture != TargetArchitecture.I386;
+                       this.time_stamp = (uint) DateTime.UtcNow.Subtract (new DateTime (1970, 1, 1)).TotalSeconds;
+               }
+
+               void GetDebugHeader ()
+               {
+                       var symbol_writer = metadata.symbol_writer;
+                       if (symbol_writer == null)
+                               return;
+
+                       if (!symbol_writer.GetDebugHeader (out debug_directory, out debug_data))
+                               debug_data = Empty<byte>.Array;
+               }
+
+               void GetWin32Resources ()
+               {
+                       var rsrc = GetImageResourceSection ();
+                       if (rsrc == null)
+                               return;
+
+                       var raw_resources = new byte [rsrc.Data.Length];
+                       Buffer.BlockCopy (rsrc.Data, 0, raw_resources, 0, rsrc.Data.Length);
+                       win32_resources = new ByteBuffer (raw_resources);
+               }
+
+               Section GetImageResourceSection ()
+               {
+                       if (!module.HasImage)
+                               return null;
+
+                       const string rsrc_section = ".rsrc";
+
+                       return module.Image.GetSection (rsrc_section);
+               }
+
+               public static ImageWriter CreateWriter (ModuleDefinition module, MetadataBuilder metadata, Stream stream)
+               {
+                       var writer = new ImageWriter (module, metadata, stream);
+                       writer.BuildSections ();
+                       return writer;
+               }
+
+               void BuildSections ()
+               {
+                       var has_win32_resources = win32_resources != null;
+                       if (has_win32_resources)
+                               sections++;
+
+                       text = CreateSection (".text", text_map.GetLength (), null);
+                       var previous = text;
+
+                       if (has_win32_resources) {
+                               rsrc = CreateSection (".rsrc", (uint) win32_resources.length, previous);
+
+                               PatchWin32Resources (win32_resources);
+                               previous = rsrc;
+                       }
+
+                       reloc = CreateSection (".reloc", 12u, previous);
+               }
+
+               Section CreateSection (string name, uint size, Section previous)
+               {
+                       return new Section {
+                               Name = name,
+                               VirtualAddress = previous != null
+                                       ? previous.VirtualAddress + Align (previous.VirtualSize, section_alignment)
+                                       : text_rva,
+                               VirtualSize = size,
+                               PointerToRawData = previous != null
+                                       ? previous.PointerToRawData + previous.SizeOfRawData
+                                       : Align (GetHeaderSize (), file_alignment),
+                               SizeOfRawData = Align (size, file_alignment)
+                       };
+               }
+
+               static uint Align (uint value, uint align)
+               {
+                       align--;
+                       return (value + align) & ~align;
+               }
+
+               void WriteDOSHeader ()
+               {
+                       Write (new byte [] {
+                               // dos header start
+                               0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
+                               0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
+                               0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00,
+                               // lfanew
+                               0x80, 0x00, 0x00, 0x00,
+                               // dos header end
+                               0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
+                               0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
+                               0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
+                               0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
+                               0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
+                               0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
+                               0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
+                               0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
+                               0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00
+                       });
+               }
+
+               void WritePEFileHeader ()
+               {
+                       WriteUInt32 (0x00004550);               // Magic
+                       WriteUInt16 (GetMachine ());    // Machine
+                       WriteUInt16 (sections);                 // NumberOfSections
+                       WriteUInt32 (time_stamp);
+                       WriteUInt32 (0);        // PointerToSymbolTable
+                       WriteUInt32 (0);        // NumberOfSymbols
+                       WriteUInt16 ((ushort) (!pe64 ? 0xe0 : 0xf0));   // SizeOfOptionalHeader
+
+                       // ExecutableImage | (pe64 ? 32BitsMachine : LargeAddressAware)
+                       var characteristics = (ushort) (0x0002 | (!pe64 ? 0x0100 : 0x0020));
+                       if (module.Kind == ModuleKind.Dll || module.Kind == ModuleKind.NetModule)
+                               characteristics |= 0x2000;
+                       WriteUInt16 (characteristics);  // Characteristics
+               }
+
+               ushort GetMachine ()
+               {
+                       switch (module.Architecture) {
+                       case TargetArchitecture.I386:
+                               return 0x014c;
+                       case TargetArchitecture.AMD64:
+                               return 0x8664;
+                       case TargetArchitecture.IA64:
+                               return 0x0200;
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               void WriteOptionalHeaders ()
+               {
+                       WriteUInt16 ((ushort) (!pe64 ? 0x10b : 0x20b)); // Magic
+                       WriteByte (8);  // LMajor
+                       WriteByte (0);  // LMinor
+                       WriteUInt32 (text.SizeOfRawData);       // CodeSize
+                       WriteUInt32 (reloc.SizeOfRawData
+                               + (rsrc != null ? rsrc.SizeOfRawData : 0));     // InitializedDataSize
+                       WriteUInt32 (0);        // UninitializedDataSize
+
+                       var entry_point_rva = text_map.GetRVA (TextSegment.StartupStub);
+                       if (module.Architecture == TargetArchitecture.IA64)
+                               entry_point_rva += 0x20;
+                       WriteUInt32 (entry_point_rva); // EntryPointRVA
+                       WriteUInt32 (text_rva); // BaseOfCode
+
+                       if (!pe64) {
+                               WriteUInt32 (0);        // BaseOfData
+                               WriteUInt32 ((uint) image_base);        // ImageBase
+                       } else {
+                               WriteUInt64 (image_base);       // ImageBase
+                       }
+
+                       WriteUInt32 (section_alignment);        // SectionAlignment
+                       WriteUInt32 (file_alignment);           // FileAlignment
+
+                       WriteUInt16 (4);        // OSMajor
+                       WriteUInt16 (0);        // OSMinor
+                       WriteUInt16 (0);        // UserMajor
+                       WriteUInt16 (0);        // UserMinor
+                       WriteUInt16 (4);        // SubSysMajor
+                       WriteUInt16 (0);        // SubSysMinor
+                       WriteUInt32 (0);        // Reserved
+
+                       WriteUInt32 (reloc.VirtualAddress + Align (reloc.VirtualSize, section_alignment));      // ImageSize
+                       WriteUInt32 (text.PointerToRawData);    // HeaderSize
+
+                       WriteUInt32 (0);        // Checksum
+                       WriteUInt16 (GetSubSystem ());  // SubSystem
+                       WriteUInt16 (0x8540);   // DLLFlags
+
+                       const ulong stack_reserve = 0x100000;
+                       const ulong stack_commit = 0x1000;
+                       const ulong heap_reserve = 0x100000;
+                       const ulong heap_commit = 0x1000;
+
+                       if (!pe64) {
+                               WriteUInt32 ((uint) stack_reserve);
+                               WriteUInt32 ((uint) stack_commit);
+                               WriteUInt32 ((uint) heap_reserve);
+                               WriteUInt32 ((uint) heap_commit);
+                       } else {
+                               WriteUInt64 (stack_reserve);
+                               WriteUInt64 (stack_commit);
+                               WriteUInt64 (heap_reserve);
+                               WriteUInt64 (heap_commit);
+                       }
+
+                       WriteUInt32 (0);        // LoaderFlags
+                       WriteUInt32 (16);       // NumberOfDataDir
+
+                       WriteZeroDataDirectory ();      // ExportTable
+                       WriteDataDirectory (text_map.GetDataDirectory (TextSegment.ImportDirectory));   // ImportTable
+                       if (rsrc != null) {                                                     // ResourceTable
+                               WriteUInt32 (rsrc.VirtualAddress);
+                               WriteUInt32 (rsrc.VirtualSize);
+                       } else
+                               WriteZeroDataDirectory ();
+
+                       WriteZeroDataDirectory ();      // ExceptionTable
+                       WriteZeroDataDirectory ();      // CertificateTable
+                       WriteUInt32 (reloc.VirtualAddress);                     // BaseRelocationTable
+                       WriteUInt32 (reloc.VirtualSize);
+
+                       if (text_map.GetLength (TextSegment.DebugDirectory) > 0) {
+                               WriteUInt32 (text_map.GetRVA (TextSegment.DebugDirectory));
+                               WriteUInt32 (28u);
+                       } else
+                               WriteZeroDataDirectory ();
+
+                       WriteZeroDataDirectory ();      // Copyright
+                       WriteZeroDataDirectory ();      // GlobalPtr
+                       WriteZeroDataDirectory ();      // TLSTable
+                       WriteZeroDataDirectory ();      // LoadConfigTable
+                       WriteZeroDataDirectory ();      // BoundImport
+                       WriteDataDirectory (text_map.GetDataDirectory (TextSegment.ImportAddressTable));        // IAT
+                       WriteZeroDataDirectory ();      // DelayImportDesc
+                       WriteDataDirectory (text_map.GetDataDirectory (TextSegment.CLIHeader)); // CLIHeader
+                       WriteZeroDataDirectory ();      // Reserved
+               }
+
+               void WriteZeroDataDirectory ()
+               {
+                       WriteUInt32 (0);
+                       WriteUInt32 (0);
+               }
+
+               ushort GetSubSystem ()
+               {
+                       switch (module.Kind) {
+                       case ModuleKind.Console:
+                       case ModuleKind.Dll:
+                       case ModuleKind.NetModule:
+                               return 0x3;
+                       case ModuleKind.Windows:
+                               return 0x2;
+                       default:
+                               throw new ArgumentOutOfRangeException ();
+                       }
+               }
+
+               void WriteSectionHeaders ()
+               {
+                       WriteSection (text, 0x60000020);
+
+                       if (rsrc != null)
+                               WriteSection (rsrc, 0x40000040);
+
+                       WriteSection (reloc, 0x42000040);
+               }
+
+               void WriteSection (Section section, uint characteristics)
+               {
+                       var name = new byte [8];
+                       var sect_name = section.Name;
+                       for (int i = 0; i < sect_name.Length; i++)
+                               name [i] = (byte) sect_name [i];
+
+                       WriteBytes (name);
+                       WriteUInt32 (section.VirtualSize);
+                       WriteUInt32 (section.VirtualAddress);
+                       WriteUInt32 (section.SizeOfRawData);
+                       WriteUInt32 (section.PointerToRawData);
+                       WriteUInt32 (0);        // PointerToRelocations
+                       WriteUInt32 (0);        // PointerToLineNumbers
+                       WriteUInt16 (0);        // NumberOfRelocations
+                       WriteUInt16 (0);        // NumberOfLineNumbers
+                       WriteUInt32 (characteristics);
+               }
+
+               void MoveTo (uint pointer)
+               {
+                       BaseStream.Seek (pointer, SeekOrigin.Begin);
+               }
+
+               void MoveToRVA (Section section, RVA rva)
+               {
+                       BaseStream.Seek (section.PointerToRawData + rva - section.VirtualAddress, SeekOrigin.Begin);
+               }
+
+               void MoveToRVA (TextSegment segment)
+               {
+                       MoveToRVA (text, text_map.GetRVA (segment));
+               }
+
+               void WriteRVA (RVA rva)
+               {
+                       if (!pe64)
+                               WriteUInt32 (rva);
+                       else
+                               WriteUInt64 (rva);
+               }
+
+               void WriteText ()
+               {
+                       MoveTo (text.PointerToRawData);
+
+                       // ImportAddressTable
+
+                       WriteRVA (text_map.GetRVA (TextSegment.ImportHintNameTable));
+                       WriteRVA (0);
+
+                       // CLIHeader
+
+                       WriteUInt32 (0x48);
+                       WriteUInt16 (2);
+                       WriteUInt16 ((ushort) ((module.Runtime <= TargetRuntime.Net_1_1) ? 0 : 5));
+
+                       WriteUInt32 (text_map.GetRVA (TextSegment.MetadataHeader));
+                       WriteUInt32 (GetMetadataLength ());
+                       WriteUInt32 ((uint) module.Attributes);
+                       WriteUInt32 (metadata.entry_point.ToUInt32 ());
+                       WriteDataDirectory (text_map.GetDataDirectory (TextSegment.Resources));
+                       WriteDataDirectory (text_map.GetDataDirectory (TextSegment.StrongNameSignature));
+                       WriteZeroDataDirectory ();      // CodeManagerTable
+                       WriteZeroDataDirectory ();      // VTableFixups
+                       WriteZeroDataDirectory ();      // ExportAddressTableJumps
+                       WriteZeroDataDirectory ();      // ManagedNativeHeader
+
+                       // Code
+
+                       MoveToRVA (TextSegment.Code);
+                       WriteBuffer (metadata.code);
+
+                       // Resources
+
+                       MoveToRVA (TextSegment.Resources);
+                       WriteBuffer (metadata.resources);
+
+                       // Data
+
+                       if (metadata.data.length > 0) {
+                               MoveToRVA (TextSegment.Data);
+                               WriteBuffer (metadata.data);
+                       }
+
+                       // StrongNameSignature
+                       // stays blank
+
+                       // MetadataHeader
+
+                       MoveToRVA (TextSegment.MetadataHeader);
+                       WriteMetadataHeader ();
+
+                       WriteMetadata ();
+
+                       // DebugDirectory
+                       if (text_map.GetLength (TextSegment.DebugDirectory) > 0) {
+                               MoveToRVA (TextSegment.DebugDirectory);
+                               WriteDebugDirectory ();
+                       }
+
+                       // ImportDirectory
+                       MoveToRVA (TextSegment.ImportDirectory);
+                       WriteImportDirectory ();
+
+                       // StartupStub
+                       MoveToRVA (TextSegment.StartupStub);
+                       WriteStartupStub ();
+               }
+
+               uint GetMetadataLength ()
+               {
+                       return text_map.GetRVA (TextSegment.DebugDirectory) - text_map.GetRVA (TextSegment.MetadataHeader);
+               }
+
+               void WriteMetadataHeader ()
+               {
+                       WriteUInt32 (0x424a5342);       // Signature
+                       WriteUInt16 (1);        // MajorVersion
+                       WriteUInt16 (1);        // MinorVersion
+                       WriteUInt32 (0);        // Reserved
+
+                       var version = GetZeroTerminatedString (GetVersion ());
+                       WriteUInt32 ((uint) version.Length);
+                       WriteBytes (version);
+                       WriteUInt16 (0);        // Flags
+                       WriteUInt16 (GetStreamCount ());
+
+                       uint offset = text_map.GetRVA (TextSegment.TableHeap) - text_map.GetRVA (TextSegment.MetadataHeader);
+
+                       WriteStreamHeader (ref offset, TextSegment.TableHeap, "#~");
+                       WriteStreamHeader (ref offset, TextSegment.StringHeap, "#Strings");
+                       WriteStreamHeader (ref offset, TextSegment.UserStringHeap, "#US");
+                       WriteStreamHeader (ref offset, TextSegment.GuidHeap, "#GUID");
+                       WriteStreamHeader (ref offset, TextSegment.BlobHeap, "#Blob");
+               }
+
+               string GetVersion ()
+               {
+                       switch (module.Runtime) {
+                       case TargetRuntime.Net_1_0:
+                               return "v1.0.3705";
+                       case TargetRuntime.Net_1_1:
+                               return "v1.1.4322";
+                       case TargetRuntime.Net_2_0:
+                               return "v2.0.50727";
+                       case TargetRuntime.Net_4_0:
+                       default:
+                               return "v4.0.30319";
+                       }
+               }
+
+               ushort GetStreamCount ()
+               {
+                       return (ushort) (
+                               1       // #~
+                               + 1     // #Strings
+                               + (metadata.user_string_heap.IsEmpty ? 0 : 1)   // #US
+                               + 1     // GUID
+                               + (metadata.blob_heap.IsEmpty ? 0 : 1));        // #Blob
+               }
+
+               void WriteStreamHeader (ref uint offset, TextSegment heap, string name)
+               {
+                       var length = (uint) text_map.GetLength (heap);
+                       if (length == 0)
+                               return;
+
+                       WriteUInt32 (offset);
+                       WriteUInt32 (length);
+                       WriteBytes (GetZeroTerminatedString (name));
+                       offset += length;
+               }
+
+               static byte [] GetZeroTerminatedString (string @string)
+               {
+                       return GetString (@string, (@string.Length + 1 + 3) & ~3);
+               }
+
+               static byte [] GetSimpleString (string @string)
+               {
+                       return GetString (@string, @string.Length);
+               }
+
+               static byte [] GetString (string @string, int length)
+               {
+                       var bytes = new byte [length];
+                       for (int i = 0; i < @string.Length; i++)
+                               bytes [i] = (byte) @string [i];
+
+                       return bytes;
+               }
+
+               void WriteMetadata ()
+               {
+                       WriteHeap (TextSegment.TableHeap, metadata.table_heap);
+                       WriteHeap (TextSegment.StringHeap, metadata.string_heap);
+                       WriteHeap (TextSegment.UserStringHeap, metadata.user_string_heap);
+                       WriteGuidHeap ();
+                       WriteHeap (TextSegment.BlobHeap, metadata.blob_heap);
+               }
+
+               void WriteHeap (TextSegment heap, HeapBuffer buffer)
+               {
+                       if (buffer.IsEmpty)
+                               return;
+
+                       MoveToRVA (heap);
+                       WriteBuffer (buffer);
+               }
+
+               void WriteGuidHeap ()
+               {
+                       MoveToRVA (TextSegment.GuidHeap);
+                       WriteBytes (module.Mvid.ToByteArray ());
+               }
+
+               void WriteDebugDirectory ()
+               {
+                       WriteInt32 (debug_directory.Characteristics);
+                       WriteUInt32 (time_stamp);
+                       WriteInt16 (debug_directory.MajorVersion);
+                       WriteInt16 (debug_directory.MinorVersion);
+                       WriteInt32 (debug_directory.Type);
+                       WriteInt32 (debug_directory.SizeOfData);
+                       WriteInt32 (debug_directory.AddressOfRawData);
+                       WriteInt32 ((int) BaseStream.Position + 4);
+
+                       WriteBytes (debug_data);
+               }
+
+               void WriteImportDirectory ()
+               {
+                       WriteUInt32 (text_map.GetRVA (TextSegment.ImportDirectory) + 40);       // ImportLookupTable
+                       WriteUInt32 (0);        // DateTimeStamp
+                       WriteUInt32 (0);        // ForwarderChain
+                       WriteUInt32 (text_map.GetRVA (TextSegment.ImportHintNameTable) + 14);
+                       WriteUInt32 (text_map.GetRVA (TextSegment.ImportAddressTable));
+                       Advance (20);
+
+                       // ImportLookupTable
+                       WriteUInt32 (text_map.GetRVA (TextSegment.ImportHintNameTable));
+
+                       // ImportHintNameTable
+                       MoveToRVA (TextSegment.ImportHintNameTable);
+
+                       WriteUInt16 (0);        // Hint
+                       WriteBytes (GetRuntimeMain ());
+                       WriteByte (0);
+                       WriteBytes (GetSimpleString ("mscoree.dll"));
+                       WriteUInt16 (0);
+               }
+
+               byte [] GetRuntimeMain ()
+               {
+                       return module.Kind == ModuleKind.Dll || module.Kind == ModuleKind.NetModule
+                               ? GetSimpleString ("_CorDllMain")
+                               : GetSimpleString ("_CorExeMain");
+               }
+
+               void WriteStartupStub ()
+               {
+                       switch (module.Architecture) {
+                       case TargetArchitecture.I386:
+                               WriteUInt16 (0x25ff);
+                               WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.ImportAddressTable));
+                               return;
+                       case TargetArchitecture.AMD64:
+                               WriteUInt16 (0xa148);
+                               WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.ImportAddressTable));
+                               WriteUInt16 (0xe0ff);
+                               return;
+                       case TargetArchitecture.IA64:
+                               WriteBytes (new byte [] {
+                                       0x0b, 0x48, 0x00, 0x02, 0x18, 0x10, 0xa0, 0x40, 0x24, 0x30, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00,
+                                       0x10, 0x08, 0x00, 0x12, 0x18, 0x10, 0x60, 0x50, 0x04, 0x80, 0x03, 0x00, 0x60, 0x00, 0x80, 0x00
+                               });
+                               WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.StartupStub));
+                               WriteUInt32 ((uint) image_base + text_rva);
+                               return;
+                       }
+               }
+
+               void WriteRsrc ()
+               {
+                       MoveTo (rsrc.PointerToRawData);
+                       WriteBuffer (win32_resources);
+               }
+
+               void WriteReloc ()
+               {
+                       MoveTo (reloc.PointerToRawData);
+
+                       var reloc_rva = text_map.GetRVA (TextSegment.StartupStub);
+                       reloc_rva += module.Architecture == TargetArchitecture.IA64 ? 0x20u : 2;
+                       var page_rva = reloc_rva & ~0xfffu;
+
+                       WriteUInt32 (page_rva); // PageRVA
+                       WriteUInt32 (0x000c);   // Block Size
+
+                       switch (module.Architecture) {
+                       case TargetArchitecture.I386:
+                               WriteUInt32 (0x3000 + reloc_rva - page_rva);
+                               break;
+                       case TargetArchitecture.AMD64:
+                               WriteUInt32 (0xa000 + reloc_rva - page_rva);
+                               break;
+                       case TargetArchitecture.IA64:
+                               WriteUInt16 ((ushort) (0xa000 + reloc_rva - page_rva));
+                               WriteUInt16 ((ushort) (0xa000 + reloc_rva - page_rva + 8));
+                               break;
+                       }
+
+                       WriteBytes (new byte [file_alignment - reloc.VirtualSize]);
+               }
+
+               public void WriteImage ()
+               {
+                       WriteDOSHeader ();
+                       WritePEFileHeader ();
+                       WriteOptionalHeaders ();
+                       WriteSectionHeaders ();
+                       WriteText ();
+                       if (rsrc != null)
+                               WriteRsrc ();
+                       WriteReloc ();
+               }
+
+               TextMap BuildTextMap ()
+               {
+                       var map = metadata.text_map;
+
+                       map.AddMap (TextSegment.Code, metadata.code.length, !pe64 ? 4 : 16);
+                       map.AddMap (TextSegment.Resources, metadata.resources.length, 8);
+                       map.AddMap (TextSegment.Data, metadata.data.length, 4);
+                       if (metadata.data.length > 0)
+                               metadata.table_heap.FixupData (map.GetRVA (TextSegment.Data));
+                       map.AddMap (TextSegment.StrongNameSignature, GetStrongNameLength (), 4);
+
+                       map.AddMap (TextSegment.MetadataHeader, GetMetadataHeaderLength ());
+                       map.AddMap (TextSegment.TableHeap, metadata.table_heap.length, 4);
+                       map.AddMap (TextSegment.StringHeap, metadata.string_heap.length, 4);
+                       map.AddMap (TextSegment.UserStringHeap, metadata.user_string_heap.IsEmpty ? 0 : metadata.user_string_heap.length, 4);
+                       map.AddMap (TextSegment.GuidHeap, 16);
+                       map.AddMap (TextSegment.BlobHeap, metadata.blob_heap.IsEmpty ? 0 : metadata.blob_heap.length, 4);
+
+                       int debug_dir_len = 0;
+                       if (!debug_data.IsNullOrEmpty ()) {
+                               const int debug_dir_header_len = 28;
+
+                               debug_directory.AddressOfRawData = (int) map.GetNextRVA (TextSegment.BlobHeap) + debug_dir_header_len;
+                               debug_dir_len = debug_data.Length + debug_dir_header_len;
+                       }
+
+                       map.AddMap (TextSegment.DebugDirectory, debug_dir_len, 4);
+
+                       RVA import_dir_rva = map.GetNextRVA (TextSegment.DebugDirectory);
+                       RVA import_hnt_rva = import_dir_rva + (!pe64 ? 48u : 52u);
+                       import_hnt_rva = (import_hnt_rva + 15u) & ~15u;
+                       uint import_dir_len = (import_hnt_rva - import_dir_rva) + 27u;
+
+                       RVA startup_stub_rva = import_dir_rva + import_dir_len;
+                       startup_stub_rva = module.Architecture == TargetArchitecture.IA64
+                               ? (startup_stub_rva + 15u) & ~15u
+                               : 2 + ((startup_stub_rva + 3u) & ~3u);
+
+                       map.AddMap (TextSegment.ImportDirectory, new Range (import_dir_rva, import_dir_len));
+                       map.AddMap (TextSegment.ImportHintNameTable, new Range (import_hnt_rva, 0));
+                       map.AddMap (TextSegment.StartupStub, new Range (startup_stub_rva, GetStartupStubLength ()));
+
+                       return map;
+               }
+
+               uint GetStartupStubLength ()
+               {
+                       switch (module.Architecture) {
+                       case TargetArchitecture.I386:
+                               return 6;
+                       case TargetArchitecture.AMD64:
+                               return 12;
+                       case TargetArchitecture.IA64:
+                               return 48;
+                       default:
+                               throw new InvalidOperationException ();
+                       }
+               }
+
+               int GetMetadataHeaderLength ()
+               {
+                       return
+                               // MetadataHeader
+                               40
+                               // #~ header
+                               + 12
+                               // #Strings header
+                               + 20
+                               // #US header
+                               + (metadata.user_string_heap.IsEmpty ? 0 : 12)
+                               // #GUID header
+                               + 16
+                               // #Blob header
+                               + (metadata.blob_heap.IsEmpty ? 0 : 16);
+               }
+
+               int GetStrongNameLength ()
+               {
+                       if ((module.Attributes & ModuleAttributes.StrongNameSigned) == 0)
+                               return 0;
+
+                       if (module.Assembly == null)
+                               throw new InvalidOperationException ();
+
+                       var public_key = module.Assembly.Name.PublicKey;
+
+                       if (public_key != null) {
+                               // in fx 2.0 the key may be from 384 to 16384 bits
+                               // so we must calculate the signature size based on
+                               // the size of the public key (minus the 32 byte header)
+                               int size = public_key.Length;
+                               if (size > 32)
+                                       return size - 32;
+                               // note: size == 16 for the ECMA "key" which is replaced
+                               // by the runtime with a 1024 bits key (128 bytes)
+                       }
+
+                       return 128; // default strongname signature size
+               }
+
+               public DataDirectory GetStrongNameSignatureDirectory ()
+               {
+                       return text_map.GetDataDirectory (TextSegment.StrongNameSignature);
+               }
+
+               public uint GetHeaderSize ()
+               {
+                       return pe_header_size + (sections * section_header_size);
+               }
+
+               void PatchWin32Resources (ByteBuffer resources)
+               {
+                       PatchResourceDirectoryTable (resources);
+               }
+
+               void PatchResourceDirectoryTable (ByteBuffer resources)
+               {
+                       resources.Advance (12);
+
+                       var entries = resources.ReadUInt16 () + resources.ReadUInt16 ();
+
+                       for (int i = 0; i < entries; i++)
+                               PatchResourceDirectoryEntry (resources);
+               }
+
+               void PatchResourceDirectoryEntry (ByteBuffer resources)
+               {
+                       resources.Advance (4);
+                       var child = resources.ReadUInt32 ();
+
+                       var position = resources.position;
+                       resources.position = (int) child & 0x7fffffff;
+
+                       if ((child & 0x80000000) != 0)
+                               PatchResourceDirectoryTable (resources);
+                       else
+                               PatchResourceDataEntry (resources);
+
+                       resources.position = position;
+               }
+
+               void PatchResourceDataEntry (ByteBuffer resources)
+               {
+                       var old_rsrc = GetImageResourceSection ();
+                       var rva = resources.ReadUInt32 ();
+                       resources.position -= 4;
+                       resources.WriteUInt32 (rva - old_rsrc.VirtualAddress + rsrc.VirtualAddress);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs
new file mode 100644 (file)
index 0000000..54935f9
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// Section.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       sealed class Section {
+               public string Name;
+               public RVA VirtualAddress;
+               public uint VirtualSize;
+               public uint SizeOfRawData;
+               public uint PointerToRawData;
+               public byte [] Data;
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs
new file mode 100644 (file)
index 0000000..daeda0c
--- /dev/null
@@ -0,0 +1,129 @@
+//
+// TextMap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+#if !READ_ONLY
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+       enum TextSegment {
+               ImportAddressTable,
+               CLIHeader,
+               Code,
+               Resources,
+               Data,
+               StrongNameSignature,
+
+               // Metadata
+               MetadataHeader,
+               TableHeap,
+               StringHeap,
+               UserStringHeap,
+               GuidHeap,
+               BlobHeap,
+               // End Metadata
+
+               DebugDirectory,
+               ImportDirectory,
+               ImportHintNameTable,
+               StartupStub,
+       }
+
+       sealed class TextMap {
+
+               readonly Range [] map = new Range [16 /*Enum.GetValues (typeof (TextSegment)).Length*/];
+
+               public void AddMap (TextSegment segment, int length)
+               {
+                       map [(int) segment] = new Range (GetStart (segment), (uint) length);
+               }
+
+               public void AddMap (TextSegment segment, int length, int align)
+               {
+                       align--;
+
+                       AddMap (segment, (length + align) & ~align);
+               }
+
+               public void AddMap (TextSegment segment, Range range)
+               {
+                       map [(int) segment] = range;
+               }
+
+               public Range GetRange (TextSegment segment)
+               {
+                       return map [(int) segment];
+               }
+
+               public DataDirectory GetDataDirectory (TextSegment segment)
+               {
+                       var range = map [(int) segment];
+
+                       return new DataDirectory (range.Length == 0 ? 0 : range.Start, range.Length);
+               }
+
+               public RVA GetRVA (TextSegment segment)
+               {
+                       return map [(int) segment].Start;
+               }
+
+               public RVA GetNextRVA (TextSegment segment)
+               {
+                       var i = (int) segment;
+                       return map [i].Start + map [i].Length;
+               }
+
+               public int GetLength (TextSegment segment)
+               {
+                       return (int) map [(int) segment].Length;
+               }
+
+               RVA GetStart (TextSegment segment)
+               {
+                       var index = (int) segment;
+                       return index == 0 ? ImageWriter.text_rva : ComputeStart (index);
+               }
+
+               RVA ComputeStart (int index)
+               {
+                       index--;
+                       return map [index].Start + map [index].Length;
+               }
+
+               public uint GetLength ()
+               {
+                       var range = map [(int) TextSegment.StartupStub];
+                       return range.Start - ImageWriter.text_rva + range.Length;
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Array.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Array.cs
deleted file mode 100644 (file)
index c708963..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Array.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class ARRAY : SigType {
-
-               public CustomMod [] CustomMods;
-               public SigType Type;
-               public ArrayShape Shape;
-
-               public ARRAY () : base (ElementType.Array)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ArrayShape.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ArrayShape.cs
deleted file mode 100644 (file)
index 7cf3940..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// ArrayShape.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class ArrayShape {
-
-               public int Rank;
-               public int NumSizes;
-               public int [] Sizes;
-               public int NumLoBounds;
-               public int [] LoBounds;
-
-               public ArrayShape ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/BaseSignatureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/BaseSignatureVisitor.cs
deleted file mode 100644 (file)
index 0a37a5b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// BaseSignatureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal abstract class BaseSignatureVisitor : ISignatureVisitor {
-
-               public virtual void VisitMethodDefSig (MethodDefSig methodDef)
-               {
-               }
-
-               public virtual void VisitMethodRefSig (MethodRefSig methodRef)
-               {
-               }
-
-               public virtual void VisitFieldSig (FieldSig field)
-               {
-               }
-
-               public virtual void VisitPropertySig (PropertySig property)
-               {
-               }
-
-               public virtual void VisitLocalVarSig (LocalVarSig localvar)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Class.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Class.cs
deleted file mode 100644 (file)
index ef908e6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// Class.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class CLASS : SigType {
-
-               public MetadataToken Type;
-
-               public CLASS () : base (ElementType.Class)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Constraint.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Constraint.cs
deleted file mode 100644 (file)
index 416707b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// Constraints.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal enum Constraint : byte {
-               None = 0x0,
-               Pinned = (byte) ElementType.Pinned
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs
deleted file mode 100644 (file)
index cb38a30..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// CustomAttrib.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class CustomAttrib {
-
-               public const ushort StdProlog = 0x0001;
-
-               public MethodReference Constructor;
-
-               public ushort Prolog;
-               public FixedArg [] FixedArgs;
-               public ushort NumNamed;
-               public NamedArg [] NamedArgs;
-               public bool Read;
-
-               public CustomAttrib (MethodReference ctor)
-               {
-                       Constructor = ctor;
-               }
-
-               public struct FixedArg {
-
-                       public bool SzArray;
-                       public uint NumElem;
-                       public Elem [] Elems;
-
-                       internal static FixedArg [] Empty = new FixedArg [0];
-               }
-
-               public struct Elem {
-
-                       public bool Simple;
-                       public bool String;
-                       public bool Type;
-                       public bool BoxedValueType;
-
-                       public ElementType FieldOrPropType;
-                       public object Value;
-
-                       public TypeReference ElemType;
-               }
-
-               public struct NamedArg {
-
-                       public bool Field;
-                       public bool Property;
-
-                       public ElementType FieldOrPropType;
-                       public string FieldOrPropName;
-                       public FixedArg FixedArg;
-
-                       internal static NamedArg [] Empty = new NamedArg [0];
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs
deleted file mode 100644 (file)
index 1b26e7f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// CustomMod.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class CustomMod {
-
-               public static CustomMod [] EmptyCustomMod = new CustomMod [0];
-
-               public enum CMODType : byte {
-                       None = 0x0,
-                       OPT = (byte) ElementType.CModOpt,
-                       REQD = (byte) ElementType.CModReqD
-               }
-
-               public CMODType CMOD;
-               public MetadataToken TypeDefOrRef;
-
-               public CustomMod ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FieldSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FieldSig.cs
deleted file mode 100644 (file)
index a01c058..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// FieldSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class FieldSig : Signature {
-
-               public bool Field;
-               public CustomMod [] CustomMods;
-               public SigType Type;
-
-               public FieldSig () : base ()
-               {
-               }
-
-               public FieldSig (uint blobIndex) : base (blobIndex)
-               {
-               }
-
-               public override void Accept (ISignatureVisitor visitor)
-               {
-                       visitor.VisitFieldSig (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FnPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FnPtr.cs
deleted file mode 100644 (file)
index 02fc330..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// FnPtr.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class FNPTR : SigType {
-
-               public MethodSig Method;
-
-               public FNPTR () : base (ElementType.FnPtr)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericArg.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericArg.cs
deleted file mode 100644 (file)
index ab8eb84..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// GenericArg.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       sealed class GenericArg {
-
-               public CustomMod [] CustomMods;
-               public SigType Type;
-
-               public GenericArg (SigType type)
-               {
-                       Type = type;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInst.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInst.cs
deleted file mode 100644 (file)
index 02bd111..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// GenericInst.cs
-//
-// Author:
-//     Martin Baulig  <baulig@ximian.com>
-//  Jb Evain  <jbevain@gmail.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil;
-       using Mono.Cecil.Metadata;
-
-       internal sealed class GENERICINST : SigType {
-
-               public bool ValueType;
-               public MetadataToken Type;
-
-               public GenericInstSignature Signature;
-
-               public GENERICINST () : base (ElementType.GenericInst)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInstSignature.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInstSignature.cs
deleted file mode 100644 (file)
index 94d41c4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// GenericInstSignature.cs
-//
-// Author:
-//     Martin Baulig  <martin@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class GenericInstSignature {
-
-               public int Arity;
-               public GenericArg [] Types;
-
-               public GenericInstSignature ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitable.cs
deleted file mode 100644 (file)
index 81374f0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// ISignatureVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal interface ISignatureVisitable {
-
-               void Accept (ISignatureVisitor visitor);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitor.cs
deleted file mode 100644 (file)
index e473e87..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// ISignatureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal interface ISignatureVisitor {
-
-               void VisitMethodDefSig (MethodDefSig methodDef);
-               void VisitMethodRefSig (MethodRefSig methodRef);
-               void VisitFieldSig (FieldSig field);
-               void VisitPropertySig (PropertySig property);
-               void VisitLocalVarSig (LocalVarSig localvar);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/InputOutputItem.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/InputOutputItem.cs
deleted file mode 100644 (file)
index 5240a81..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// InputOutputItem.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal abstract class InputOutputItem {
-
-               public CustomMod [] CustomMods;
-               public bool ByRef;
-               public SigType Type;
-               public bool TypedByRef;
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs
deleted file mode 100644 (file)
index 071c90c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// LocalVarSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class LocalVarSig : Signature {
-
-               public bool Local;
-               public int Count;
-               public LocalVariable [] LocalVariables;
-
-               public LocalVarSig () : base ()
-               {
-               }
-
-               public LocalVarSig (uint blobIndex) : base (blobIndex)
-               {
-               }
-
-               public override void Accept (ISignatureVisitor visitor)
-               {
-                       visitor.VisitLocalVarSig (this);
-               }
-
-               public struct LocalVariable {
-
-                       public CustomMod [] CustomMods;
-                       public Constraint Constraint;
-                       public bool ByRef;
-                       public SigType Type;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MVar.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MVar.cs
deleted file mode 100644 (file)
index 3fca4a4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// MVar.cs
-//
-// Author:
-//     Martin Baulig  <martin@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class MVAR : SigType {
-
-               public int Index;
-
-               public MVAR (int index) : base (ElementType.MVar)
-               {
-                       this.Index = index;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs
deleted file mode 100644 (file)
index 4b99c57..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// MarshalSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using System;
-
-       using Mono.Cecil;
-
-       internal sealed class MarshalSig {
-
-               public NativeType NativeInstrinsic;
-               public IMarshalSigSpec Spec;
-
-               public MarshalSig (NativeType nt)
-               {
-                       this.NativeInstrinsic = nt;
-               }
-
-               public interface IMarshalSigSpec {
-               }
-
-               public sealed class Array : IMarshalSigSpec {
-
-                       public NativeType ArrayElemType;
-                       public int ParamNum;
-                       public int ElemMult;
-                       public int NumElem;
-
-                       public Array ()
-                       {
-                               this.ParamNum = 0;
-                               this.ElemMult = 0;
-                               this.NumElem = 0;
-                       }
-               }
-
-               public sealed class CustomMarshaler : IMarshalSigSpec {
-
-                       public string Guid;
-                       public string UnmanagedType;
-                       public string ManagedType;
-                       public string Cookie;
-               }
-
-               public sealed class FixedArray : IMarshalSigSpec {
-
-                       public int NumElem;
-                       public NativeType ArrayElemType;
-
-                       public FixedArray ()
-                       {
-                               this.NumElem = 0;
-                               this.ArrayElemType = NativeType.NONE;
-                       }
-               }
-
-               public sealed class SafeArray : IMarshalSigSpec {
-
-                       public VariantType ArrayElemType;
-               }
-
-               public sealed class FixedSysString : IMarshalSigSpec {
-
-                       public int Size;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodDefSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodDefSig.cs
deleted file mode 100644 (file)
index b7e2e58..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// MethodDefSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class MethodDefSig : MethodRefSig {
-
-               public int GenericParameterCount;
-
-               public MethodDefSig () : this (0)
-               {
-               }
-
-               public MethodDefSig (uint blobIndex) : base (blobIndex)
-               {
-               }
-
-               public override void Accept (ISignatureVisitor visitor)
-               {
-                       visitor.VisitMethodDefSig (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodRefSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodRefSig.cs
deleted file mode 100644 (file)
index 63cc35b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// MethodRefSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal class MethodRefSig : MethodSig {
-
-               public int Sentinel;
-
-               public MethodRefSig () : this (0)
-               {
-               }
-
-               public MethodRefSig (uint blobIndex) : base (blobIndex)
-               {
-                       Sentinel = -1;
-               }
-
-               public override void Accept (ISignatureVisitor visitor)
-               {
-                       visitor.VisitMethodRefSig (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSig.cs
deleted file mode 100644 (file)
index 3b65809..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// MethodSig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using Mono.Cecil;
-
-namespace Mono.Cecil.Signatures {
-
-       internal abstract class MethodSig : Signature {
-
-               public bool HasThis;
-               public bool ExplicitThis;
-               public MethodCallingConvention MethCallConv;
-               public int ParamCount;
-               public RetType RetType;
-               public Param [] Parameters;
-
-               public MethodSig () : base ()
-               {
-               }
-
-               public MethodSig (uint blobIndex) : base (blobIndex)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSpec.cs
deleted file mode 100644 (file)
index 0ad0f8b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// TypeSpec.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class MethodSpec {
-
-               public GenericInstSignature Signature;
-
-               public MethodSpec (GenericInstSignature sig)
-               {
-                       this.Signature = sig;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Param.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Param.cs
deleted file mode 100644 (file)
index 0bd7a0d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Param.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class Param : InputOutputItem {
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/PropertySig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/PropertySig.cs
deleted file mode 100644 (file)
index 5db0820..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// PropertySig.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class PropertySig : Signature {
-
-               public bool Property;
-               public int ParamCount;
-               public CustomMod [] CustomMods;
-               public SigType Type;
-               public Param [] Parameters;
-
-               public PropertySig () : base ()
-               {
-               }
-
-               public PropertySig (uint blobIndex) : base (blobIndex)
-               {
-               }
-
-               public override void Accept (ISignatureVisitor visitor)
-               {
-                       visitor.VisitPropertySig (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Ptr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Ptr.cs
deleted file mode 100644 (file)
index e95394d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Ptr.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class PTR : SigType {
-
-               public CustomMod [] CustomMods;
-               public SigType PtrType;
-               public bool Void;
-
-               public PTR () : base (ElementType.Ptr)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/RetType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/RetType.cs
deleted file mode 100644 (file)
index 6541211..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// RetType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class RetType : InputOutputItem {
-
-               public bool Void;
-
-               public RetType ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SigType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SigType.cs
deleted file mode 100644 (file)
index 6e2d19b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// SigType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal class SigType {
-
-               public ElementType ElementType;
-
-               public SigType (ElementType elem)
-               {
-                       ElementType = elem;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Signature.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Signature.cs
deleted file mode 100644 (file)
index 5d9e254..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// Signature.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using System;
-
-       internal abstract class Signature : ISignatureVisitable {
-
-               public byte CallingConvention;
-               public uint BlobIndex;
-
-               public Signature (uint blobIndex)
-               {
-                       BlobIndex = blobIndex;
-               }
-
-               public Signature ()
-               {
-                       BlobIndex = 0;
-               }
-
-               public abstract void Accept (ISignatureVisitor visitor);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureReader.cs
deleted file mode 100644 (file)
index 3e84b25..0000000
+++ /dev/null
@@ -1,991 +0,0 @@
-//
-// SignatureReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using System;
-       using System.Collections;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil;
-       using Mono.Cecil.Metadata;
-
-       internal sealed class SignatureReader : BaseSignatureVisitor {
-
-               MetadataRoot m_root;
-               ReflectionReader m_reflectReader;
-               byte [] m_blobData;
-
-               IDictionary m_signatures;
-
-               IAssemblyResolver AssemblyResolver {
-                       get { return m_reflectReader.Module.Assembly.Resolver; }
-               }
-
-               public SignatureReader (MetadataRoot root, ReflectionReader reflectReader)
-               {
-                       m_root = root;
-                       m_reflectReader = reflectReader;
-
-                       m_blobData = m_root.Streams.BlobHeap != null ? m_root.Streams.BlobHeap.Data : new byte [0];
-
-                       m_signatures = new Hashtable ();
-               }
-
-               public FieldSig GetFieldSig (uint index)
-               {
-                       FieldSig f = m_signatures [index] as FieldSig;
-                       if (f == null) {
-                               f = new FieldSig (index);
-                               f.Accept (this);
-                               m_signatures [index] = f;
-                       }
-                       return f;
-               }
-
-               public PropertySig GetPropSig (uint index)
-               {
-                       PropertySig p = m_signatures [index] as PropertySig;
-                       if (p == null) {
-                               p = new PropertySig (index);
-                               p.Accept (this);
-                               m_signatures [index] = p;
-                       }
-                       return p;
-               }
-
-               public MethodDefSig GetMethodDefSig (uint index)
-               {
-                       MethodDefSig m = m_signatures [index] as MethodDefSig;
-                       if (m == null) {
-                               m = new MethodDefSig (index);
-                               m.Accept (this);
-                               m_signatures [index] = m;
-                       }
-                       return m;
-               }
-
-               public MethodRefSig GetMethodRefSig (uint index)
-               {
-                       MethodRefSig m = m_signatures [index] as MethodRefSig;
-                       if (m == null) {
-                               m = new MethodRefSig (index);
-                               m.Accept (this);
-                               m_signatures [index] = m;
-                       }
-                       return m;
-               }
-
-               public TypeSpec GetTypeSpec (uint index)
-               {
-                       TypeSpec ts = m_signatures [index] as TypeSpec;
-
-                       if (ts == null) {
-                               ts = ReadTypeSpec (m_blobData, (int) index);
-                               m_signatures [index] = ts;
-                       }
-
-                       return ts;
-               }
-
-               public MethodSpec GetMethodSpec (uint index)
-               {
-                       MethodSpec ms = m_signatures [index] as MethodSpec;
-
-                       if (ms == null) {
-                               ms = ReadMethodSpec (m_blobData, (int) index);
-                               m_signatures [index] = ms;
-                       }
-
-                       return ms;
-               }
-
-               public LocalVarSig GetLocalVarSig (uint index)
-               {
-                       LocalVarSig lv = m_signatures [index] as LocalVarSig;
-                       if (lv == null) {
-                               lv = new LocalVarSig (index);
-                               lv.Accept (this);
-                               m_signatures [index] = lv;
-                       }
-                       return lv;
-               }
-
-               public CustomAttrib GetCustomAttrib (uint index, MethodReference ctor)
-               {
-                       return GetCustomAttrib (index, ctor, false);
-               }
-
-               public CustomAttrib GetCustomAttrib (uint index, MethodReference ctor, bool resolve)
-               {
-                       return ReadCustomAttrib ((int) index, ctor, resolve);
-               }
-
-               public CustomAttrib GetCustomAttrib (byte [] data, MethodReference ctor)
-               {
-                       return GetCustomAttrib (data, ctor, false);
-               }
-
-               public CustomAttrib GetCustomAttrib (byte [] data, MethodReference ctor, bool resolve)
-               {
-                       BinaryReader br = new BinaryReader (new MemoryStream (data));
-                       return ReadCustomAttrib (br, data, ctor, resolve);
-               }
-
-               public Signature GetMemberRefSig (TokenType tt, uint index)
-               {
-                       int start, callconv;
-                       Utilities.ReadCompressedInteger (m_blobData, (int) index, out start);
-                       callconv = m_blobData [start];
-                       if ((callconv & 0x5) == 0x5 || (callconv & 0x10) == 0x10) // vararg || generic?
-                               return GetMethodDefSig (index);
-                       if ((callconv & 0x6) != 0) // field ?
-                               return GetFieldSig (index);
-
-                       switch (tt) {
-                       case TokenType.TypeDef :
-                       case TokenType.TypeRef :
-                       case TokenType.TypeSpec :
-                               return GetMethodRefSig (index);
-                       case TokenType.ModuleRef :
-                       case TokenType.Method :
-                               return GetMethodDefSig (index);
-                       }
-                       return null;
-               }
-
-               public MarshalSig GetMarshalSig (uint index)
-               {
-                       MarshalSig ms = m_signatures [index] as MarshalSig;
-                       if (ms == null) {
-                               byte [] data = m_root.Streams.BlobHeap.Read (index);
-                               ms = ReadMarshalSig (data);
-                               m_signatures [index] = ms;
-                       }
-                       return ms;
-               }
-
-               public MethodSig GetStandAloneMethodSig (uint index)
-               {
-                       byte [] data = m_root.Streams.BlobHeap.Read (index);
-                       int start;
-                       if ((data [0] & 0x5) > 0) {
-                               MethodRefSig mrs = new MethodRefSig (index);
-                               ReadMethodRefSig (mrs, data, 0, out start);
-                               return mrs;
-                       } else {
-                               MethodDefSig mds = new MethodDefSig (index);
-                               ReadMethodDefSig (mds, data, 0, out start);
-                               return mds;
-                       }
-               }
-
-               public override void VisitMethodDefSig (MethodDefSig methodDef)
-               {
-                       int start;
-                       ReadMethodDefSig (methodDef, m_root.Streams.BlobHeap.Read (methodDef.BlobIndex), 0, out start);
-               }
-
-               public override void VisitMethodRefSig (MethodRefSig methodRef)
-               {
-                       int start;
-                       ReadMethodRefSig (methodRef, m_root.Streams.BlobHeap.Read (methodRef.BlobIndex), 0, out start);
-               }
-
-               public override void VisitFieldSig (FieldSig field)
-               {
-                       int start;
-                       Utilities.ReadCompressedInteger (m_blobData, (int) field.BlobIndex, out start);
-                       field.CallingConvention = m_blobData [start];
-                       field.Field = (field.CallingConvention & 0x6) != 0;
-                       field.CustomMods = ReadCustomMods (m_blobData, start + 1, out start);
-                       field.Type = ReadType (m_blobData, start, out start);
-               }
-
-               public override void VisitPropertySig (PropertySig property)
-               {
-                       int start;
-                       Utilities.ReadCompressedInteger (m_blobData, (int) property.BlobIndex, out start);
-                       property.CallingConvention = m_blobData [start];
-                       property.Property = (property.CallingConvention & 0x8) != 0;
-                       property.ParamCount = Utilities.ReadCompressedInteger (m_blobData, start + 1, out start);
-                       property.CustomMods = ReadCustomMods (m_blobData, start, out start);
-                       property.Type = ReadType (m_blobData, start, out start);
-                       property.Parameters = ReadParameters (property.ParamCount, m_blobData, start, out start);
-               }
-
-               public override void VisitLocalVarSig (LocalVarSig localvar)
-               {
-                       int start;
-                       Utilities.ReadCompressedInteger (m_blobData, (int) localvar.BlobIndex, out start);
-                       localvar.CallingConvention = m_blobData [start];
-                       localvar.Local = (localvar.CallingConvention & 0x7) != 0;
-                       localvar.Count = Utilities.ReadCompressedInteger (m_blobData, start + 1, out start);
-                       localvar.LocalVariables = ReadLocalVariables (localvar.Count, m_blobData, start);
-               }
-
-               void ReadMethodDefSig (MethodDefSig methodDef, byte [] data, int pos, out int start)
-               {
-                       methodDef.CallingConvention = data [pos];
-                       start = pos + 1;
-                       methodDef.HasThis = (methodDef.CallingConvention & 0x20) != 0;
-                       methodDef.ExplicitThis = (methodDef.CallingConvention & 0x40) != 0;
-                       if ((methodDef.CallingConvention & 0x5) != 0)
-                               methodDef.MethCallConv |= MethodCallingConvention.VarArg;
-                       else if ((methodDef.CallingConvention & 0x10) != 0) {
-                               methodDef.MethCallConv |= MethodCallingConvention.Generic;
-                               methodDef.GenericParameterCount = Utilities.ReadCompressedInteger (data, start, out start);
-                       } else
-                               methodDef.MethCallConv |= MethodCallingConvention.Default;
-
-                       methodDef.ParamCount = Utilities.ReadCompressedInteger (data, start, out start);
-                       methodDef.RetType = ReadRetType (data, start, out start);
-                       int sentpos;
-                       methodDef.Parameters = ReadParameters (methodDef.ParamCount, data, start, out start, out sentpos);
-                       methodDef.Sentinel = sentpos;
-               }
-
-               void ReadMethodRefSig (MethodRefSig methodRef, byte [] data, int pos, out int start)
-               {
-                       methodRef.CallingConvention = data [pos];
-                       start = pos + 1;
-                       methodRef.HasThis = (methodRef.CallingConvention & 0x20) != 0;
-                       methodRef.ExplicitThis = (methodRef.CallingConvention & 0x40) != 0;
-                       if ((methodRef.CallingConvention & 0x1) != 0)
-                               methodRef.MethCallConv |= MethodCallingConvention.C;
-                       else if ((methodRef.CallingConvention & 0x2) != 0)
-                               methodRef.MethCallConv |= MethodCallingConvention.StdCall;
-                       else if ((methodRef.CallingConvention & 0x3) != 0)
-                               methodRef.MethCallConv |= MethodCallingConvention.ThisCall;
-                       else if ((methodRef.CallingConvention & 0x4) != 0)
-                               methodRef.MethCallConv |= MethodCallingConvention.FastCall;
-                       else if ((methodRef.CallingConvention & 0x5) != 0)
-                               methodRef.MethCallConv |= MethodCallingConvention.VarArg;
-                       else
-                               methodRef.MethCallConv |= MethodCallingConvention.Default;
-                       methodRef.ParamCount = Utilities.ReadCompressedInteger (data, start, out start);
-                       methodRef.RetType = ReadRetType (data, start, out start);
-                       int sentpos;
-                       methodRef.Parameters = ReadParameters (methodRef.ParamCount, data, start, out start, out sentpos);
-                       methodRef.Sentinel = sentpos;
-               }
-
-               LocalVarSig.LocalVariable [] ReadLocalVariables (int length, byte [] data, int pos)
-               {
-                       int start = pos;
-                       LocalVarSig.LocalVariable [] types = new LocalVarSig.LocalVariable [length];
-                       for (int i = 0; i < length; i++)
-                               types [i] = ReadLocalVariable (data, start, out start);
-                       return types;
-               }
-
-               LocalVarSig.LocalVariable ReadLocalVariable (byte [] data, int pos, out int start)
-               {
-                       start = pos;
-                       LocalVarSig.LocalVariable lv = new LocalVarSig.LocalVariable ();
-                       lv.ByRef = false;
-                       int cursor;
-                       while (true) {
-                               lv.CustomMods = ReadCustomMods (data, start, out start);
-                               cursor = start;
-                               int current = Utilities.ReadCompressedInteger (data, start, out start);
-                               if (current == (int) ElementType.Pinned) // the only possible constraint
-                                       lv.Constraint |= Constraint.Pinned;
-                               else if (current == (int) ElementType.ByRef) {
-                                       lv.ByRef = true;
-
-                                       if (lv.CustomMods == null || lv.CustomMods.Length == 0)
-                                               lv.CustomMods = ReadCustomMods (data, start, out start);
-                               } else {
-                                       lv.Type = ReadType (data, cursor, out start);
-                                       break;
-                               }
-                       }
-                       return lv;
-               }
-
-               TypeSpec ReadTypeSpec (byte [] data, int pos)
-               {
-                       int start = pos;
-                       Utilities.ReadCompressedInteger (data, start, out start);
-                       TypeSpec ts = new TypeSpec ();
-                       ts.CustomMods = ReadCustomMods (data, start, out start);
-                       ts.Type = ReadType (data, start, out start);
-                       return ts;
-               }
-
-               MethodSpec ReadMethodSpec (byte [] data, int pos)
-               {
-                       int start = pos;
-
-                       Utilities.ReadCompressedInteger (data, start, out start);
-                       if (Utilities.ReadCompressedInteger (data, start, out start) != 0x0a)
-                               throw new ReflectionException ("Invalid MethodSpec signature");
-
-                       return new MethodSpec (ReadGenericInstSignature (data, start, out start));
-               }
-
-               RetType ReadRetType (byte [] data, int pos, out int start)
-               {
-                       RetType rt = new RetType ();
-                       start = pos;
-                       rt.CustomMods = ReadCustomMods (data, start, out start);
-                       int curs = start;
-                       ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
-                       switch (flag) {
-                       case ElementType.Void :
-                               rt.ByRef = rt.TypedByRef = false;
-                               rt.Void = true;
-                               break;
-                       case ElementType.TypedByRef :
-                               rt.ByRef = rt.Void = false;
-                               rt.TypedByRef = true;
-                               break;
-                       case ElementType.ByRef :
-                               rt.TypedByRef = rt.Void = false;
-                               rt.ByRef = true;
-                               rt.CustomMods = CombineCustomMods(rt.CustomMods, ReadCustomMods (data, start, out start));
-                               rt.Type = ReadType (data, start, out start);
-                               break;
-                       default :
-                               rt.TypedByRef = rt.Void = rt.ByRef = false;
-                               rt.Type = ReadType (data, curs, out start);
-                               break;
-                       }
-
-                       return rt;
-               }
-
-               static CustomMod [] CombineCustomMods (CustomMod [] original, CustomMod [] next)
-               {
-                       if (next == null || next.Length == 0)
-                               return original;
-
-                       CustomMod [] mods = new CustomMod [original.Length + next.Length];
-                       Array.Copy (original, mods, original.Length);
-                       Array.Copy (next, 0, mods, original.Length, next.Length);
-                       return mods;
-               }
-
-               Param [] ReadParameters (int length, byte [] data, int pos, out int start)
-               {
-                       Param [] ret = new Param [length];
-                       start = pos;
-                       for (int i = 0; i < length; i++)
-                               ret [i] = ReadParameter (data, start, out start);
-                       return ret;
-               }
-
-               Param [] ReadParameters (int length, byte [] data, int pos, out int start, out int sentinelpos)
-               {
-                       Param [] ret = new Param [length];
-                       start = pos;
-                       sentinelpos = -1;
-
-                       for (int i = 0; i < length; i++) {
-                               int curs = start;
-                               int flag = Utilities.ReadCompressedInteger (data, start, out start);
-
-                               if (flag == (int) ElementType.Sentinel) {
-                                       sentinelpos = i;
-                                       curs = start;
-                               }
-
-                               ret [i] = ReadParameter (data, curs, out start);
-                       }
-
-                       return ret;
-               }
-
-               Param ReadParameter (byte [] data, int pos, out int start)
-               {
-                       Param p = new Param ();
-                       start = pos;
-
-                       p.CustomMods = ReadCustomMods (data, start, out start);
-                       int curs = start;
-                       ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
-                       switch (flag) {
-                       case ElementType.TypedByRef :
-                               p.TypedByRef = true;
-                               p.ByRef = false;
-                               break;
-                       case ElementType.ByRef :
-                               p.TypedByRef = false;
-                               p.ByRef = true;
-
-                               if (p.CustomMods == null || p.CustomMods.Length == 0)
-                                       p.CustomMods = ReadCustomMods (data, start, out start);
-
-                               p.Type = ReadType (data, start, out start);
-                               break;
-                       default :
-                               p.TypedByRef = false;
-                               p.ByRef = false;
-                               p.Type = ReadType (data, curs, out start);
-                               break;
-                       }
-                       return p;
-               }
-
-               SigType ReadType (byte [] data, int pos, out int start)
-               {
-                       start = pos;
-                       ElementType element = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
-                       switch (element) {
-                       case ElementType.ValueType :
-                               VALUETYPE vt = new VALUETYPE ();
-                               vt.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
-                               return vt;
-                       case ElementType.Class :
-                               CLASS c = new CLASS ();
-                               c.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
-                               return c;
-                       case ElementType.Ptr :
-                               PTR p = new PTR ();
-                               int buf = start;
-                               int flag = Utilities.ReadCompressedInteger (data, start, out start);
-                               p.Void = flag == (int) ElementType.Void;
-                               if (p.Void)
-                                       return p;
-                               start = buf;
-                               p.CustomMods = ReadCustomMods (data, start, out start);
-                               p.PtrType = ReadType (data, start, out start);
-                               return p;
-                       case ElementType.FnPtr :
-                               FNPTR fp = new FNPTR ();
-                               if ((data [start] & 0x5) != 0) {
-                                       MethodRefSig mr = new MethodRefSig ((uint) start);
-                                       ReadMethodRefSig (mr, data, start, out start);
-                                       fp.Method = mr;
-                               } else {
-                                       MethodDefSig md = new MethodDefSig ((uint) start);
-                                       ReadMethodDefSig (md, data, start, out start);
-                                       fp.Method = md;
-                               }
-                               return fp;
-                       case ElementType.Array :
-                               ARRAY ary = new ARRAY ();
-                               ary.CustomMods = ReadCustomMods (data, start, out start);
-                               ArrayShape shape = new ArrayShape ();
-                               ary.Type = ReadType (data, start, out start);
-                               shape.Rank = Utilities.ReadCompressedInteger (data, start, out start);
-                               shape.NumSizes = Utilities.ReadCompressedInteger (data, start, out start);
-                               shape.Sizes = new int [shape.NumSizes];
-                               for (int i = 0; i < shape.NumSizes; i++)
-                                       shape.Sizes [i] = Utilities.ReadCompressedInteger (data, start, out start);
-                               shape.NumLoBounds = Utilities.ReadCompressedInteger (data, start, out start);
-                               shape.LoBounds = new int [shape.NumLoBounds];
-                               for (int i = 0; i < shape.NumLoBounds; i++)
-                                       shape.LoBounds [i] = Utilities.ReadCompressedInteger (data, start, out start);
-                               ary.Shape = shape;
-                               return ary;
-                       case ElementType.SzArray :
-                               SZARRAY sa = new SZARRAY ();
-                               sa.CustomMods = ReadCustomMods (data, start, out start);
-                               sa.Type = ReadType (data, start, out start);
-                               return sa;
-                       case ElementType.Var:
-                               return new VAR (Utilities.ReadCompressedInteger (data, start, out start));
-                       case ElementType.MVar:
-                               return new MVAR (Utilities.ReadCompressedInteger (data, start, out start));
-                       case ElementType.GenericInst:
-                               GENERICINST ginst = new GENERICINST ();
-
-                               ginst.ValueType = ((ElementType) Utilities.ReadCompressedInteger (
-                                       data, start, out start)) == ElementType.ValueType;
-
-                               ginst.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
-
-                               ginst.Signature = ReadGenericInstSignature (data, start, out start);
-
-                               return ginst;
-                       default :
-                               return new SigType (element);
-                       }
-               }
-
-               GenericInstSignature ReadGenericInstSignature (byte [] data, int pos, out int start)
-               {
-                       start = pos;
-                       GenericInstSignature gis = new GenericInstSignature ();
-                       gis.Arity = Utilities.ReadCompressedInteger (data, start, out start);
-                       gis.Types = new GenericArg [gis.Arity];
-                       for (int i = 0; i < gis.Arity; i++)
-                               gis.Types [i] = ReadGenericArg (data, start, out start);
-
-                       return gis;
-               }
-
-               GenericArg ReadGenericArg (byte[] data, int pos, out int start)
-               {
-                       start = pos;
-                       CustomMod [] mods = ReadCustomMods (data, start, out start);
-                       GenericArg arg = new GenericArg (ReadType (data, start, out start));
-                       arg.CustomMods = mods;
-                       return arg;
-               }
-
-               CustomMod [] ReadCustomMods (byte [] data, int pos, out int start)
-               {
-                       ArrayList cmods = null;
-                       start = pos;
-                       while (true) {
-                               int buf = start;
-                               if (buf >= data.Length - 1)
-                                       break;
-
-                               ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
-                               start = buf;
-                               if (!((flag == ElementType.CModOpt) || (flag == ElementType.CModReqD)))
-                                       break;
-
-                               if (cmods == null)
-                                       cmods = new ArrayList (2);
-
-                               cmods.Add (ReadCustomMod (data, start, out start));
-                       }
-
-                       return cmods == null ? CustomMod.EmptyCustomMod : cmods.ToArray (typeof (CustomMod)) as CustomMod [];
-               }
-
-               CustomMod ReadCustomMod (byte [] data, int pos, out int start)
-               {
-                       CustomMod cm = new CustomMod ();
-                       start = pos;
-                       ElementType cmod = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
-                       if (cmod == ElementType.CModOpt)
-                               cm.CMOD = CustomMod.CMODType.OPT;
-                       else if (cmod == ElementType.CModReqD)
-                               cm.CMOD = CustomMod.CMODType.REQD;
-                       else
-                               cm.CMOD = CustomMod.CMODType.None;
-                       cm.TypeDefOrRef = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
-                               (uint) Utilities.ReadCompressedInteger (data, start, out start));
-                       return cm;
-               }
-
-               CustomAttrib ReadCustomAttrib (int pos, MethodReference ctor, bool resolve)
-               {
-                       int start, length = Utilities.ReadCompressedInteger (m_blobData, pos, out start);
-                       byte [] data = new byte [length];
-                       Buffer.BlockCopy (m_blobData, start, data, 0, length);
-                       try {
-                               return ReadCustomAttrib (new BinaryReader (
-                                       new MemoryStream (data)), data, ctor, resolve);
-                       } catch {
-                               CustomAttrib ca = new CustomAttrib (ctor);
-                               ca.Read = false;
-                               return ca;
-                       }
-               }
-
-               CustomAttrib ReadCustomAttrib (BinaryReader br, byte [] data, MethodReference ctor, bool resolve)
-               {
-                       CustomAttrib ca = new CustomAttrib (ctor);
-                       if (data.Length == 0) {
-                               ca.FixedArgs = CustomAttrib.FixedArg.Empty;
-                               ca.NamedArgs = CustomAttrib.NamedArg.Empty;
-                               return ca;
-                       }
-
-                       bool read = true;
-
-                       ca.Prolog = br.ReadUInt16 ();
-                       if (ca.Prolog != CustomAttrib.StdProlog)
-                               throw new MetadataFormatException ("Non standard prolog for custom attribute");
-
-                       if (ctor.HasParameters) {
-                               ca.FixedArgs = new CustomAttrib.FixedArg [ctor.Parameters.Count];
-                               for (int i = 0; i < ca.FixedArgs.Length && read; i++)
-                                       ca.FixedArgs [i] = ReadFixedArg (data, br,
-                                               ctor.Parameters [i].ParameterType, ref read, resolve);
-                       } else {
-                               ca.FixedArgs = CustomAttrib.FixedArg.Empty;
-                       }
-
-                       if (br.BaseStream.Position == br.BaseStream.Length)
-                               read = false;
-
-                       if (!read) {
-                               ca.Read = read;
-                               return ca;
-                       }
-
-                       ca.NumNamed = br.ReadUInt16 ();
-                       if (ca.NumNamed > 0) {
-                               ca.NamedArgs = new CustomAttrib.NamedArg [ca.NumNamed];
-                               for (int i = 0; i < ca.NumNamed && read; i++)
-                                       ca.NamedArgs [i] = ReadNamedArg (data, br, ref read, resolve);
-                       } else {
-                               ca.NamedArgs = CustomAttrib.NamedArg.Empty;
-                       }
-
-                       ca.Read = read;
-                       return ca;
-               }
-
-               CustomAttrib.FixedArg ReadFixedArg (byte [] data, BinaryReader br,
-                       TypeReference param, ref bool read, bool resolve)
-               {
-                       CustomAttrib.FixedArg fa = new CustomAttrib.FixedArg ();
-                       if (param is ArrayType) {
-                               param = ((ArrayType) param).ElementType;
-                               fa.SzArray = true;
-                               fa.NumElem = br.ReadUInt32 ();
-
-                               if (fa.NumElem == 0 || fa.NumElem == 0xffffffff) {
-                                       fa.Elems = new CustomAttrib.Elem [0];
-                                       fa.NumElem = 0;
-                                       return fa;
-                               }
-
-                               fa.Elems = new CustomAttrib.Elem [fa.NumElem];
-                               for (int i = 0; i < fa.NumElem; i++)
-                                       fa.Elems [i] = ReadElem (data, br, param, ref read, resolve);
-                       } else
-                               fa.Elems = new CustomAttrib.Elem [] { ReadElem (data, br, param, ref read, resolve) };
-
-                       return fa;
-               }
-
-               TypeReference CreateEnumTypeReference (string enumName)
-               {
-                       string asmName = null;
-                       int asmStart = enumName.IndexOf (',');
-                       if (asmStart != -1) {
-                               asmName = enumName.Substring (asmStart + 1);
-                               enumName = enumName.Substring (0, asmStart);
-                       }
-                       // Inner class style is reflection style.
-                       enumName = enumName.Replace ('+', '/');
-                       AssemblyNameReference asm;
-                       if (asmName == null) {
-                               // If no assembly is given then the ECMA standard says the
-                               // assembly is either the current one or mscorlib.
-                               if (m_reflectReader.Module.Types.Contains (enumName))
-                                       return m_reflectReader.Module.Types [enumName];
-
-                               asm = m_reflectReader.Corlib;
-                       } else
-                               asm = AssemblyNameReference.Parse (asmName);
-
-                       string [] outers = enumName.Split ('/');
-                       string outerfullname = outers [0];
-                       string ns = null;
-                       int nsIndex = outerfullname.LastIndexOf ('.');
-                       if (nsIndex != -1)
-                               ns = outerfullname.Substring (0, nsIndex);
-                       string name = outerfullname.Substring (nsIndex + 1);
-                       TypeReference decType = new TypeReference (name, ns, asm);
-                       for (int i = 1; i < outers.Length; i++) {
-                               TypeReference t = new TypeReference (outers [i], null, asm);
-                               t.Module = m_reflectReader.Module;
-                               t.DeclaringType = decType;
-                               decType = t;
-                       }
-                       decType.Module = m_reflectReader.Module;
-                       decType.IsValueType = true;
-
-                       return decType;
-               }
-
-               TypeReference ReadTypeReference (byte [] data, BinaryReader br, out ElementType elemType)
-               {
-                       bool array = false;
-                       elemType = (ElementType) br.ReadByte ();
-                       if (elemType == ElementType.SzArray) {
-                               elemType = (ElementType) br.ReadByte ();
-                               array = true;
-                       }
-
-                       TypeReference res;
-                       if (elemType == ElementType.Enum)
-                               res = CreateEnumTypeReference (ReadUTF8String (data, br));
-                       else
-                               res = TypeReferenceFromElemType (elemType);
-
-                       if (array)
-                               res = new ArrayType (res);
-
-                       return res;
-               }
-
-               TypeReference TypeReferenceFromElemType (ElementType elemType)
-               {
-                       switch (elemType) {
-                       case ElementType.Boxed :
-                       case ElementType.Object:
-                               return m_reflectReader.SearchCoreType (Constants.Object);
-                       case ElementType.String :
-                               return m_reflectReader.SearchCoreType (Constants.String);
-                       case ElementType.Type :
-                               return m_reflectReader.SearchCoreType (Constants.Type);
-                       case ElementType.Boolean :
-                               return m_reflectReader.SearchCoreType (Constants.Boolean);
-                       case ElementType.Char :
-                               return m_reflectReader.SearchCoreType (Constants.Char);
-                       case ElementType.R4 :
-                               return m_reflectReader.SearchCoreType (Constants.Single);
-                       case ElementType.R8 :
-                               return m_reflectReader.SearchCoreType (Constants.Double);
-                       case ElementType.I1 :
-                               return m_reflectReader.SearchCoreType (Constants.SByte);
-                       case ElementType.I2 :
-                               return m_reflectReader.SearchCoreType (Constants.Int16);
-                       case ElementType.I4 :
-                               return m_reflectReader.SearchCoreType (Constants.Int32);
-                       case ElementType.I8 :
-                               return m_reflectReader.SearchCoreType (Constants.Int64);
-                       case ElementType.U1 :
-                               return m_reflectReader.SearchCoreType (Constants.Byte);
-                       case ElementType.U2 :
-                               return m_reflectReader.SearchCoreType (Constants.UInt16);
-                       case ElementType.U4 :
-                               return m_reflectReader.SearchCoreType (Constants.UInt32);
-                       case ElementType.U8 :
-                               return m_reflectReader.SearchCoreType (Constants.UInt64);
-                       default :
-                               throw new MetadataFormatException ("Non valid type in CustomAttrib.Elem: 0x{0}",
-                                       ((byte) elemType).ToString("x2"));
-                       }
-               }
-
-               internal CustomAttrib.NamedArg ReadNamedArg (byte [] data, BinaryReader br, ref bool read, bool resolve)
-               {
-                       CustomAttrib.NamedArg na = new CustomAttrib.NamedArg ();
-                       byte kind = br.ReadByte ();
-                       if (kind == 0x53) { // field
-                               na.Field = true;
-                               na.Property = false;
-                       } else if (kind == 0x54) { // property
-                               na.Field = false;
-                               na.Property = true;
-                       } else
-                               throw new MetadataFormatException ("Wrong kind of namedarg found: 0x" + kind.ToString("x2"));
-
-                       TypeReference elemType = ReadTypeReference (data, br, out na.FieldOrPropType);
-                       na.FieldOrPropName = ReadUTF8String (data, br);
-                       na.FixedArg = ReadFixedArg (data, br, elemType, ref read, resolve);
-
-                       return na;
-               }
-
-               CustomAttrib.Elem ReadElem (byte [] data, BinaryReader br, TypeReference elemType, ref bool read, bool resolve)
-               {
-                       CustomAttrib.Elem elem = new CustomAttrib.Elem ();
-
-                       string elemName = elemType.FullName;
-
-                       if (elemName == Constants.Object) {
-                               elemType = ReadTypeReference (data, br, out elem.FieldOrPropType);
-                               if (elemType is ArrayType) {
-                                       read = false; // Don't know how to represent arrays as an object value.
-                                       return elem;
-                               } else if (elemType.FullName == Constants.Object)
-                                       throw new MetadataFormatException ("Non valid type in CustomAttrib.Elem after boxed prefix: 0x{0}",
-                                               ((byte) elem.FieldOrPropType).ToString ("x2"));
-
-                               elem = ReadElem (data, br, elemType, ref read, resolve);
-                               elem.String = elem.Simple = elem.Type = false;
-                               elem.BoxedValueType = true;
-                               return elem;
-                       }
-
-                       elem.ElemType = elemType;
-
-                       if (elemName == Constants.Type || elemName == Constants.String) {
-                               switch (elemType.FullName) {
-                               case Constants.String:
-                                       elem.String = true;
-                                       elem.BoxedValueType = elem.Simple = elem.Type = false;
-                                       break;
-                               case Constants.Type:
-                                       elem.Type = true;
-                                       elem.BoxedValueType = elem.Simple = elem.String = false;
-                                       break;
-                               }
-
-                               if (data [br.BaseStream.Position] == 0xff) { // null
-                                       elem.Value = null;
-                                       br.BaseStream.Position++;
-                               } else {
-                                       elem.Value = ReadUTF8String (data, br);
-                               }
-                               return elem;
-                       }
-
-                       elem.String = elem.Type = elem.BoxedValueType = false;
-                       if (!ReadSimpleValue (br, ref elem, elem.ElemType)) {
-                               if (!resolve) { // until enums writing is implemented
-                                       read = false;
-                                       return elem;
-                               }
-                               TypeReference typeRef = GetEnumUnderlyingType (elem.ElemType, resolve);
-                               if (typeRef == null || !ReadSimpleValue (br, ref elem, typeRef))
-                                       read = false;
-                       }
-
-                       return elem;
-               }
-
-               TypeReference GetEnumUnderlyingType (TypeReference enumType, bool resolve)
-               {
-                       TypeDefinition type = enumType as TypeDefinition;
-                       if (type == null && resolve && AssemblyResolver != null) {
-                               if (enumType.Scope is ModuleDefinition)
-                                       throw new NotSupportedException ();
-
-                               AssemblyDefinition asm = AssemblyResolver.Resolve (
-                                       ((AssemblyNameReference) enumType.Scope).FullName);
-
-                               if (asm != null)
-                                       type = asm.MainModule.Types [enumType.FullName];
-                       }
-
-                       if (type != null && type.IsEnum)
-                               return type.Fields.GetField ("value__").FieldType;
-
-                       return null;
-               }
-
-               bool ReadSimpleValue (BinaryReader br, ref CustomAttrib.Elem elem, TypeReference type)
-               {
-                       switch (type.FullName) {
-                       case Constants.Boolean :
-                               elem.Value = br.ReadByte () == 1;
-                               break;
-                       case Constants.Char :
-                               elem.Value = (char) br.ReadUInt16 ();
-                               break;
-                       case Constants.Single :
-                               elem.Value = br.ReadSingle ();
-                               break;
-                       case Constants.Double :
-                               elem.Value = br.ReadDouble ();
-                               break;
-                       case Constants.Byte :
-                               elem.Value = br.ReadByte ();
-                               break;
-                       case Constants.Int16 :
-                               elem.Value = br.ReadInt16 ();
-                               break;
-                       case Constants.Int32 :
-                               elem.Value = br.ReadInt32 ();
-                               break;
-                       case Constants.Int64 :
-                               elem.Value = br.ReadInt64 ();
-                               break;
-                       case Constants.SByte :
-                               elem.Value = br.ReadSByte ();
-                               break;
-                       case Constants.UInt16 :
-                               elem.Value = br.ReadUInt16 ();
-                               break;
-                       case Constants.UInt32 :
-                               elem.Value = br.ReadUInt32 ();
-                               break;
-                       case Constants.UInt64 :
-                               elem.Value = br.ReadUInt64 ();
-                               break;
-                       default : // enum
-                               return false;
-                       }
-                       elem.Simple = true;
-                       return true;
-               }
-
-               MarshalSig ReadMarshalSig (byte [] data)
-               {
-                       int start;
-                       MarshalSig ms = new MarshalSig ((NativeType) Utilities.ReadCompressedInteger (data, 0, out start));
-                       switch (ms.NativeInstrinsic) {
-                       case NativeType.ARRAY:
-                               MarshalSig.Array ar = new MarshalSig.Array ();
-                               ar.ArrayElemType = (NativeType) Utilities.ReadCompressedInteger (data, start, out start);
-                               if (start < data.Length)
-                                       ar.ParamNum = Utilities.ReadCompressedInteger (data, start, out start);
-                               if (start < data.Length)
-                                       ar.NumElem = Utilities.ReadCompressedInteger (data, start, out start);
-                               if (start < data.Length)
-                                       ar.ElemMult = Utilities.ReadCompressedInteger (data, start, out start);
-                               ms.Spec = ar;
-                               break;
-                       case NativeType.CUSTOMMARSHALER:
-                               MarshalSig.CustomMarshaler cm = new MarshalSig.CustomMarshaler ();
-                               cm.Guid = ReadUTF8String (data, start, out start);
-                               cm.UnmanagedType = ReadUTF8String (data, start, out start);
-                               cm.ManagedType = ReadUTF8String (data, start, out start);
-                               cm.Cookie = ReadUTF8String (data, start, out start);
-                               ms.Spec = cm;
-                               break;
-                       case NativeType.FIXEDARRAY:
-                               MarshalSig.FixedArray fa = new MarshalSig.FixedArray ();
-                               fa.NumElem = Utilities.ReadCompressedInteger (data, start, out start);
-                               if (start < data.Length)
-                                       fa.ArrayElemType = (NativeType) Utilities.ReadCompressedInteger (data, start, out start);
-                               ms.Spec = fa;
-                               break;
-                       case NativeType.SAFEARRAY:
-                               MarshalSig.SafeArray sa = new MarshalSig.SafeArray ();
-                               if (start < data.Length)
-                                       sa.ArrayElemType = (VariantType) Utilities.ReadCompressedInteger (data, start, out start);
-                               ms.Spec = sa;
-                               break;
-                       case NativeType.FIXEDSYSSTRING:
-                               MarshalSig.FixedSysString fss = new MarshalSig.FixedSysString ();
-                               if (start < data.Length)
-                                       fss.Size = Utilities.ReadCompressedInteger (data, start, out start);
-                               ms.Spec = fss;
-                               break;
-                       }
-                       return ms;
-               }
-
-               static internal string ReadUTF8String (byte [] data, BinaryReader br)
-               {
-                       int start = (int)br.BaseStream.Position;
-                       string val = ReadUTF8String (data, start, out start);
-                       br.BaseStream.Position = start;
-                       return val;
-               }
-
-               static internal string ReadUTF8String (byte [] data, int pos, out int start)
-               {
-                       int length = Utilities.ReadCompressedInteger (data, pos, out start);
-                       pos = start;
-                       start += length;
-                       // COMPACT FRAMEWORK NOTE: Encoding.GetString (byte[]) is not supported.
-                       return Encoding.UTF8.GetString (data, pos, length);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureWriter.cs
deleted file mode 100644 (file)
index f1542c4..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-//
-// SignatureWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using System;
-       using System.Text;
-
-       using Mono.Cecil;
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Metadata;
-
-       internal sealed class SignatureWriter : BaseSignatureVisitor {
-
-               MetadataWriter m_mdWriter;
-               MemoryBinaryWriter m_sigWriter;
-
-               public SignatureWriter (MetadataWriter mdWriter)
-               {
-                       m_mdWriter = mdWriter;
-                       m_sigWriter = new MemoryBinaryWriter ();
-               }
-
-               uint GetPointer ()
-               {
-                       return m_mdWriter.AddBlob (m_sigWriter.ToArray ());
-               }
-
-               public uint AddMethodDefSig (MethodDefSig methSig)
-               {
-                       return AddSignature (methSig);
-               }
-
-               public uint AddMethodRefSig (MethodRefSig methSig)
-               {
-                       return AddSignature (methSig);
-               }
-
-               public uint AddPropertySig (PropertySig ps)
-               {
-                       return AddSignature (ps);
-               }
-
-               public uint AddFieldSig (FieldSig fSig)
-               {
-                       return AddSignature (fSig);
-               }
-
-               public uint AddLocalVarSig (LocalVarSig lvs)
-               {
-                       return AddSignature (lvs);
-               }
-
-               uint AddSignature (Signature s)
-               {
-                       m_sigWriter.Empty ();
-                       s.Accept (this);
-                       return GetPointer ();
-               }
-
-               public uint AddTypeSpec (TypeSpec ts)
-               {
-                       m_sigWriter.Empty ();
-                       Write (ts);
-                       return GetPointer ();
-               }
-
-               public uint AddMethodSpec (MethodSpec ms)
-               {
-                       m_sigWriter.Empty ();
-                       Write (ms);
-                       return GetPointer ();
-               }
-
-               public uint AddMarshalSig (MarshalSig ms)
-               {
-                       m_sigWriter.Empty ();
-                       Write (ms);
-                       return GetPointer ();
-               }
-
-               public uint AddCustomAttribute (CustomAttrib ca, MethodReference ctor)
-               {
-                       CompressCustomAttribute (ca, ctor, m_sigWriter);
-                       return GetPointer ();
-               }
-
-               public byte [] CompressCustomAttribute (CustomAttrib ca, MethodReference ctor)
-               {
-                       MemoryBinaryWriter writer = new MemoryBinaryWriter ();
-                       CompressCustomAttribute (ca, ctor, writer);
-                       return writer.ToArray ();
-               }
-
-               public byte [] CompressFieldSig (FieldSig field)
-               {
-                       m_sigWriter.Empty ();
-                       VisitFieldSig (field);
-                       return m_sigWriter.ToArray ();
-               }
-
-               public byte [] CompressLocalVar (LocalVarSig.LocalVariable var)
-               {
-                       m_sigWriter.Empty ();
-                       Write (var);
-                       return m_sigWriter.ToArray ();
-               }
-
-               void CompressCustomAttribute (CustomAttrib ca, MethodReference ctor, MemoryBinaryWriter writer)
-               {
-                       m_sigWriter.Empty ();
-                       Write (ca, ctor, writer);
-               }
-
-               public override void VisitMethodDefSig (MethodDefSig methodDef)
-               {
-                       m_sigWriter.Write (methodDef.CallingConvention);
-                       if (methodDef.GenericParameterCount > 0)
-                               Write (methodDef.GenericParameterCount);
-                       Write (methodDef.ParamCount);
-                       Write (methodDef.RetType);
-                       Write (methodDef.Parameters, methodDef.Sentinel);
-               }
-
-               public override void VisitMethodRefSig (MethodRefSig methodRef)
-               {
-                       m_sigWriter.Write (methodRef.CallingConvention);
-                       Write (methodRef.ParamCount);
-                       Write (methodRef.RetType);
-                       Write (methodRef.Parameters, methodRef.Sentinel);
-               }
-
-               public override void VisitFieldSig (FieldSig field)
-               {
-                       m_sigWriter.Write (field.CallingConvention);
-                       Write (field.CustomMods);
-                       Write (field.Type);
-               }
-
-               public override void VisitPropertySig (PropertySig property)
-               {
-                       m_sigWriter.Write (property.CallingConvention);
-                       Write (property.ParamCount);
-                       Write (property.CustomMods);
-                       Write (property.Type);
-                       Write (property.Parameters);
-               }
-
-               public override void VisitLocalVarSig (LocalVarSig localvar)
-               {
-                       m_sigWriter.Write (localvar.CallingConvention);
-                       Write (localvar.Count);
-                       Write (localvar.LocalVariables);
-               }
-
-               void Write (LocalVarSig.LocalVariable [] vars)
-               {
-                       foreach (LocalVarSig.LocalVariable var in vars)
-                               Write (var);
-               }
-
-               void Write (LocalVarSig.LocalVariable var)
-               {
-                       Write (var.CustomMods);
-                       if ((var.Constraint & Constraint.Pinned) != 0)
-                               Write (ElementType.Pinned);
-                       if (var.ByRef)
-                               Write (ElementType.ByRef);
-                       Write (var.Type);
-               }
-
-               void Write (RetType retType)
-               {
-                       Write (retType.CustomMods);
-                       if (retType.Void)
-                               Write (ElementType.Void);
-                       else if (retType.TypedByRef)
-                               Write (ElementType.TypedByRef);
-                       else if (retType.ByRef) {
-                               Write (ElementType.ByRef);
-                               Write (retType.Type);
-                       } else
-                               Write (retType.Type);
-               }
-
-               void Write (Param [] parameters, int sentinel)
-               {
-                       for (int i = 0; i < parameters.Length; i++) {
-                               if (i == sentinel)
-                                       Write (ElementType.Sentinel);
-
-                               Write (parameters [i]);
-                       }
-               }
-
-               void Write (Param [] parameters)
-               {
-                       foreach (Param p in parameters)
-                               Write (p);
-               }
-
-               void Write (ElementType et)
-               {
-                       Write ((int) et);
-               }
-
-               void Write (SigType t)
-               {
-                       Write ((int) t.ElementType);
-
-                       switch (t.ElementType) {
-                       case ElementType.ValueType :
-                               Write ((int) Utilities.CompressMetadataToken (
-                                               CodedIndex.TypeDefOrRef, ((VALUETYPE) t).Type));
-                               break;
-                       case ElementType.Class :
-                               Write ((int) Utilities.CompressMetadataToken (
-                                               CodedIndex.TypeDefOrRef, ((CLASS) t).Type));
-                               break;
-                       case ElementType.Ptr :
-                               PTR p = (PTR) t;
-                               if (p.Void)
-                                       Write (ElementType.Void);
-                               else {
-                                       Write (p.CustomMods);
-                                       Write (p.PtrType);
-                               }
-                               break;
-                       case ElementType.FnPtr :
-                               FNPTR fp = (FNPTR) t;
-                               if (fp.Method is MethodRefSig)
-                                       (fp.Method as MethodRefSig).Accept (this);
-                               else
-                                       (fp.Method as MethodDefSig).Accept (this);
-                               break;
-                       case ElementType.Array :
-                               ARRAY ary = (ARRAY) t;
-                               Write (ary.CustomMods);
-                               ArrayShape shape = ary.Shape;
-                               Write (ary.Type);
-                               Write (shape.Rank);
-                               Write (shape.NumSizes);
-                               foreach (int size in shape.Sizes)
-                                       Write (size);
-                               Write (shape.NumLoBounds);
-                               foreach (int loBound in shape.LoBounds)
-                                       Write (loBound);
-                               break;
-                       case ElementType.SzArray :
-                               SZARRAY sa = (SZARRAY) t;
-                               Write (sa.CustomMods);
-                               Write (sa.Type);
-                               break;
-                       case ElementType.Var :
-                               Write (((VAR) t).Index);
-                               break;
-                       case ElementType.MVar :
-                               Write (((MVAR) t).Index);
-                               break;
-                       case ElementType.GenericInst :
-                               GENERICINST gi = t as GENERICINST;
-                               Write (gi.ValueType ? ElementType.ValueType : ElementType.Class);
-                               Write ((int) Utilities.CompressMetadataToken (
-                                               CodedIndex.TypeDefOrRef, gi.Type));
-                               Write (gi.Signature);
-                               break;
-                       }
-               }
-
-               void Write (TypeSpec ts)
-               {
-                       Write (ts.CustomMods);
-                       Write (ts.Type);
-               }
-
-               void Write (MethodSpec ms)
-               {
-                       Write (0x0a);
-                       Write (ms.Signature);
-               }
-
-               void Write (GenericInstSignature gis)
-               {
-                       Write (gis.Arity);
-                       for (int i = 0; i < gis.Arity; i++)
-                               Write (gis.Types [i]);
-               }
-
-               void Write (GenericArg arg)
-               {
-                       Write (arg.CustomMods);
-                       Write (arg.Type);
-               }
-
-               void Write (Param p)
-               {
-                       Write (p.CustomMods);
-                       if (p.TypedByRef)
-                               Write (ElementType.TypedByRef);
-                       else if (p.ByRef) {
-                               Write (ElementType.ByRef);
-                               Write (p.Type);
-                       } else
-                               Write (p.Type);
-               }
-
-               void Write (CustomMod [] customMods)
-               {
-                       foreach (CustomMod cm in customMods)
-                               Write (cm);
-               }
-
-               void Write (CustomMod cm)
-               {
-                       switch (cm.CMOD) {
-                       case CustomMod.CMODType.OPT :
-                               Write (ElementType.CModOpt);
-                               break;
-                       case CustomMod.CMODType.REQD :
-                               Write (ElementType.CModReqD);
-                               break;
-                       }
-
-                       Write ((int) Utilities.CompressMetadataToken (
-                                       CodedIndex.TypeDefOrRef, cm.TypeDefOrRef));
-               }
-
-               void Write (MarshalSig ms)
-               {
-                       Write ((int) ms.NativeInstrinsic);
-                       switch (ms.NativeInstrinsic) {
-                       case NativeType.ARRAY :
-                               MarshalSig.Array ar = (MarshalSig.Array) ms.Spec;
-                               Write ((int) ar.ArrayElemType);
-                               if (ar.ParamNum != -1)
-                                       Write (ar.ParamNum);
-                               if (ar.NumElem != -1)
-                                       Write (ar.NumElem);
-                               if (ar.ElemMult != -1)
-                                       Write (ar.ElemMult);
-                               break;
-                       case NativeType.CUSTOMMARSHALER :
-                               MarshalSig.CustomMarshaler cm = (MarshalSig.CustomMarshaler) ms.Spec;
-                               Write (cm.Guid);
-                               Write (cm.UnmanagedType);
-                               Write (cm.ManagedType);
-                               Write (cm.Cookie);
-                               break;
-                       case NativeType.FIXEDARRAY :
-                               MarshalSig.FixedArray fa = (MarshalSig.FixedArray) ms.Spec;
-                               Write (fa.NumElem);
-                               if (fa.ArrayElemType != NativeType.NONE)
-                                       Write ((int) fa.ArrayElemType);
-                               break;
-                       case NativeType.SAFEARRAY :
-                               Write ((int) ((MarshalSig.SafeArray) ms.Spec).ArrayElemType);
-                               break;
-                       case NativeType.FIXEDSYSSTRING :
-                               Write (((MarshalSig.FixedSysString) ms.Spec).Size);
-                               break;
-                       }
-               }
-
-               void Write (CustomAttrib ca, MethodReference ctor, MemoryBinaryWriter writer)
-               {
-                       if (ca == null)
-                               return;
-
-                       if (ca.Prolog != CustomAttrib.StdProlog)
-                               return;
-
-                       writer.Write (ca.Prolog);
-
-                       for (int i = 0; i < ctor.Parameters.Count; i++)
-                               Write (ca.FixedArgs [i], writer);
-
-                       writer.Write (ca.NumNamed);
-
-                       for (int i = 0; i < ca.NumNamed; i++)
-                               Write (ca.NamedArgs [i], writer);
-               }
-
-               void Write (CustomAttrib.FixedArg fa, MemoryBinaryWriter writer)
-               {
-                       if (fa.SzArray)
-                               writer.Write (fa.NumElem);
-
-                       foreach (CustomAttrib.Elem elem in fa.Elems)
-                               Write (elem, writer);
-               }
-
-               static string GetEnumFullName (TypeReference type)
-               {
-                       string fullname = type.FullName;
-
-                       if (type.IsNested)
-                               fullname = fullname.Replace ('/', '+');
-
-                       if (type is TypeDefinition)
-                               return fullname;
-
-                       return string.Concat (fullname, ", ", type.Module.Assembly.Name.FullName);
-               }
-
-               void Write (CustomAttrib.NamedArg na, MemoryBinaryWriter writer)
-               {
-                       if (na.Field)
-                               writer.Write ((byte) 0x53);
-                       else if (na.Property)
-                               writer.Write ((byte) 0x54);
-                       else
-                               throw new MetadataFormatException ("Unknown kind of namedarg");
-
-                       if (na.FieldOrPropType == ElementType.Class)
-                               na.FieldOrPropType = ElementType.Enum;
-
-                       if (na.FixedArg.SzArray)
-                               writer.Write ((byte) ElementType.SzArray);
-
-                       if (na.FieldOrPropType == ElementType.Object)
-                               writer.Write ((byte) ElementType.Boxed);
-                       else
-                               writer.Write ((byte) na.FieldOrPropType);
-
-                       if (na.FieldOrPropType == ElementType.Enum)
-                               Write (GetEnumFullName (na.FixedArg.Elems [0].ElemType));
-
-                       Write (na.FieldOrPropName);
-
-                       Write (na.FixedArg, writer);
-               }
-
-               static ElementType GetElementTypeFromTypeCode (TypeCode tc)
-               {
-                       switch (tc) {
-                       case TypeCode.Byte:
-                               return ElementType.U1;
-                       case TypeCode.SByte:
-                               return ElementType.I1;
-                       case TypeCode.Int16:
-                               return ElementType.I2;
-                       case TypeCode.UInt16:
-                               return ElementType.U2;
-                       case TypeCode.Int32:
-                               return ElementType.I4;
-                       case TypeCode.UInt32:
-                               return ElementType.U4;
-                       case TypeCode.Int64:
-                               return ElementType.I8;
-                       case TypeCode.UInt64:
-                               return ElementType.U8;
-                       default:
-                               throw new ArgumentException ("tc");
-                       }
-               }
-
-               void Write (CustomAttrib.Elem elem, MemoryBinaryWriter writer)
-               {
-                       if (elem.String)
-                               elem.FieldOrPropType = ElementType.String;
-                       else if (elem.Type)
-                               elem.FieldOrPropType = ElementType.Type;
-
-                       if (elem.FieldOrPropType == ElementType.Class) // an enum in fact
-                               elem.FieldOrPropType = GetElementTypeFromTypeCode (Type.GetTypeCode (elem.Value.GetType ()));
-
-                       if (elem.BoxedValueType)
-                               Write (elem.FieldOrPropType);
-
-                       switch (elem.FieldOrPropType) {
-                       case ElementType.Boolean :
-                               writer.Write ((byte) ((bool) elem.Value ? 1 : 0));
-                               break;
-                       case ElementType.Char :
-                               writer.Write ((ushort) (char) elem.Value);
-                               break;
-                       case ElementType.R4 :
-                               writer.Write ((float) elem.Value);
-                               break;
-                       case ElementType.R8 :
-                               writer.Write ((double) elem.Value);
-                               break;
-                       case ElementType.I1 :
-                               writer.Write ((sbyte) elem.Value);
-                               break;
-                       case ElementType.I2 :
-                               writer.Write ((short) elem.Value);
-                               break;
-                       case ElementType.I4 :
-                               writer.Write ((int) elem.Value);
-                               break;
-                       case ElementType.I8 :
-                               writer.Write ((long) elem.Value);
-                               break;
-                       case ElementType.U1 :
-                               writer.Write ((byte) elem.Value);
-                               break;
-                       case ElementType.U2 :
-                               writer.Write ((ushort) elem.Value);
-                               break;
-                       case ElementType.U4 :
-                               writer.Write ((uint) elem.Value);
-                               break;
-                       case ElementType.U8 :
-                               writer.Write ((ulong) elem.Value);
-                               break;
-                       case ElementType.String :
-                       case ElementType.Type :
-                               string s = elem.Value as string;
-                               if (s == null)
-                                       writer.Write ((byte) 0xff);
-                               else if (s.Length == 0)
-                                       writer.Write ((byte) 0x00);
-                               else
-                                       Write (s);
-                               break;
-                       case ElementType.Object :
-                               if (elem.Value != null)
-                                       throw new NotSupportedException ("Unknown state");
-                               writer.Write ((byte) 0xff);
-                               break;
-                       default :
-                               throw new NotImplementedException ("WriteElem " + elem.FieldOrPropType.ToString ());
-                       }
-               }
-
-               void Write (string s)
-               {
-                       byte [] str = Encoding.UTF8.GetBytes (s);
-                       Write (str.Length);
-                       m_sigWriter.Write (str);
-               }
-
-               void Write (int i)
-               {
-                       Utilities.WriteCompressedInteger (m_sigWriter, i);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SzArray.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SzArray.cs
deleted file mode 100644 (file)
index 08ad8f1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// SzArray.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class SZARRAY : SigType {
-
-               public CustomMod [] CustomMods;
-               public SigType Type;
-
-               public SZARRAY () : base (ElementType.SzArray)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/TypeSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/TypeSpec.cs
deleted file mode 100644 (file)
index 7664df3..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// TypeSpec.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       internal sealed class TypeSpec {
-
-               public CustomMod [] CustomMods;
-               public SigType Type;
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ValueType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ValueType.cs
deleted file mode 100644 (file)
index 36b2661..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ValueType.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class VALUETYPE : SigType {
-
-               public MetadataToken Type;
-
-               public VALUETYPE () : base (ElementType.ValueType)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Var.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Var.cs
deleted file mode 100644 (file)
index 97b35b6..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// Var.cs
-//
-// Author:
-//     Martin Baulig  <martin@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-       using Mono.Cecil.Metadata;
-
-       internal sealed class VAR : SigType {
-
-               public int Index;
-
-               public VAR (int index) : base (ElementType.Var)
-               {
-                       this.Index = index;
-               }
-       }
-}
index e8585fa48e5009db3174aa292ae49238a94d6432..fb0cab11f5ab82696aec8ea98746c61d4887bbe4 100644 (file)
@@ -1,33 +1,29 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="2.0">
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <ProductVersion>9.0.30729</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}</ProjectGuid>
+    <ProjectGuid>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</ProjectGuid>
     <OutputType>Library</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Mono.Cecil</RootNamespace>
     <AssemblyName>Mono.Cecil</AssemblyName>
-    <StartupObject>
-    </StartupObject>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\mono.snk</AssemblyOriginatorKeyFile>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>2.0</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
+    <AssemblyOriginatorKeyFile>mono.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>TRACE;DEBUG</DefineConstants>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug - No System.dll|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug - No System.dll\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NO_SYSTEM_DLL;NET_2_0</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ItemGroup>
-    <Compile Include="Mono.Cecil.Binary\BaseImageVisitor.cs" />
-    <Compile Include="Mono.Cecil.Binary\CLIHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\CopyImageVisitor.cs" />
-    <Compile Include="Mono.Cecil.Binary\DataDirectory.cs" />
-    <Compile Include="Mono.Cecil.Binary\DebugHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\DebugStoreType.cs" />
-    <Compile Include="Mono.Cecil.Binary\DOSHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\ExportTable.cs" />
-    <Compile Include="Mono.Cecil.Binary\IBinaryVisitable.cs" />
-    <Compile Include="Mono.Cecil.Binary\IBinaryVisitor.cs" />
-    <Compile Include="Mono.Cecil.Binary\IHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\Image.cs" />
-    <Compile Include="Mono.Cecil.Binary\ImageCharacteristics.cs" />
-    <Compile Include="Mono.Cecil.Binary\ImageFormatException.cs" />
-    <Compile Include="Mono.Cecil.Binary\ImageInitializer.cs" />
-    <Compile Include="Mono.Cecil.Binary\ImageReader.cs" />
-    <Compile Include="Mono.Cecil.Binary\ImageWriter.cs" />
-    <Compile Include="Mono.Cecil.Binary\Imports.cs" />
-    <Compile Include="Mono.Cecil.Binary\MemoryBinaryWriter.cs" />
-    <Compile Include="Mono.Cecil.Binary\PEFileHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\PEOptionalHeader.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceDataEntry.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryEntry.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryString.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryTable.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceNode.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceReader.cs" />
-    <Compile Include="Mono.Cecil.Binary\ResourceWriter.cs" />
-    <Compile Include="Mono.Cecil.Binary\RuntimeImage.cs" />
-    <Compile Include="Mono.Cecil.Binary\RVA.cs" />
-    <Compile Include="Mono.Cecil.Binary\Section.cs" />
-    <Compile Include="Mono.Cecil.Binary\SectionCharacteristics.cs" />
-    <Compile Include="Mono.Cecil.Binary\SectionCollection.cs" />
-    <Compile Include="Mono.Cecil.Binary\SubSystem.cs" />
-    <Compile Include="Mono.Cecil.Cil\BaseCodeVisitor.cs" />
-    <Compile Include="Mono.Cecil.Cil\CilWorker.cs" />
     <Compile Include="Mono.Cecil.Cil\Code.cs" />
-    <Compile Include="Mono.Cecil.Cil\CodeReader.cs" />
     <Compile Include="Mono.Cecil.Cil\CodeWriter.cs" />
-    <Compile Include="Mono.Cecil.Cil\DocumentType.cs" />
+    <Compile Include="Mono.Cecil.Cil\CodeReader.cs" />
     <Compile Include="Mono.Cecil.Cil\Document.cs" />
-    <Compile Include="Mono.Cecil.Cil\DocumentHashAlgorithm.cs" />
-    <Compile Include="Mono.Cecil.Cil\DocumentLanguage.cs" />
-    <Compile Include="Mono.Cecil.Cil\DocumentLanguageVendor.cs" />
     <Compile Include="Mono.Cecil.Cil\ExceptionHandler.cs" />
-    <Compile Include="Mono.Cecil.Cil\ExceptionHandlerCollection.cs" />
-    <Compile Include="Mono.Cecil.Cil\ExceptionHandlerType.cs" />
-    <Compile Include="Mono.Cecil.Cil\FlowControl.cs" />
-    <Compile Include="Mono.Cecil.Cil\GuidAttribute.cs" />
-    <Compile Include="Mono.Cecil.Cil\ICodeVisitable.cs" />
-    <Compile Include="Mono.Cecil.Cil\ICodeVisitor.cs" />
+    <Compile Include="Mono.Cecil.Cil\ILProcessor.cs" />
     <Compile Include="Mono.Cecil.Cil\Instruction.cs" />
-    <Compile Include="Mono.Cecil.Cil\InstructionCollection.cs" />
-    <Compile Include="Mono.Cecil.Cil\IScopeProvider.cs" />
-    <Compile Include="Mono.Cecil.Cil\ISymbolReader.cs" />
-    <Compile Include="Mono.Cecil.Cil\ISymbolStoreFactory.cs" />
-    <Compile Include="Mono.Cecil.Cil\ISymbolWriter.cs" />
-    <Compile Include="Mono.Cecil.Cil\IVariableDefinitionProvider.cs" />
     <Compile Include="Mono.Cecil.Cil\MethodBody.cs" />
-    <Compile Include="Mono.Cecil.Cil\MethodDataSection.cs" />
-    <Compile Include="Mono.Cecil.Cil\MethodHeader.cs" />
     <Compile Include="Mono.Cecil.Cil\OpCode.cs" />
     <Compile Include="Mono.Cecil.Cil\OpCodes.cs" />
-    <Compile Include="Mono.Cecil.Cil\OpCodeNames.cs" />
-    <Compile Include="Mono.Cecil.Cil\OpCodeType.cs" />
-    <Compile Include="Mono.Cecil.Cil\OperandType.cs" />
-    <Compile Include="Mono.Cecil.Cil\Scope.cs" />
-    <Compile Include="Mono.Cecil.Cil\ScopeCollection.cs" />
     <Compile Include="Mono.Cecil.Cil\SequencePoint.cs" />
-    <Compile Include="Mono.Cecil.Cil\StackBehaviour.cs" />
-    <Compile Include="Mono.Cecil.Cil\SymbolStoreHelper.cs" />
+    <Compile Include="Mono.Cecil.Cil\Symbols.cs" />
     <Compile Include="Mono.Cecil.Cil\VariableDefinition.cs" />
-    <Compile Include="Mono.Cecil.Cil\VariableDefinitionCollection.cs" />
     <Compile Include="Mono.Cecil.Cil\VariableReference.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Assembly.cs" />
-    <Compile Include="Mono.Cecil.Metadata\AssemblyOS.cs" />
-    <Compile Include="Mono.Cecil.Metadata\AssemblyProcessor.cs" />
-    <Compile Include="Mono.Cecil.Metadata\AssemblyRef.cs" />
-    <Compile Include="Mono.Cecil.Metadata\AssemblyRefOS.cs" />
-    <Compile Include="Mono.Cecil.Metadata\AssemblyRefProcessor.cs" />
-    <Compile Include="Mono.Cecil.Metadata\BaseMetadataVisitor.cs" />
     <Compile Include="Mono.Cecil.Metadata\BlobHeap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ClassLayout.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Buffers.cs" />
     <Compile Include="Mono.Cecil.Metadata\CodedIndex.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Constant.cs" />
-    <Compile Include="Mono.Cecil.Metadata\CultureUtils.cs" />
-    <Compile Include="Mono.Cecil.Metadata\CustomAttribute.cs" />
-    <Compile Include="Mono.Cecil.Metadata\DeclSecurity.cs" />
     <Compile Include="Mono.Cecil.Metadata\ElementType.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Event.cs" />
-    <Compile Include="Mono.Cecil.Metadata\EventMap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\EventPtr.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ExportedType.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Field.cs" />
-    <Compile Include="Mono.Cecil.Metadata\FieldLayout.cs" />
-    <Compile Include="Mono.Cecil.Metadata\FieldMarshal.cs" />
-    <Compile Include="Mono.Cecil.Metadata\FieldPtr.cs" />
-    <Compile Include="Mono.Cecil.Metadata\FieldRVA.cs" />
-    <Compile Include="Mono.Cecil.Metadata\File.cs" />
-    <Compile Include="Mono.Cecil.Metadata\GenericParam.cs" />
-    <Compile Include="Mono.Cecil.Metadata\GenericParamConstraint.cs" />
     <Compile Include="Mono.Cecil.Metadata\GuidHeap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\IMetadataRow.cs" />
-    <Compile Include="Mono.Cecil.Metadata\IMetadataTable.cs" />
-    <Compile Include="Mono.Cecil.Metadata\IMetadataVisitable.cs" />
-    <Compile Include="Mono.Cecil.Metadata\IMetadataVisitor.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ImplMap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\InterfaceImpl.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ManifestResource.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MemberRef.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataFormatException.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataHeap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataInitializer.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataReader.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataRoot.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataRowReader.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataRowWriter.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataStream.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataStreamCollection.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataTableReader.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataTableWriter.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Heap.cs" />
     <Compile Include="Mono.Cecil.Metadata\MetadataToken.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MetadataWriter.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Method.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MethodImpl.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MethodPtr.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MethodSemantics.cs" />
-    <Compile Include="Mono.Cecil.Metadata\MethodSpec.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Module.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ModuleRef.cs" />
-    <Compile Include="Mono.Cecil.Metadata\NestedClass.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Param.cs" />
-    <Compile Include="Mono.Cecil.Metadata\ParamPtr.cs" />
-    <Compile Include="Mono.Cecil.Metadata\Property.cs" />
-    <Compile Include="Mono.Cecil.Metadata\PropertyMap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\PropertyPtr.cs" />
-    <Compile Include="Mono.Cecil.Metadata\RowCollection.cs" />
-    <Compile Include="Mono.Cecil.Metadata\StandAloneSig.cs" />
-    <Compile Include="Mono.Cecil.Metadata\StringsHeap.cs" />
-    <Compile Include="Mono.Cecil.Metadata\TableCollection.cs" />
-    <Compile Include="Mono.Cecil.Metadata\TablesHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\Row.cs" />
+    <Compile Include="Mono.Cecil.Metadata\StringHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\TableHeap.cs" />
     <Compile Include="Mono.Cecil.Metadata\TokenType.cs" />
-    <Compile Include="Mono.Cecil.Metadata\TypeDef.cs" />
-    <Compile Include="Mono.Cecil.Metadata\TypeRef.cs" />
-    <Compile Include="Mono.Cecil.Metadata\TypeSpec.cs" />
-    <Compile Include="Mono.Cecil.Metadata\UserStringsHeap.cs" />
+    <Compile Include="Mono.Cecil.Metadata\UserStringHeap.cs" />
     <Compile Include="Mono.Cecil.Metadata\Utilities.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Array.cs" />
-    <Compile Include="Mono.Cecil.Signatures\ArrayShape.cs" />
-    <Compile Include="Mono.Cecil.Signatures\BaseSignatureVisitor.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Class.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Constraint.cs" />
-    <Compile Include="Mono.Cecil.Signatures\CustomAttrib.cs" />
-    <Compile Include="Mono.Cecil.Signatures\CustomMod.cs" />
-    <Compile Include="Mono.Cecil.Signatures\FieldSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\FnPtr.cs" />
-    <Compile Include="Mono.Cecil.Signatures\GenericArg.cs" />
-    <Compile Include="Mono.Cecil.Signatures\GenericInst.cs" />
-    <Compile Include="Mono.Cecil.Signatures\GenericInstSignature.cs" />
-    <Compile Include="Mono.Cecil.Signatures\InputOutputItem.cs" />
-    <Compile Include="Mono.Cecil.Signatures\ISignatureVisitable.cs" />
-    <Compile Include="Mono.Cecil.Signatures\ISignatureVisitor.cs" />
-    <Compile Include="Mono.Cecil.Signatures\LocalVarSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MarshalSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MethodDefSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MethodRefSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MethodSig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MethodSpec.cs" />
-    <Compile Include="Mono.Cecil.Signatures\MVar.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Param.cs" />
-    <Compile Include="Mono.Cecil.Signatures\PropertySig.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Ptr.cs" />
-    <Compile Include="Mono.Cecil.Signatures\RetType.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Signature.cs" />
-    <Compile Include="Mono.Cecil.Signatures\SignatureReader.cs" />
-    <Compile Include="Mono.Cecil.Signatures\SignatureWriter.cs" />
-    <Compile Include="Mono.Cecil.Signatures\SigType.cs" />
-    <Compile Include="Mono.Cecil.Signatures\SzArray.cs" />
-    <Compile Include="Mono.Cecil.Signatures\TypeSpec.cs" />
-    <Compile Include="Mono.Cecil.Signatures\ValueType.cs" />
-    <Compile Include="Mono.Cecil.Signatures\Var.cs" />
-    <Compile Include="Mono.Cecil\AggressiveReflectionReader.cs" />
-    <Compile Include="Mono.Cecil\ArrayDimension.cs" />
-    <Compile Include="Mono.Cecil\ArrayDimensionCollection.cs" />
+    <Compile Include="Mono.Cecil.PE\BinaryStreamReader.cs" />
+    <Compile Include="Mono.Cecil.PE\BinaryStreamWriter.cs" />
+    <Compile Include="Mono.Cecil.PE\ByteBufferEqualityComparer.cs" />
+    <Compile Include="Mono.Cecil.PE\ByteBuffer.cs" />
+    <Compile Include="Mono.Cecil.PE\DataDirectory.cs" />
+    <Compile Include="Mono.Cecil.PE\Image.cs" />
+    <Compile Include="Mono.Cecil.PE\ImageReader.cs" />
+    <Compile Include="Mono.Cecil.PE\ImageWriter.cs" />
+    <Compile Include="Mono.Cecil.PE\Section.cs" />
+    <Compile Include="Mono.Cecil.PE\TextMap.cs" />
     <Compile Include="Mono.Cecil\ArrayType.cs" />
     <Compile Include="Mono.Cecil\AssemblyDefinition.cs" />
-    <Compile Include="Mono.Cecil\AssemblyFactory.cs" />
     <Compile Include="Mono.Cecil\AssemblyFlags.cs" />
     <Compile Include="Mono.Cecil\AssemblyHashAlgorithm.cs" />
     <Compile Include="Mono.Cecil\AssemblyInfo.cs" />
-    <Compile Include="Mono.Cecil\AssemblyKind.cs" />
     <Compile Include="Mono.Cecil\AssemblyLinkedResource.cs" />
     <Compile Include="Mono.Cecil\AssemblyNameDefinition.cs" />
     <Compile Include="Mono.Cecil\AssemblyNameReference.cs" />
-    <Compile Include="Mono.Cecil\AssemblyNameReferenceCollection.cs" />
-    <Compile Include="Mono.Cecil\AssemblyStripper.cs" />
+    <Compile Include="Mono.Cecil\AssemblyReader.cs" />
+    <Compile Include="Mono.Cecil\AssemblyWriter.cs" />
     <Compile Include="Mono.Cecil\BaseAssemblyResolver.cs" />
-    <Compile Include="Mono.Cecil\BaseReflectionReader.cs" />
-    <Compile Include="Mono.Cecil\BaseReflectionVisitor.cs" />
-    <Compile Include="Mono.Cecil\BaseStructureVisitor.cs" />
     <Compile Include="Mono.Cecil\CallSite.cs" />
-    <Compile Include="Mono.Cecil\CompactFrameworkCompatibility.cs" />
-    <Compile Include="Mono.Cecil\Constants.cs" />
-    <Compile Include="Mono.Cecil\ConstraintCollection.cs" />
-    <Compile Include="Mono.Cecil\ConstructorCollection.cs" />
+    <Compile Include="Mono.Cecil\TypeParser.cs" />
+    <Compile Include="Mono.Cecil\Import.cs" />
+    <Compile Include="Mono.Collections.Generic\Collection.cs" />
+    <Compile Include="Mono.Cecil\ExportedType.cs" />
+    <Compile Include="Mono.Cecil\SecurityDeclaration.cs" />
     <Compile Include="Mono.Cecil\CustomAttribute.cs" />
-    <Compile Include="Mono.Cecil\CustomAttributeCollection.cs" />
     <Compile Include="Mono.Cecil\DefaultAssemblyResolver.cs" />
-    <Compile Include="Mono.Cecil\DefaultImporter.cs" />
-    <Compile Include="Mono.Cecil\EmbeddedResource.cs" />
-    <Compile Include="Mono.Cecil\EventAttributes.cs" />
-    <Compile Include="Mono.Cecil\EventDefinition.cs" />
-    <Compile Include="Mono.Cecil\EventDefinitionCollection.cs" />
-    <Compile Include="Mono.Cecil\EventReference.cs" />
-    <Compile Include="Mono.Cecil\ExternTypeCollection.cs" />
-    <Compile Include="Mono.Cecil\FieldAttributes.cs" />
-    <Compile Include="Mono.Cecil\FieldDefinition.cs" />
-    <Compile Include="Mono.Cecil\FieldDefinitionCollection.cs" />
-    <Compile Include="Mono.Cecil\FieldReference.cs" />
     <Compile Include="Mono.Cecil\FileAttributes.cs" />
     <Compile Include="Mono.Cecil\FunctionPointerType.cs" />
-    <Compile Include="Mono.Cecil\GenericArgumentCollection.cs" />
-    <Compile Include="Mono.Cecil\GenericContext.cs" />
     <Compile Include="Mono.Cecil\GenericInstanceMethod.cs" />
     <Compile Include="Mono.Cecil\GenericInstanceType.cs" />
     <Compile Include="Mono.Cecil\GenericParameter.cs" />
     <Compile Include="Mono.Cecil\GenericParameterAttributes.cs" />
-    <Compile Include="Mono.Cecil\GenericParameterCollection.cs" />
-    <Compile Include="Mono.Cecil\HashCodeProvider.cs" />
-    <Compile Include="Mono.Cecil\IAnnotationProvider.cs" />
-    <Compile Include="Mono.Cecil\IAssemblyResolver.cs" />
+    <Compile Include="Mono.Cecil\IConstantProvider.cs" />
     <Compile Include="Mono.Cecil\ICustomAttributeProvider.cs" />
-    <Compile Include="Mono.Cecil\IDetailReader.cs" />
     <Compile Include="Mono.Cecil\IGenericInstance.cs" />
     <Compile Include="Mono.Cecil\IGenericParameterProvider.cs" />
-    <Compile Include="Mono.Cecil\IHasConstant.cs" />
-    <Compile Include="Mono.Cecil\IHasMarshalSpec.cs" />
-    <Compile Include="Mono.Cecil\IHasSecurity.cs" />
-    <Compile Include="Mono.Cecil\IImporter.cs" />
-    <Compile Include="Mono.Cecil\IMemberDefinition.cs" />
-    <Compile Include="Mono.Cecil\IMemberReference.cs" />
-    <Compile Include="Mono.Cecil\IMetadataScope.cs" />
-    <Compile Include="Mono.Cecil\IMetadataTokenProvider.cs" />
+    <Compile Include="Mono.Cecil\IMarshalInfoProvider.cs" />
+    <Compile Include="Mono.Cecil\MarshalInfo.cs" />
+    <Compile Include="Mono.Cecil\MetadataResolver.cs" />
+    <Compile Include="Mono.Cecil\Modifiers.cs" />
+    <Compile Include="Mono.Cecil\NativeType.cs" />
+    <Compile Include="Mono.Cecil\PinnedType.cs" />
+    <Compile Include="Mono.Cecil\MetadataSystem.cs" />
     <Compile Include="Mono.Cecil\IMethodSignature.cs" />
-    <Compile Include="Mono.Cecil\ImportContext.cs" />
-    <Compile Include="Mono.Cecil\InterfaceCollection.cs" />
-    <Compile Include="Mono.Cecil\IReflectionStructureVisitable.cs" />
-    <Compile Include="Mono.Cecil\IReflectionStructureVisitor.cs" />
-    <Compile Include="Mono.Cecil\IReflectionVisitable.cs" />
-    <Compile Include="Mono.Cecil\IReflectionVisitor.cs" />
-    <Compile Include="Mono.Cecil\IRequireResolving.cs" />
+    <Compile Include="Mono.Cecil\ParameterDefinitionCollection.cs" />
+    <Compile Include="Mono.Cecil\EmbeddedResource.cs" />
+    <Compile Include="Mono.Cecil\EventAttributes.cs" />
+    <Compile Include="Mono.Cecil\EventDefinition.cs" />
+    <Compile Include="Mono.Cecil\EventReference.cs" />
+    <Compile Include="Mono.Cecil\FieldAttributes.cs" />
+    <Compile Include="Mono.Cecil\FieldDefinition.cs" />
+    <Compile Include="Mono.Cecil\FieldReference.cs" />
+    <Compile Include="Mono.Cecil\IMemberDefinition.cs" />
     <Compile Include="Mono.Cecil\LinkedResource.cs" />
-    <Compile Include="Mono.Cecil\ManifestResourceAttributes.cs" />
-    <Compile Include="Mono.Cecil\MarshalSpec.cs" />
     <Compile Include="Mono.Cecil\MemberReference.cs" />
-    <Compile Include="Mono.Cecil\MemberReferenceCollection.cs" />
-    <Compile Include="Mono.Cecil\MetadataResolver.cs" />
     <Compile Include="Mono.Cecil\MethodAttributes.cs" />
     <Compile Include="Mono.Cecil\MethodCallingConvention.cs" />
     <Compile Include="Mono.Cecil\MethodDefinition.cs" />
-    <Compile Include="Mono.Cecil\MethodDefinitionCollection.cs" />
     <Compile Include="Mono.Cecil\MethodImplAttributes.cs" />
     <Compile Include="Mono.Cecil\MethodReference.cs" />
     <Compile Include="Mono.Cecil\MethodReturnType.cs" />
     <Compile Include="Mono.Cecil\MethodSemanticsAttributes.cs" />
     <Compile Include="Mono.Cecil\MethodSpecification.cs" />
-    <Compile Include="Mono.Cecil\Modifiers.cs" />
-    <Compile Include="Mono.Cecil\ModuleDefinition.cs" />
-    <Compile Include="Mono.Cecil\ModuleDefinitionCollection.cs" />
-    <Compile Include="Mono.Cecil\ModuleReference.cs" />
-    <Compile Include="Mono.Cecil\ModuleReferenceCollection.cs" />
-    <Compile Include="Mono.Cecil\NameObjectCollectionBase.cs" />
-    <Compile Include="Mono.Cecil\NativeType.cs" />
-    <Compile Include="Mono.Cecil\NestedTypeCollection.cs" />
-    <Compile Include="Mono.Cecil\NullReferenceImporter.cs" />
-    <Compile Include="Mono.Cecil\OverrideCollection.cs" />
     <Compile Include="Mono.Cecil\ParameterAttributes.cs" />
     <Compile Include="Mono.Cecil\ParameterDefinition.cs" />
-    <Compile Include="Mono.Cecil\ParameterDefinitionCollection.cs" />
     <Compile Include="Mono.Cecil\ParameterReference.cs" />
-    <Compile Include="Mono.Cecil\PinnedType.cs" />
     <Compile Include="Mono.Cecil\PInvokeAttributes.cs" />
     <Compile Include="Mono.Cecil\PInvokeInfo.cs" />
     <Compile Include="Mono.Cecil\PointerType.cs" />
     <Compile Include="Mono.Cecil\PropertyAttributes.cs" />
     <Compile Include="Mono.Cecil\PropertyDefinition.cs" />
-    <Compile Include="Mono.Cecil\PropertyDefinitionCollection.cs" />
     <Compile Include="Mono.Cecil\PropertyReference.cs" />
     <Compile Include="Mono.Cecil\ReferenceType.cs" />
-    <Compile Include="Mono.Cecil\ReflectionController.cs" />
-    <Compile Include="Mono.Cecil\ReflectionException.cs" />
-    <Compile Include="Mono.Cecil\ReflectionHelper.cs" />
-    <Compile Include="Mono.Cecil\ReflectionReader.cs" />
-    <Compile Include="Mono.Cecil\ReflectionWriter.cs" />
+    <Compile Include="Mono.Cecil\IMetadataScope.cs" />
+    <Compile Include="Mono.Cecil\IMetadataTokenProvider.cs" />
+    <Compile Include="Mono.Cecil\ManifestResourceAttributes.cs" />
+    <Compile Include="Mono.Cecil\ModuleReference.cs" />
+    <Compile Include="Mono.Cecil\MemberDefinitionCollection.cs" />
+    <Compile Include="Mono.Cecil\ModuleDefinition.cs" />
+    <Compile Include="Mono.Cecil\ModuleKind.cs" />
     <Compile Include="Mono.Cecil\Resource.cs" />
-    <Compile Include="Mono.Cecil\ResourceCollection.cs" />
-    <Compile Include="Mono.Cecil\SecurityAction.cs" />
-    <Compile Include="Mono.Cecil\SecurityDeclaration.cs" />
-    <Compile Include="Mono.Cecil\SecurityDeclarationCollection.cs" />
-    <Compile Include="Mono.Cecil\SecurityDeclarationReader.cs" />
     <Compile Include="Mono.Cecil\SentinelType.cs" />
-    <Compile Include="Mono.Cecil\StructureReader.cs" />
-    <Compile Include="Mono.Cecil\StructureWriter.cs" />
-    <Compile Include="Mono.Cecil\TableComparers.cs" />
     <Compile Include="Mono.Cecil\TargetRuntime.cs" />
     <Compile Include="Mono.Cecil\TypeAttributes.cs" />
     <Compile Include="Mono.Cecil\TypeDefinition.cs" />
     <Compile Include="Mono.Cecil\TypeDefinitionCollection.cs" />
     <Compile Include="Mono.Cecil\TypeReference.cs" />
-    <Compile Include="Mono.Cecil\TypeReferenceCollection.cs" />
     <Compile Include="Mono.Cecil\TypeSpecification.cs" />
+    <Compile Include="Mono.Cecil\TypeSystem.cs" />
     <Compile Include="Mono.Cecil\VariantType.cs" />
-    <Compile Include="Mono.Xml\SecurityParser.cs" />
-    <Compile Include="Mono.Xml\SmallXmlParser.cs" />
+    <Compile Include="Mono.Collections.Generic\ReadOnlyCollection.cs" />
+    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />
+    <Compile Include="Mono.Security.Cryptography\CryptoService.cs" />
+    <Compile Include="System.Runtime.CompilerServices\ExtensionAttribute.cs" />
+    <Compile Include="Mono\Actions.cs" />
+    <Compile Include="Mono\Empty.cs" />
+    <Compile Include="Mono\Funcs.cs" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="AUTHORS" />
-    <None Include="ChangeLog" />
-    <None Include="configure" />
-    <None Include="default.build" />
-    <None Include="Makefile" />
-    <None Include="mono-cecil.pc.in" />
-    <None Include="Mono.Cecil.dll.sources" />
-    <None Include="Mono.Xml\ChangeLog" />
-    <None Include="NEWS" />
-    <None Include="README" />
-    <None Include="TODO" />
+    <Content Include="NOTES.txt" />
   </ItemGroup>
   <ItemGroup>
-    <Reference Include="System" />
+    <None Include="mono.snk" />
   </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
index bb313af6b7a9c221fb7b869b6ad76ace2cdc8d5d..95bb7f353690eb55bd8fa2b60c930cab00fe598a 100644 (file)
-./Mono.Cecil/AggressiveReflectionReader.cs
-./Mono.Cecil/ArrayDimension.cs
-./Mono.Cecil/ArrayDimensionCollection.cs
-./Mono.Cecil/ArrayType.cs
-./Mono.Cecil/AssemblyDefinition.cs
-./Mono.Cecil/AssemblyFactory.cs
-./Mono.Cecil/AssemblyFlags.cs
-./Mono.Cecil/AssemblyHashAlgorithm.cs
-./Mono.Cecil/AssemblyInfo.cs
-./Mono.Cecil/AssemblyKind.cs
-./Mono.Cecil/AssemblyLinkedResource.cs
-./Mono.Cecil/AssemblyNameDefinition.cs
-./Mono.Cecil/AssemblyNameReference.cs
-./Mono.Cecil/AssemblyNameReferenceCollection.cs
-./Mono.Cecil/AssemblyStripper.cs
-./Mono.Cecil/BaseAssemblyResolver.cs
-./Mono.Cecil/BaseReflectionReader.cs
-./Mono.Cecil/BaseReflectionVisitor.cs
-./Mono.Cecil/BaseStructureVisitor.cs
-./Mono.Cecil/CallSite.cs
-./Mono.Cecil/CompactFrameworkCompatibility.cs
-./Mono.Cecil/Constants.cs
-./Mono.Cecil/ConstraintCollection.cs
-./Mono.Cecil/ConstructorCollection.cs
-./Mono.Cecil/CustomAttribute.cs
-./Mono.Cecil/CustomAttributeCollection.cs
-./Mono.Cecil/DefaultAssemblyResolver.cs
-./Mono.Cecil/DefaultImporter.cs
-./Mono.Cecil/EmbeddedResource.cs
+./Mono.Collections.Generic/Collection.cs
+./Mono.Collections.Generic/ReadOnlyCollection.cs
+./Mono.Cecil.PE/ImageWriter.cs
+./Mono.Cecil.PE/BinaryStreamWriter.cs
+./Mono.Cecil.PE/BinaryStreamReader.cs
+./Mono.Cecil.PE/DataDirectory.cs
+./Mono.Cecil.PE/ByteBuffer.cs
+./Mono.Cecil.PE/ByteBufferEqualityComparer.cs
+./Mono.Cecil.PE/TextMap.cs
+./Mono.Cecil.PE/Section.cs
+./Mono.Cecil.PE/Image.cs
+./Mono.Cecil.PE/ImageReader.cs
+./Mono.Cecil.Metadata/TableHeap.cs
+./Mono.Cecil.Metadata/GuidHeap.cs
+./Mono.Cecil.Metadata/Heap.cs
+./Mono.Cecil.Metadata/TokenType.cs
+./Mono.Cecil.Metadata/CodedIndex.cs
+./Mono.Cecil.Metadata/ElementType.cs
+./Mono.Cecil.Metadata/BlobHeap.cs
+./Mono.Cecil.Metadata/Row.cs
+./Mono.Cecil.Metadata/MetadataToken.cs
+./Mono.Cecil.Metadata/UserStringHeap.cs
+./Mono.Cecil.Metadata/Utilities.cs
+./Mono.Cecil.Metadata/StringHeap.cs
+./Mono.Cecil.Metadata/Buffers.cs
+./System.Runtime.CompilerServices/ExtensionAttribute.cs
+./Mono.Security.Cryptography/CryptoService.cs
+./Mono.Security.Cryptography/CryptoConvert.cs
+./Mono/Empty.cs
+./Mono/Funcs.cs
+./Mono/Actions.cs
+./Mono.Cecil.Cil/ILProcessor.cs
+./Mono.Cecil.Cil/VariableReference.cs
+./Mono.Cecil.Cil/OpCodes.cs
+./Mono.Cecil.Cil/MethodBody.cs
+./Mono.Cecil.Cil/Instruction.cs
+./Mono.Cecil.Cil/Code.cs
+./Mono.Cecil.Cil/Symbols.cs
+./Mono.Cecil.Cil/CodeWriter.cs
+./Mono.Cecil.Cil/CodeReader.cs
+./Mono.Cecil.Cil/SequencePoint.cs
+./Mono.Cecil.Cil/Document.cs
+./Mono.Cecil.Cil/OpCode.cs
+./Mono.Cecil.Cil/ExceptionHandler.cs
+./Mono.Cecil.Cil/VariableDefinition.cs
+./Mono.Cecil/ModuleReference.cs
+./Mono.Cecil/TypeParser.cs
+./Mono.Cecil/LinkedResource.cs
+./Mono.Cecil/IMemberDefinition.cs
+./Mono.Cecil/Resource.cs
+./Mono.Cecil/ICustomAttributeProvider.cs
+./Mono.Cecil/MethodReference.cs
 ./Mono.Cecil/EventAttributes.cs
-./Mono.Cecil/EventDefinition.cs
-./Mono.Cecil/EventDefinitionCollection.cs
-./Mono.Cecil/EventReference.cs
-./Mono.Cecil/ExternTypeCollection.cs
-./Mono.Cecil/FieldAttributes.cs
-./Mono.Cecil/FieldDefinition.cs
-./Mono.Cecil/FieldDefinitionCollection.cs
 ./Mono.Cecil/FieldReference.cs
-./Mono.Cecil/FileAttributes.cs
-./Mono.Cecil/FunctionPointerType.cs
-./Mono.Cecil/GenericArgumentCollection.cs
-./Mono.Cecil/GenericContext.cs
-./Mono.Cecil/GenericInstanceMethod.cs
-./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/SentinelType.cs
+./Mono.Cecil/MemberReference.cs
+./Mono.Cecil/AssemblyReader.cs
+./Mono.Cecil/TargetRuntime.cs
+./Mono.Cecil/TypeAttributes.cs
 ./Mono.Cecil/GenericParameter.cs
-./Mono.Cecil/GenericParameterAttributes.cs
-./Mono.Cecil/GenericParameterCollection.cs
-./Mono.Cecil/HashCodeProvider.cs
-./Mono.Cecil/IAnnotationProvider.cs
-./Mono.Cecil/IAssemblyResolver.cs
-./Mono.Cecil/ICustomAttributeProvider.cs
-./Mono.Cecil/IDetailReader.cs
-./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/MethodImplAttributes.cs
+./Mono.Cecil/FileAttributes.cs
+./Mono.Cecil/ManifestResourceAttributes.cs
+./Mono.Cecil/SecurityDeclaration.cs
+./Mono.Cecil/NativeType.cs
+./Mono.Cecil/EventReference.cs
+./Mono.Cecil/AssemblyWriter.cs
+./Mono.Cecil/Modifiers.cs
 ./Mono.Cecil/IGenericParameterProvider.cs
-./Mono.Cecil/IHasConstant.cs
-./Mono.Cecil/IHasMarshalSpec.cs
-./Mono.Cecil/IHasSecurity.cs
-./Mono.Cecil/IImporter.cs
-./Mono.Cecil/IMemberDefinition.cs
-./Mono.Cecil/IMemberReference.cs
+./Mono.Cecil/ParameterDefinition.cs
 ./Mono.Cecil/IMetadataScope.cs
+./Mono.Cecil/AssemblyNameReference.cs
+./Mono.Cecil/ParameterAttributes.cs
+./Mono.Cecil/TypeSpecification.cs
 ./Mono.Cecil/IMetadataTokenProvider.cs
-./Mono.Cecil/IMethodSignature.cs
-./Mono.Cecil/ImportContext.cs
-./Mono.Cecil/InterfaceCollection.cs
-./Mono.Cecil/IReflectionStructureVisitable.cs
-./Mono.Cecil/IReflectionStructureVisitor.cs
-./Mono.Cecil/IReflectionVisitable.cs
-./Mono.Cecil/IReflectionVisitor.cs
-./Mono.Cecil/IRequireResolving.cs
-./Mono.Cecil/LinkedResource.cs
-./Mono.Cecil/ManifestResourceAttributes.cs
-./Mono.Cecil/MarshalSpec.cs
-./Mono.Cecil/MemberReference.cs
-./Mono.Cecil/MemberReferenceCollection.cs
-./Mono.Cecil/MetadataResolver.cs
 ./Mono.Cecil/MethodAttributes.cs
-./Mono.Cecil/MethodCallingConvention.cs
-./Mono.Cecil/MethodDefinition.cs
-./Mono.Cecil/MethodDefinitionCollection.cs
-./Mono.Cecil/MethodImplAttributes.cs
-./Mono.Cecil/MethodReference.cs
+./Mono.Cecil/AssemblyInfo.cs
+./Mono.Cecil/IMarshalInfoProvider.cs
+./Mono.Cecil/PointerType.cs
+./Mono.Cecil/ArrayType.cs
+./Mono.Cecil/TypeDefinition.cs
+./Mono.Cecil/FunctionPointerType.cs
+./Mono.Cecil/MetadataResolver.cs
+./Mono.Cecil/Import.cs
+./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/ExportedType.cs
+./Mono.Cecil/PInvokeAttributes.cs
+./Mono.Cecil/AssemblyHashAlgorithm.cs
 ./Mono.Cecil/MethodReturnType.cs
+./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/AssemblyLinkedResource.cs
+./Mono.Cecil/EventDefinition.cs
+./Mono.Cecil/FieldAttributes.cs
+./Mono.Cecil/AssemblyNameDefinition.cs
+./Mono.Cecil/ParameterDefinitionCollection.cs
+./Mono.Cecil/ModuleDefinition.cs
+./Mono.Cecil/MetadataSystem.cs
+./Mono.Cecil/AssemblyFlags.cs
+./Mono.Cecil/TypeDefinitionCollection.cs
+./Mono.Cecil/CustomAttribute.cs
+./Mono.Cecil/MemberDefinitionCollection.cs
+./Mono.Cecil/PropertyDefinition.cs
+./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/ModuleKind.cs
+./Mono.Cecil/DefaultAssemblyResolver.cs
 ./Mono.Cecil/MethodSemanticsAttributes.cs
+./Mono.Cecil/EmbeddedResource.cs
+./Mono.Cecil/PropertyAttributes.cs
 ./Mono.Cecil/MethodSpecification.cs
-./Mono.Cecil/Modifiers.cs
-./Mono.Cecil/ModuleDefinition.cs
-./Mono.Cecil/ModuleDefinitionCollection.cs
-./Mono.Cecil/ModuleReference.cs
-./Mono.Cecil/ModuleReferenceCollection.cs
-./Mono.Cecil/NativeType.cs
-./Mono.Cecil/NestedTypeCollection.cs
-./Mono.Cecil/NullReferenceImporter.cs
-./Mono.Cecil/OverrideCollection.cs
-./Mono.Cecil/ParameterAttributes.cs
-./Mono.Cecil/ParameterDefinition.cs
-./Mono.Cecil/ParameterDefinitionCollection.cs
-./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/TypeReference.cs
+./Mono.Cecil/IConstantProvider.cs
+./Mono.Cecil/MethodDefinition.cs
 ./Mono.Cecil/PinnedType.cs
-./Mono.Cecil/PInvokeAttributes.cs
-./Mono.Cecil/PInvokeInfo.cs
-./Mono.Cecil/PointerType.cs
-./Mono.Cecil/PropertyAttributes.cs
-./Mono.Cecil/PropertyDefinition.cs
-./Mono.Cecil/PropertyDefinitionCollection.cs
+./Mono.Cecil/VariantType.cs
+./Mono.Cecil/MethodCallingConvention.cs
+./Mono.Cecil/TypeSystem.cs
+./Mono.Cecil/IMethodSignature.cs
+./Mono.Cecil/FieldDefinition.cs
+./Mono.Cecil/BaseAssemblyResolver.cs
 ./Mono.Cecil/PropertyReference.cs
+./Mono.Cecil/MarshalInfo.cs
+./Mono.Cecil/GenericInstanceMethod.cs
 ./Mono.Cecil/ReferenceType.cs
-./Mono.Cecil/ReflectionController.cs
-./Mono.Cecil/ReflectionException.cs
-./Mono.Cecil/ReflectionHelper.cs
-./Mono.Cecil/ReflectionReader.cs
-./Mono.Cecil/ReflectionWriter.cs
-./Mono.Cecil/Resource.cs
-./Mono.Cecil/ResourceCollection.cs
-./Mono.Cecil/SecurityAction.cs
-./Mono.Cecil/SecurityDeclaration.cs
-./Mono.Cecil/SecurityDeclarationCollection.cs
-./Mono.Cecil/SecurityDeclarationReader.cs
-./Mono.Cecil/SentinelType.cs
-./Mono.Cecil/StructureReader.cs
-./Mono.Cecil/StructureWriter.cs
-./Mono.Cecil/TableComparers.cs
-./Mono.Cecil/TargetRuntime.cs
-./Mono.Cecil/TypeAttributes.cs
-./Mono.Cecil/TypeDefinition.cs
-./Mono.Cecil/TypeDefinitionCollection.cs
-./Mono.Cecil/TypeReference.cs
-./Mono.Cecil/TypeReferenceCollection.cs
-./Mono.Cecil/TypeSpecification.cs
-./Mono.Cecil/VariantType.cs
-./Mono.Cecil.Binary/BaseImageVisitor.cs
-./Mono.Cecil.Binary/CLIHeader.cs
-./Mono.Cecil.Binary/CopyImageVisitor.cs
-./Mono.Cecil.Binary/DataDirectory.cs
-./Mono.Cecil.Binary/DebugHeader.cs
-./Mono.Cecil.Binary/DebugStoreType.cs
-./Mono.Cecil.Binary/DOSHeader.cs
-./Mono.Cecil.Binary/ExportTable.cs
-./Mono.Cecil.Binary/IBinaryVisitable.cs
-./Mono.Cecil.Binary/IBinaryVisitor.cs
-./Mono.Cecil.Binary/IHeader.cs
-./Mono.Cecil.Binary/Image.cs
-./Mono.Cecil.Binary/ImageCharacteristics.cs
-./Mono.Cecil.Binary/ImageFormatException.cs
-./Mono.Cecil.Binary/ImageInitializer.cs
-./Mono.Cecil.Binary/ImageReader.cs
-./Mono.Cecil.Binary/ImageWriter.cs
-./Mono.Cecil.Binary/Imports.cs
-./Mono.Cecil.Binary/MemoryBinaryWriter.cs
-./Mono.Cecil.Binary/PEFileHeader.cs
-./Mono.Cecil.Binary/PEOptionalHeader.cs
-./Mono.Cecil.Binary/ResourceDataEntry.cs
-./Mono.Cecil.Binary/ResourceDirectoryEntry.cs
-./Mono.Cecil.Binary/ResourceDirectoryString.cs
-./Mono.Cecil.Binary/ResourceDirectoryTable.cs
-./Mono.Cecil.Binary/ResourceNode.cs
-./Mono.Cecil.Binary/ResourceReader.cs
-./Mono.Cecil.Binary/ResourceWriter.cs
-./Mono.Cecil.Binary/RuntimeImage.cs
-./Mono.Cecil.Binary/RVA.cs
-./Mono.Cecil.Binary/Section.cs
-./Mono.Cecil.Binary/SectionCharacteristics.cs
-./Mono.Cecil.Binary/SectionCollection.cs
-./Mono.Cecil.Binary/SubSystem.cs
-./Mono.Cecil.Metadata/Assembly.cs
-./Mono.Cecil.Metadata/AssemblyOS.cs
-./Mono.Cecil.Metadata/AssemblyProcessor.cs
-./Mono.Cecil.Metadata/AssemblyRef.cs
-./Mono.Cecil.Metadata/AssemblyRefOS.cs
-./Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-./Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-./Mono.Cecil.Metadata/BlobHeap.cs
-./Mono.Cecil.Metadata/ClassLayout.cs
-./Mono.Cecil.Metadata/CodedIndex.cs
-./Mono.Cecil.Metadata/Constant.cs
-./Mono.Cecil.Metadata/CultureUtils.cs
-./Mono.Cecil.Metadata/CustomAttribute.cs
-./Mono.Cecil.Metadata/DeclSecurity.cs
-./Mono.Cecil.Metadata/ElementType.cs
-./Mono.Cecil.Metadata/Event.cs
-./Mono.Cecil.Metadata/EventMap.cs
-./Mono.Cecil.Metadata/EventPtr.cs
-./Mono.Cecil.Metadata/ExportedType.cs
-./Mono.Cecil.Metadata/Field.cs
-./Mono.Cecil.Metadata/FieldLayout.cs
-./Mono.Cecil.Metadata/FieldMarshal.cs
-./Mono.Cecil.Metadata/FieldPtr.cs
-./Mono.Cecil.Metadata/FieldRVA.cs
-./Mono.Cecil.Metadata/File.cs
-./Mono.Cecil.Metadata/GenericParam.cs
-./Mono.Cecil.Metadata/GenericParamConstraint.cs
-./Mono.Cecil.Metadata/GuidHeap.cs
-./Mono.Cecil.Metadata/IMetadataRow.cs
-./Mono.Cecil.Metadata/IMetadataTable.cs
-./Mono.Cecil.Metadata/IMetadataVisitable.cs
-./Mono.Cecil.Metadata/IMetadataVisitor.cs
-./Mono.Cecil.Metadata/ImplMap.cs
-./Mono.Cecil.Metadata/InterfaceImpl.cs
-./Mono.Cecil.Metadata/ManifestResource.cs
-./Mono.Cecil.Metadata/MemberRef.cs
-./Mono.Cecil.Metadata/MetadataFormatException.cs
-./Mono.Cecil.Metadata/MetadataHeap.cs
-./Mono.Cecil.Metadata/MetadataInitializer.cs
-./Mono.Cecil.Metadata/MetadataReader.cs
-./Mono.Cecil.Metadata/MetadataRoot.cs
-./Mono.Cecil.Metadata/MetadataRowReader.cs
-./Mono.Cecil.Metadata/MetadataRowWriter.cs
-./Mono.Cecil.Metadata/MetadataStream.cs
-./Mono.Cecil.Metadata/MetadataStreamCollection.cs
-./Mono.Cecil.Metadata/MetadataTableReader.cs
-./Mono.Cecil.Metadata/MetadataTableWriter.cs
-./Mono.Cecil.Metadata/MetadataToken.cs
-./Mono.Cecil.Metadata/MetadataWriter.cs
-./Mono.Cecil.Metadata/Method.cs
-./Mono.Cecil.Metadata/MethodImpl.cs
-./Mono.Cecil.Metadata/MethodPtr.cs
-./Mono.Cecil.Metadata/MethodSemantics.cs
-./Mono.Cecil.Metadata/MethodSpec.cs
-./Mono.Cecil.Metadata/Module.cs
-./Mono.Cecil.Metadata/ModuleRef.cs
-./Mono.Cecil.Metadata/NestedClass.cs
-./Mono.Cecil.Metadata/Param.cs
-./Mono.Cecil.Metadata/ParamPtr.cs
-./Mono.Cecil.Metadata/Property.cs
-./Mono.Cecil.Metadata/PropertyMap.cs
-./Mono.Cecil.Metadata/PropertyPtr.cs
-./Mono.Cecil.Metadata/RowCollection.cs
-./Mono.Cecil.Metadata/StandAloneSig.cs
-./Mono.Cecil.Metadata/StringsHeap.cs
-./Mono.Cecil.Metadata/TableCollection.cs
-./Mono.Cecil.Metadata/TablesHeap.cs
-./Mono.Cecil.Metadata/TokenType.cs
-./Mono.Cecil.Metadata/TypeDef.cs
-./Mono.Cecil.Metadata/TypeRef.cs
-./Mono.Cecil.Metadata/TypeSpec.cs
-./Mono.Cecil.Metadata/UserStringsHeap.cs
-./Mono.Cecil.Metadata/Utilities.cs
-./Mono.Cecil.Cil/BaseCodeVisitor.cs
-./Mono.Cecil.Cil/CilWorker.cs
-./Mono.Cecil.Cil/Code.cs
-./Mono.Cecil.Cil/CodeReader.cs
-./Mono.Cecil.Cil/CodeWriter.cs
-./Mono.Cecil.Cil/Document.cs
-./Mono.Cecil.Cil/DocumentHashAlgorithm.cs
-./Mono.Cecil.Cil/DocumentLanguage.cs
-./Mono.Cecil.Cil/DocumentLanguageVendor.cs
-./Mono.Cecil.Cil/DocumentType.cs
-./Mono.Cecil.Cil/ExceptionHandler.cs
-./Mono.Cecil.Cil/ExceptionHandlerCollection.cs
-./Mono.Cecil.Cil/ExceptionHandlerType.cs
-./Mono.Cecil.Cil/FlowControl.cs
-./Mono.Cecil.Cil/GuidAttribute.cs
-./Mono.Cecil.Cil/ICodeVisitable.cs
-./Mono.Cecil.Cil/ICodeVisitor.cs
-./Mono.Cecil.Cil/Instruction.cs
-./Mono.Cecil.Cil/InstructionCollection.cs
-./Mono.Cecil.Cil/IScopeProvider.cs
-./Mono.Cecil.Cil/ISymbolReader.cs
-./Mono.Cecil.Cil/ISymbolStoreFactory.cs
-./Mono.Cecil.Cil/ISymbolWriter.cs
-./Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-./Mono.Cecil.Cil/MethodBody.cs
-./Mono.Cecil.Cil/MethodDataSection.cs
-./Mono.Cecil.Cil/MethodHeader.cs
-./Mono.Cecil.Cil/OpCode.cs
-./Mono.Cecil.Cil/OpCodes.cs
-./Mono.Cecil.Cil/OpCodeNames.cs
-./Mono.Cecil.Cil/OpCodeType.cs
-./Mono.Cecil.Cil/OperandType.cs
-./Mono.Cecil.Cil/Scope.cs
-./Mono.Cecil.Cil/ScopeCollection.cs
-./Mono.Cecil.Cil/SequencePoint.cs
-./Mono.Cecil.Cil/StackBehaviour.cs
-./Mono.Cecil.Cil/SymbolStoreHelper.cs
-./Mono.Cecil.Cil/VariableDefinition.cs
-./Mono.Cecil.Cil/VariableDefinitionCollection.cs
-./Mono.Cecil.Cil/VariableReference.cs
-./Mono.Cecil.Signatures/Array.cs
-./Mono.Cecil.Signatures/ArrayShape.cs
-./Mono.Cecil.Signatures/BaseSignatureVisitor.cs
-./Mono.Cecil.Signatures/Class.cs
-./Mono.Cecil.Signatures/Constraint.cs
-./Mono.Cecil.Signatures/CustomAttrib.cs
-./Mono.Cecil.Signatures/CustomMod.cs
-./Mono.Cecil.Signatures/FieldSig.cs
-./Mono.Cecil.Signatures/FnPtr.cs
-./Mono.Cecil.Signatures/GenericArg.cs
-./Mono.Cecil.Signatures/GenericInst.cs
-./Mono.Cecil.Signatures/GenericInstSignature.cs
-./Mono.Cecil.Signatures/InputOutputItem.cs
-./Mono.Cecil.Signatures/ISignatureVisitable.cs
-./Mono.Cecil.Signatures/ISignatureVisitor.cs
-./Mono.Cecil.Signatures/LocalVarSig.cs
-./Mono.Cecil.Signatures/MarshalSig.cs
-./Mono.Cecil.Signatures/MethodDefSig.cs
-./Mono.Cecil.Signatures/MethodRefSig.cs
-./Mono.Cecil.Signatures/MethodSig.cs
-./Mono.Cecil.Signatures/MethodSpec.cs
-./Mono.Cecil.Signatures/MVar.cs
-./Mono.Cecil.Signatures/Param.cs
-./Mono.Cecil.Signatures/PropertySig.cs
-./Mono.Cecil.Signatures/Ptr.cs
-./Mono.Cecil.Signatures/RetType.cs
-./Mono.Cecil.Signatures/Signature.cs
-./Mono.Cecil.Signatures/SignatureReader.cs
-./Mono.Cecil.Signatures/SignatureWriter.cs
-./Mono.Cecil.Signatures/SigType.cs
-./Mono.Cecil.Signatures/SzArray.cs
-./Mono.Cecil.Signatures/TypeSpec.cs
-./Mono.Cecil.Signatures/ValueType.cs
-./Mono.Cecil.Signatures/Var.cs
-./Mono.Xml/SecurityParser.cs
-./Mono.Xml/SmallXmlParser.cs
+./Mono.Cecil/PInvokeInfo.cs
+./Mono.Cecil/CallSite.cs
+./Mono.Cecil/AssemblyDefinition.cs
+./Mono.Cecil/GenericParameterAttributes.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.nunit b/mcs/class/Mono.Cecil/Mono.Cecil.nunit
new file mode 100755 (executable)
index 0000000..36e6808
--- /dev/null
@@ -0,0 +1,9 @@
+<NUnitProject>
+  <Settings activeconfig="Default" />
+  <Config name="Default" binpathtype="Auto">
+    <assembly path="Test\bin\Debug\Mono.Cecil.Tests.dll" />
+    <assembly path="rocks\Test\bin\Debug\Mono.Cecil.Rocks.Tests.dll" />
+    <assembly path="symbols\mdb\Test\bin\Debug\Mono.Cecil.Mdb.Tests.dll" />
+    <assembly path="symbols\pdb\Test\bin\Debug\Mono.Cecil.Pdb.Tests.dll" />
+  </Config>
+</NUnitProject>
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.sln b/mcs/class/Mono.Cecil/Mono.Cecil.sln
new file mode 100644 (file)
index 0000000..4afe99a
--- /dev/null
@@ -0,0 +1,85 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{74E5ECE0-06B4-401C-AEBA-E8DD53E17943}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Symbols", "Symbols", "{929D5B3B-E29A-40CC-93D8-0FF43A6F9FA1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Tests", "Test\Mono.Cecil.Tests.csproj", "{A47B1F49-A81A-43E8-BE6B-DD28AF2C4055}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dbg", "dbg\dbg.csproj", "{89A775F3-64AB-485E-B958-60C25254B732}"
+EndProject
+Project("{00000000-0000-0000-0000-000000000000}") = "Mono.Cecil-SL", "Mono.Cecil-SL.csproj", "{59019979-D337-441B-851F-2133452191A8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb", "symbols\mdb\Mono.Cecil.Mdb.csproj", "{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb.Tests", "symbols\mdb\Test\Mono.Cecil.Mdb.Tests.csproj", "{AC71DF9C-99FA-4A63-990A-66C8010355A6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Pdb", "symbols\pdb\Mono.Cecil.Pdb.csproj", "{63E6915C-7EA4-4D76-AB28-0D7191EEA626}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Pdb.Tests", "symbols\pdb\Test\Mono.Cecil.Pdb.Tests.csproj", "{29300103-CB76-4A1D-B6FD-FFD91C1EC8AA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Rocks.Tests", "rocks\Test\Mono.Cecil.Rocks.Tests.csproj", "{C6CFD7E1-B855-44DC-B4CE-9CD72984AF52}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Rocks", "rocks\Mono.Cecil.Rocks.csproj", "{FBC6DD59-D09D-499C-B03C-99C1C78FF2AC}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A47B1F49-A81A-43E8-BE6B-DD28AF2C4055}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A47B1F49-A81A-43E8-BE6B-DD28AF2C4055}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A47B1F49-A81A-43E8-BE6B-DD28AF2C4055}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A47B1F49-A81A-43E8-BE6B-DD28AF2C4055}.Release|Any CPU.Build.0 = Release|Any CPU
+               {89A775F3-64AB-485E-B958-60C25254B732}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {89A775F3-64AB-485E-B958-60C25254B732}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {89A775F3-64AB-485E-B958-60C25254B732}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {89A775F3-64AB-485E-B958-60C25254B732}.Release|Any CPU.Build.0 = Release|Any CPU
+               {59019979-D337-441B-851F-2133452191A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {59019979-D337-441B-851F-2133452191A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {59019979-D337-441B-851F-2133452191A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {59019979-D337-441B-851F-2133452191A8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AC71DF9C-99FA-4A63-990A-66C8010355A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AC71DF9C-99FA-4A63-990A-66C8010355A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AC71DF9C-99FA-4A63-990A-66C8010355A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AC71DF9C-99FA-4A63-990A-66C8010355A6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {63E6915C-7EA4-4D76-AB28-0D7191EEA626}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {63E6915C-7EA4-4D76-AB28-0D7191EEA626}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {63E6915C-7EA4-4D76-AB28-0D7191EEA626}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {63E6915C-7EA4-4D76-AB28-0D7191EEA626}.Release|Any CPU.Build.0 = Release|Any CPU
+               {29300103-CB76-4A1D-B6FD-FFD91C1EC8AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {29300103-CB76-4A1D-B6FD-FFD91C1EC8AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {29300103-CB76-4A1D-B6FD-FFD91C1EC8AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {29300103-CB76-4A1D-B6FD-FFD91C1EC8AA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C6CFD7E1-B855-44DC-B4CE-9CD72984AF52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C6CFD7E1-B855-44DC-B4CE-9CD72984AF52}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C6CFD7E1-B855-44DC-B4CE-9CD72984AF52}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C6CFD7E1-B855-44DC-B4CE-9CD72984AF52}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FBC6DD59-D09D-499C-B03C-99C1C78FF2AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FBC6DD59-D09D-499C-B03C-99C1C78FF2AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FBC6DD59-D09D-499C-B03C-99C1C78FF2AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FBC6DD59-D09D-499C-B03C-99C1C78FF2AC}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(NestedProjects) = preSolution
+               {A47B1F49-A81A-43E8-BE6B-DD28AF2C4055} = {74E5ECE0-06B4-401C-AEBA-E8DD53E17943}
+               {AC71DF9C-99FA-4A63-990A-66C8010355A6} = {74E5ECE0-06B4-401C-AEBA-E8DD53E17943}
+               {29300103-CB76-4A1D-B6FD-FFD91C1EC8AA} = {74E5ECE0-06B4-401C-AEBA-E8DD53E17943}
+               {C6CFD7E1-B855-44DC-B4CE-9CD72984AF52} = {74E5ECE0-06B4-401C-AEBA-E8DD53E17943}
+               {8559DD7F-A16F-46D0-A05A-9139FAEBA8FD} = {929D5B3B-E29A-40CC-93D8-0FF43A6F9FA1}
+               {63E6915C-7EA4-4D76-AB28-0D7191EEA626} = {929D5B3B-E29A-40CC-93D8-0FF43A6F9FA1}
+       EndGlobalSection
+EndGlobal
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AggressiveReflectionReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AggressiveReflectionReader.cs
deleted file mode 100644 (file)
index adbb872..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-//
-// AggressiveRefletionReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
-
-       internal sealed class AggressiveReflectionReader : ReflectionReader {
-
-               public AggressiveReflectionReader (ModuleDefinition module) : base (module)
-               {
-               }
-
-               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
-               {
-                       base.VisitTypeDefinitionCollection (types);
-
-                       ReadGenericParameterConstraints ();
-                       ReadClassLayoutInfos ();
-                       ReadFieldLayoutInfos ();
-                       ReadPInvokeInfos ();
-                       ReadProperties ();
-                       ReadEvents ();
-                       ReadSemantics ();
-                       ReadInterfaces ();
-                       ReadOverrides ();
-                       ReadSecurityDeclarations ();
-                       ReadCustomAttributes ();
-                       ReadConstants ();
-                       ReadExternTypes ();
-                       ReadMarshalSpecs ();
-                       ReadInitialValues ();
-
-                       m_events = null;
-                       m_properties = null;
-                       m_parameters = null;
-               }
-
-               void ReadGenericParameterConstraints ()
-               {
-                       if (!m_tHeap.HasTable (GenericParamConstraintTable.RId))
-                               return;
-
-                       GenericParamConstraintTable gpcTable = m_tableReader.GetGenericParamConstraintTable ();
-                       for (int i = 0; i < gpcTable.Rows.Count; i++) {
-                               GenericParamConstraintRow gpcRow = gpcTable [i];
-                               GenericParameter gp = GetGenericParameterAt (gpcRow.Owner);
-
-                               gp.Constraints.Add (GetTypeDefOrRef (gpcRow.Constraint, new GenericContext (gp.Owner)));
-                       }
-               }
-
-               void ReadClassLayoutInfos ()
-               {
-                       if (!m_tHeap.HasTable (ClassLayoutTable.RId))
-                               return;
-
-                       ClassLayoutTable clTable = m_tableReader.GetClassLayoutTable ();
-                       for (int i = 0; i < clTable.Rows.Count; i++) {
-                               ClassLayoutRow clRow = clTable [i];
-                               TypeDefinition type = GetTypeDefAt (clRow.Parent);
-                               type.PackingSize = clRow.PackingSize;
-                               type.ClassSize = clRow.ClassSize;
-                       }
-               }
-
-               void ReadFieldLayoutInfos ()
-               {
-                       if (!m_tHeap.HasTable (FieldLayoutTable.RId))
-                               return;
-
-                       FieldLayoutTable flTable = m_tableReader.GetFieldLayoutTable ();
-                       for (int i = 0; i < flTable.Rows.Count; i++) {
-                               FieldLayoutRow flRow = flTable [i];
-                               FieldDefinition field = GetFieldDefAt (flRow.Field);
-                               field.Offset = flRow.Offset;
-                       }
-               }
-
-               void ReadPInvokeInfos ()
-               {
-                       if (!m_tHeap.HasTable (ImplMapTable.RId))
-                               return;
-
-                       ImplMapTable imTable = m_tableReader.GetImplMapTable ();
-                       for (int i = 0; i < imTable.Rows.Count; i++) {
-                               ImplMapRow imRow = imTable [i];
-                               if (imRow.MemberForwarded.TokenType == TokenType.Method) { // should always be true
-                                       MethodDefinition meth = GetMethodDefAt (imRow.MemberForwarded.RID);
-                                       meth.PInvokeInfo = new PInvokeInfo (
-                                               meth, imRow.MappingFlags, MetadataRoot.Streams.StringsHeap [imRow.ImportName],
-                                               Module.ModuleReferences [(int) imRow.ImportScope - 1]);
-                               }
-                       }
-               }
-
-               void ReadProperties ()
-               {
-                       if (!m_tHeap.HasTable (PropertyTable.RId)) {
-                               m_properties = new PropertyDefinition [0];
-                               return;
-                       }
-
-                       PropertyTable propsTable = m_tableReader.GetPropertyTable ();
-                       PropertyMapTable pmapTable = m_tableReader.GetPropertyMapTable ();
-                       m_properties = new PropertyDefinition [propsTable.Rows.Count];
-                       for (int i = 0; i < pmapTable.Rows.Count; i++) {
-                               PropertyMapRow pmapRow = pmapTable [i];
-                               if (pmapRow.Parent == 0)
-                                       continue;
-
-                               TypeDefinition owner = GetTypeDefAt (pmapRow.Parent);
-
-                               GenericContext context = new GenericContext (owner);
-
-                               int start = (int) pmapRow.PropertyList, last = propsTable.Rows.Count + 1, end;
-                               if (i < pmapTable.Rows.Count - 1)
-                                       end = (int) pmapTable [i + 1].PropertyList;
-                               else
-                                       end = last;
-
-                               if (end > last)
-                                       end = last;
-
-                               for (int j = start; j < end; j++) {
-                                       PropertyRow prow = propsTable [j - 1];
-                                       PropertySig psig = m_sigReader.GetPropSig (prow.Type);
-                                       PropertyDefinition pdef = new PropertyDefinition (
-                                               m_root.Streams.StringsHeap [prow.Name],
-                                               GetTypeRefFromSig (psig.Type, context),
-                                       prow.Flags);
-                                       pdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Property, j - 1);
-
-                                       pdef.PropertyType = GetModifierType (psig.CustomMods, pdef.PropertyType);
-
-                                       if (!IsDeleted (pdef))
-                                               owner.Properties.Add (pdef);
-
-                                       m_properties [j - 1] = pdef;
-                               }
-                       }
-               }
-
-               void ReadEvents ()
-               {
-                       if (!m_tHeap.HasTable (EventTable.RId)) {
-                               m_events = new EventDefinition [0];
-                               return;
-                       }
-
-                       EventTable evtTable = m_tableReader.GetEventTable ();
-                       EventMapTable emapTable = m_tableReader.GetEventMapTable ();
-                       m_events = new EventDefinition [evtTable.Rows.Count];
-                       for (int i = 0; i < emapTable.Rows.Count; i++) {
-                               EventMapRow emapRow = emapTable [i];
-                               if (emapRow.Parent == 0)
-                                       continue;
-
-                               TypeDefinition owner = GetTypeDefAt (emapRow.Parent);
-                               GenericContext context = new GenericContext (owner);
-
-                               int start = (int) emapRow.EventList, last = evtTable.Rows.Count + 1, end;
-                               if (i < (emapTable.Rows.Count - 1))
-                                       end = (int) emapTable [i + 1].EventList;
-                               else
-                                       end = last;
-
-                               if (end > last)
-                                       end = last;
-
-                               for (int j = start; j < end; j++) {
-                                       EventRow erow = evtTable [j - 1];
-                                       EventDefinition edef = new EventDefinition (
-                                               m_root.Streams.StringsHeap [erow.Name],
-                                               GetTypeDefOrRef (erow.EventType, context), erow.EventFlags);
-                                       edef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Event, j - 1);
-
-                                       if (!IsDeleted (edef))
-                                               owner.Events.Add (edef);
-
-                                       m_events [j - 1] = edef;
-                               }
-                       }
-               }
-
-               void ReadSemantics ()
-               {
-                       if (!m_tHeap.HasTable (MethodSemanticsTable.RId))
-                               return;
-
-                       MethodSemanticsTable semTable = m_tableReader.GetMethodSemanticsTable ();
-                       for (int i = 0; i < semTable.Rows.Count; i++) {
-                               MethodSemanticsRow semRow = semTable [i];
-                               MethodDefinition semMeth = GetMethodDefAt (semRow.Method);
-                               semMeth.SemanticsAttributes = semRow.Semantics;
-                               switch (semRow.Association.TokenType) {
-                               case TokenType.Event :
-                                       EventDefinition evt = GetEventDefAt (semRow.Association.RID);
-                                       if ((semRow.Semantics & MethodSemanticsAttributes.AddOn) != 0)
-                                               evt.AddMethod = semMeth;
-                                       else if ((semRow.Semantics & MethodSemanticsAttributes.Fire) != 0)
-                                               evt.InvokeMethod = semMeth;
-                                       else if ((semRow.Semantics & MethodSemanticsAttributes.RemoveOn) != 0)
-                                               evt.RemoveMethod = semMeth;
-                                       break;
-                               case TokenType.Property :
-                                       PropertyDefinition prop = GetPropertyDefAt (semRow.Association.RID);
-                                       if ((semRow.Semantics & MethodSemanticsAttributes.Getter) != 0)
-                                               prop.GetMethod = semMeth;
-                                       else if ((semRow.Semantics & MethodSemanticsAttributes.Setter) != 0)
-                                               prop.SetMethod = semMeth;
-                                       break;
-                               }
-                       }
-               }
-
-               void ReadInterfaces ()
-               {
-                       if (!m_tHeap.HasTable (InterfaceImplTable.RId))
-                               return;
-
-                       InterfaceImplTable intfsTable = m_tableReader.GetInterfaceImplTable ();
-                       for (int i = 0; i < intfsTable.Rows.Count; i++) {
-                               InterfaceImplRow intfsRow = intfsTable [i];
-                               TypeDefinition owner = GetTypeDefAt (intfsRow.Class);
-                               owner.Interfaces.Add (GetTypeDefOrRef (intfsRow.Interface, new GenericContext (owner)));
-                       }
-               }
-
-               void ReadOverrides ()
-               {
-                       if (!m_tHeap.HasTable (MethodImplTable.RId))
-                               return;
-
-                       MethodImplTable implTable = m_tableReader.GetMethodImplTable ();
-                       for (int i = 0; i < implTable.Rows.Count; i++) {
-                               MethodImplRow implRow = implTable [i];
-                               if (implRow.MethodBody.TokenType == TokenType.Method) {
-                                       MethodDefinition owner = GetMethodDefAt (implRow.MethodBody.RID);
-                                       switch (implRow.MethodDeclaration.TokenType) {
-                                       case TokenType.Method :
-                                               owner.Overrides.Add (
-                                                       GetMethodDefAt (implRow.MethodDeclaration.RID));
-                                               break;
-                                       case TokenType.MemberRef :
-                                               owner.Overrides.Add (
-                                                       (MethodReference) GetMemberRefAt (
-                                                               implRow.MethodDeclaration.RID, new GenericContext (owner)));
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               void ReadSecurityDeclarations ()
-               {
-                       if (!m_tHeap.HasTable (DeclSecurityTable.RId))
-                               return;
-
-                       DeclSecurityTable dsTable = m_tableReader.GetDeclSecurityTable ();
-                       for (int i = 0; i < dsTable.Rows.Count; i++) {
-                               DeclSecurityRow dsRow = dsTable [i];
-                               SecurityDeclaration dec = BuildSecurityDeclaration (dsRow);
-
-                               if (dsRow.Parent.RID == 0)
-                                       continue;
-
-                               IHasSecurity owner = null;
-                               switch (dsRow.Parent.TokenType) {
-                               case TokenType.Assembly :
-                                       owner = this.Module.Assembly;
-                                       break;
-                               case TokenType.TypeDef :
-                                       owner = GetTypeDefAt (dsRow.Parent.RID);
-                                       break;
-                               case TokenType.Method :
-                                       owner = GetMethodDefAt (dsRow.Parent.RID);
-                                       break;
-                               }
-
-                               owner.SecurityDeclarations.Add (dec);
-                       }
-               }
-
-               void ReadCustomAttributes ()
-               {
-                       if (!m_tHeap.HasTable (CustomAttributeTable.RId))
-                               return;
-
-                       CustomAttributeTable caTable = m_tableReader.GetCustomAttributeTable ();
-                       for (int i = 0; i < caTable.Rows.Count; i++) {
-                               CustomAttributeRow caRow = caTable [i];
-                               MethodReference ctor;
-
-                               if (caRow.Type.RID == 0)
-                                       continue;
-
-                               if (caRow.Type.TokenType == TokenType.Method)
-                                       ctor = GetMethodDefAt (caRow.Type.RID);
-                               else
-                                       ctor = GetMemberRefAt (caRow.Type.RID, new GenericContext ()) as MethodReference;
-
-                               CustomAttrib ca = m_sigReader.GetCustomAttrib (caRow.Value, ctor);
-                               CustomAttribute cattr = BuildCustomAttribute (ctor, m_root.Streams.BlobHeap.Read (caRow.Value), ca);
-
-                               if (caRow.Parent.RID == 0)
-                                       continue;
-
-                               ICustomAttributeProvider owner = null;
-                               switch (caRow.Parent.TokenType) {
-                               case TokenType.Assembly :
-                                       owner = this.Module.Assembly;
-                                       break;
-                               case TokenType.Module :
-                                       owner = this.Module;
-                                       break;
-                               case TokenType.TypeDef :
-                                       owner = GetTypeDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.TypeRef :
-                                       owner = GetTypeRefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.Field :
-                                       owner = GetFieldDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.Method :
-                                       owner = GetMethodDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.Property :
-                                       owner = GetPropertyDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.Event :
-                                       owner = GetEventDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.Param :
-                                       owner = GetParamDefAt (caRow.Parent.RID);
-                                       break;
-                               case TokenType.GenericParam :
-                                       owner = GetGenericParameterAt (caRow.Parent.RID);
-                                       break;
-                               default :
-                                       //TODO: support other ?
-                                       break;
-                               }
-
-                               if (owner != null)
-                                       owner.CustomAttributes.Add (cattr);
-                       }
-               }
-
-               void ReadConstants ()
-               {
-                       if (!m_tHeap.HasTable (ConstantTable.RId))
-                               return;
-
-                       ConstantTable csTable = m_tableReader.GetConstantTable ();
-                       for (int i = 0; i < csTable.Rows.Count; i++) {
-                               ConstantRow csRow = csTable [i];
-
-                               object constant = GetConstant (csRow.Value, csRow.Type);
-
-                               IHasConstant owner = null;
-                               switch (csRow.Parent.TokenType) {
-                               case TokenType.Field :
-                                       owner = GetFieldDefAt (csRow.Parent.RID);
-                                       break;
-                               case TokenType.Property :
-                                       owner = GetPropertyDefAt (csRow.Parent.RID);
-                                       break;
-                               case TokenType.Param :
-                                       owner = GetParamDefAt (csRow.Parent.RID);
-                                       break;
-                               }
-
-                               owner.Constant = constant;
-                       }
-               }
-
-               void ReadExternTypes ()
-               {
-                       base.VisitExternTypeCollection (Module.ExternTypes);
-               }
-
-               void ReadMarshalSpecs ()
-               {
-                       if (!m_tHeap.HasTable (FieldMarshalTable.RId))
-                               return;
-
-                       FieldMarshalTable fmTable = m_tableReader.GetFieldMarshalTable ();
-                       for (int i = 0; i < fmTable.Rows.Count; i++) {
-                               FieldMarshalRow fmRow = fmTable [i];
-
-                               if (fmRow.Parent.RID == 0)
-                                       continue;
-
-                               IHasMarshalSpec owner = null;
-                               switch (fmRow.Parent.TokenType) {
-                               case TokenType.Field:
-                                       owner = GetFieldDefAt (fmRow.Parent.RID);
-                                       break;
-                               case TokenType.Param:
-                                       owner = GetParamDefAt (fmRow.Parent.RID);
-                                       break;
-                               }
-
-                               owner.MarshalSpec = BuildMarshalDesc (
-                                       m_sigReader.GetMarshalSig (fmRow.NativeType), owner);
-                       }
-               }
-
-               void ReadInitialValues ()
-               {
-                       if (!m_tHeap.HasTable (FieldRVATable.RId))
-                               return;
-
-                       FieldRVATable frTable = m_tableReader.GetFieldRVATable ();
-                       for (int i = 0; i < frTable.Rows.Count; i++) {
-                               FieldRVARow frRow = frTable [i];
-                               FieldDefinition field = GetFieldDefAt (frRow.Field);
-                               field.RVA = frRow.RVA;
-                               SetInitialValue (field);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs
deleted file mode 100644 (file)
index e7dafbb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// ArrayDimension.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public sealed class ArrayDimension {
-
-               int m_lowerBound;
-               int m_upperBound;
-
-               public int LowerBound {
-                       get { return m_lowerBound; }
-                       set { m_lowerBound = value; }
-               }
-
-               public int UpperBound {
-                       get { return m_upperBound; }
-                       set { m_upperBound = value; }
-               }
-
-               public ArrayDimension (int lb, int ub)
-               {
-                       m_lowerBound = lb;
-                       m_upperBound = ub;
-               }
-
-               public override string ToString ()
-               {
-                       if (m_upperBound == 0)
-                               return string.Empty;
-                       return string.Concat (m_lowerBound, "...", m_upperBound);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs
deleted file mode 100644 (file)
index c31cfb1..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// ArrayDimensionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ArrayDimensionCollection : CollectionBase {
-
-               ArrayType m_container;
-
-               public ArrayDimension this [int index] {
-                       get { return List [index] as ArrayDimension; }
-                       set { List [index] = value; }
-               }
-
-               public ArrayType Container {
-                       get { return m_container; }
-               }
-
-               public ArrayDimensionCollection (ArrayType container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (ArrayDimension value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (ArrayDimension value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (ArrayDimension value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, ArrayDimension value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (ArrayDimension value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is ArrayDimension))
-                               throw new ArgumentException ("Must be of type " + typeof (ArrayDimension).FullName);
-               }
-       }
-}
index 87456d28829c7f8c27160f86c267487d70825f7f..e3a060f7b33226236b6a0601437ea744a13b4a42 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+using Mono.Collections.Generic;
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-       using System.Text;
+       public struct ArrayDimension {
+
+               int? lower_bound;
+               int? upper_bound;
 
-       using Mono.Cecil.Signatures;
+               public int? LowerBound {
+                       get { return lower_bound; }
+                       set { lower_bound = value; }
+               }
+
+               public int? UpperBound {
+                       get { return upper_bound; }
+                       set { upper_bound = value; }
+               }
+
+               public bool IsSized {
+                       get { return lower_bound.HasValue || upper_bound.HasValue; }
+               }
+
+               public ArrayDimension (int? lowerBound, int? upperBound)
+               {
+                       this.lower_bound = lowerBound;
+                       this.upper_bound = upperBound;
+               }
+
+               public override string ToString ()
+               {
+                       return !IsSized
+                               ? string.Empty
+                               : lower_bound + "..." + upper_bound;
+               }
+       }
 
        public sealed class ArrayType : TypeSpecification {
 
-               private ArrayDimensionCollection m_dimensions;
+               Collection<ArrayDimension> dimensions;
+
+               public Collection<ArrayDimension> Dimensions {
+                       get {
+                               if (dimensions != null)
+                                       return dimensions;
 
-               public ArrayDimensionCollection Dimensions {
-                       get { return m_dimensions; }
+                               dimensions = new Collection<ArrayDimension> ();
+                               dimensions.Add (new ArrayDimension ());
+                               return dimensions;
+                       }
                }
 
                public int Rank {
-                       get { return m_dimensions.Count; }
+                       get { return dimensions == null ? 1 : dimensions.Count; }
                }
 
-               public bool IsSizedArray {
+               public bool IsVector {
                        get {
-                               if (this.Rank != 1)
+                               if (dimensions == null)
+                                       return true;
+
+                               if (dimensions.Count > 1)
                                        return false;
-                               ArrayDimension dim = m_dimensions [0];
-                               return dim.UpperBound == 0;
+
+                               var dimension = dimensions [0];
+
+                               return !dimension.IsSized;
                        }
                }
 
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
                public override string Name {
-                       get { return string.Concat (base.Name, Suffix ()); }
+                       get { return base.Name + Suffix; }
                }
 
                public override string FullName {
-                       get { return string.Concat (base.FullName, Suffix ()); }
+                       get { return base.FullName + Suffix; }
                }
 
-               string Suffix ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append ("[");
-                       for (int i = 0; i < m_dimensions.Count; i++) {
-                               ArrayDimension dim = m_dimensions [i];
-                               string rank = dim.ToString ();
-                               if (i < m_dimensions.Count - 1)
-                                       sb.Append (",");
-                               if (rank.Length > 0) {
-                                       sb.Append (" ");
-                                       sb.Append (rank);
+               string Suffix {
+                       get {
+                               if (IsVector)
+                                       return "[]";
+
+                               var suffix = new StringBuilder ();
+                               suffix.Append ("[");
+                               for (int i = 0; i < dimensions.Count; i++) {
+                                       if (i > 0)
+                                               suffix.Append (",");
+
+                                       suffix.Append (dimensions [i].ToString ());
                                }
+                               suffix.Append ("]");
+
+                               return suffix.ToString ();
                        }
-                       sb.Append ("]");
-                       return sb.ToString ();
                }
 
-               internal ArrayType (TypeReference elementType, ArrayShape shape) : base (elementType)
-               {
-                       m_dimensions = new ArrayDimensionCollection (this);
-                       for (int i = 0; i < shape.Rank; i++) {
-                               int lower = 0, upper = 0;
-                               if (i < shape.NumSizes)
-                                       if (i < shape.NumLoBounds) {
-                                               lower = shape.LoBounds [i];
-                                               upper = shape.LoBounds [i] + shape.Sizes [i] - 1;
-                                       } else
-                                               upper = shape.Sizes [i] - 1;
-
-                               m_dimensions.Add (new ArrayDimension (lower, upper));
-                       }
+               public override bool IsArray {
+                       get { return true; }
                }
 
-               public ArrayType (TypeReference elementType, int rank) : base (elementType)
+               public ArrayType (TypeReference type)
+                       : base (type)
                {
-                       m_dimensions = new ArrayDimensionCollection (this);
-                       for (int i = 0; i < rank; i++)
-                               m_dimensions.Add (new ArrayDimension (0, 0));
+                       Mixin.CheckType (type);
+                       this.etype = MD.ElementType.Array;
                }
 
-               public ArrayType (TypeReference elementType) : this (elementType, 1)
+               public ArrayType (TypeReference type, int rank)
+                       : this (type)
                {
+                       Mixin.CheckType (type);
+
+                       if (rank == 1)
+                               return;
+
+                       dimensions = new Collection<ArrayDimension> (rank);
+                       for (int i = 0; i < rank; i++)
+                               dimensions.Add (new ArrayDimension ());
+                       this.etype = MD.ElementType.Array;
                }
        }
 }
index 11373af32b6611ef9c1a679ca607a32aef3678cd..bb757d38ce80fb403a0623ee2ce99f09f61e26c0 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.IO;
+
+using Mono.Collections.Generic;
 
-       using System;
-       using System.Collections;
+namespace Mono.Cecil {
 
-       using Mono.Cecil.Metadata;
+       public sealed class AssemblyDefinition : ICustomAttributeProvider, ISecurityDeclarationProvider {
 
-       public class AssemblyDefinition : ICustomAttributeProvider,
-               IHasSecurity, IAnnotationProvider, IReflectionStructureVisitable {
+               AssemblyNameDefinition name;
 
-               MetadataToken m_token;
-               AssemblyNameDefinition m_asmName;
-               ModuleDefinitionCollection m_modules;
-               SecurityDeclarationCollection m_secDecls;
-               CustomAttributeCollection m_customAttrs;
-               MethodDefinition m_ep;
-               TargetRuntime m_runtime;
-               AssemblyKind m_kind;
+               internal ModuleDefinition main_module;
+               Collection<ModuleDefinition> modules;
+               Collection<CustomAttribute> custom_attributes;
+               Collection<SecurityDeclaration> security_declarations;
 
-               ModuleDefinition m_mainModule;
-               StructureReader m_reader;
+               public AssemblyNameDefinition Name {
+                       get { return name; }
+                       set { name = value; }
+               }
 
-               IAssemblyResolver m_resolver;
-               IDictionary m_annotations;
+               public string FullName {
+                       get { return name != null ? name.FullName : string.Empty; }
+               }
 
                public MetadataToken MetadataToken {
-                       get { return m_token; }
-                       set { m_token = value; }
+                       get { return new MetadataToken (TokenType.Assembly, 1); }
+                       set { }
                }
 
-               public AssemblyNameDefinition Name {
-                       get { return m_asmName; }
+               public Collection<ModuleDefinition> Modules {
+                       get {
+                               if (modules != null)
+                                       return modules;
+
+                               if (main_module.HasImage)
+                                       return modules = main_module.Read (this, (_, reader) => reader.ReadModules ());
+
+                               return modules = new Collection<ModuleDefinition> { main_module };
+                       }
                }
 
-               public ModuleDefinitionCollection Modules {
-                       get { return m_modules; }
+               public ModuleDefinition MainModule {
+                       get { return main_module; }
                }
 
-               public bool HasSecurityDeclarations {
-                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+               public MethodDefinition EntryPoint {
+                       get { return main_module.EntryPoint; }
+                       set { main_module.EntryPoint = value; }
                }
 
-               public SecurityDeclarationCollection SecurityDeclarations {
+               public bool HasCustomAttributes {
                        get {
-                               if (m_secDecls == null)
-                                       m_secDecls = new SecurityDeclarationCollection (this);
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-                               return m_secDecls;
+                               return this.GetHasCustomAttributes (main_module);
                        }
                }
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (main_module)); }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasSecurityDeclarations {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (security_declarations != null)
+                                       return security_declarations.Count > 0;
 
-                               return m_customAttrs;
+                               return this.GetHasSecurityDeclarations (main_module);
                        }
                }
 
-               public MethodDefinition EntryPoint {
-                       get { return m_ep; }
-                       set { m_ep = value; }
+               public Collection<SecurityDeclaration> SecurityDeclarations {
+                       get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (main_module)); }
+               }
+
+               internal AssemblyDefinition ()
+               {
                }
 
-               public TargetRuntime Runtime {
-                       get { return m_runtime; }
-                       set { m_runtime = value; }
+#if !READ_ONLY
+               public static AssemblyDefinition CreateAssembly (AssemblyNameDefinition assemblyName, string moduleName, ModuleKind kind)
+               {
+                       return CreateAssembly (assemblyName, moduleName, new ModuleParameters { Kind = kind });
                }
 
-               public AssemblyKind Kind {
-                       get { return m_kind; }
-                       set { m_kind = value; }
+               public static AssemblyDefinition CreateAssembly (AssemblyNameDefinition assemblyName, string moduleName, ModuleParameters parameters)
+               {
+                       if (assemblyName == null)
+                               throw new ArgumentNullException ("assemblyName");
+                       if (moduleName == null)
+                               throw new ArgumentNullException ("moduleName");
+                       Mixin.CheckParameters (parameters);
+                       if (parameters.Kind == ModuleKind.NetModule)
+                               throw new ArgumentException ("kind");
+
+                       var assembly = ModuleDefinition.CreateModule (moduleName, parameters).Assembly;
+                       assembly.Name = assemblyName;
+
+                       return assembly;
                }
+#endif
 
-               public ModuleDefinition MainModule {
-                       get {
-                               if (m_mainModule == null) {
-                                       foreach (ModuleDefinition module in m_modules) {
-                                               if (module.Main) {
-                                                       m_mainModule = module;
-                                                       break;
-                                               }
-                                       }
-                               }
-                               return m_mainModule;
-                       }
+               public static AssemblyDefinition ReadAssembly (string fileName)
+               {
+                       return ReadAssembly (ModuleDefinition.ReadModule (fileName));
                }
 
-               internal StructureReader Reader {
-                       get { return m_reader; }
+               public static AssemblyDefinition ReadAssembly (string fileName, ReaderParameters parameters)
+               {
+                       return ReadAssembly (ModuleDefinition.ReadModule (fileName, parameters));
                }
 
-               public IAssemblyResolver Resolver {
-                       get { return m_resolver; }
-                       set { m_resolver = value; }
+               public static AssemblyDefinition ReadAssembly (Stream stream)
+               {
+                       return ReadAssembly (ModuleDefinition.ReadModule (stream));
                }
 
-               IDictionary IAnnotationProvider.Annotations {
-                       get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
-                       }
+               public static AssemblyDefinition ReadAssembly (Stream stream, ReaderParameters parameters)
+               {
+                       return ReadAssembly (ModuleDefinition.ReadModule (stream, parameters));
                }
 
-               internal AssemblyDefinition (AssemblyNameDefinition name)
+               static AssemblyDefinition ReadAssembly (ModuleDefinition module)
                {
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
+                       var assembly = module.Assembly;
+                       if (assembly == null)
+                               throw new ArgumentException ();
 
-                       m_asmName = name;
-                       m_modules = new ModuleDefinitionCollection (this);
-                       m_resolver = new DefaultAssemblyResolver ();
+                       return assembly;
                }
 
-               internal AssemblyDefinition (AssemblyNameDefinition name, StructureReader reader) : this (name)
+#if !READ_ONLY
+               public void Write (string fileName)
                {
-                       m_reader = reader;
+                       Write (fileName, new WriterParameters ());
                }
 
-               public void Accept (IReflectionStructureVisitor visitor)
+               public void Write (Stream stream)
                {
-                       visitor.VisitAssemblyDefinition (this);
+                       Write (stream, new WriterParameters ());
+               }
 
-                       m_asmName.Accept (visitor);
-                       m_modules.Accept (visitor);
+               public void Write (string fileName, WriterParameters parameters)
+               {
+                       main_module.Write (fileName, parameters);
+               }
 
-                       visitor.TerminateAssemblyDefinition (this);
+               public void Write (Stream stream, WriterParameters parameters)
+               {
+                       main_module.Write (stream, parameters);
                }
+#endif
 
                public override string ToString ()
                {
-                       return m_asmName.FullName;
+                       return this.FullName;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs
deleted file mode 100644 (file)
index 1317c31..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// AssemblyFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.IO;
-       using SR = System.Reflection;
-
-       using Mono.Cecil.Binary;
-
-       public sealed class AssemblyFactory {
-
-               AssemblyFactory ()
-               {
-               }
-
-               static AssemblyDefinition GetAssembly (ImageReader irv, bool manifestOnly)
-               {
-                       StructureReader srv = new StructureReader (irv, manifestOnly);
-                       AssemblyDefinition asm = new AssemblyDefinition (
-                               new AssemblyNameDefinition (), srv);
-
-                       asm.Accept (srv);
-                       return asm;
-               }
-
-               static AssemblyDefinition GetAssembly (ImageReader reader)
-               {
-                       return GetAssembly (reader, false);
-               }
-
-               static AssemblyDefinition GetAssemblyManifest (ImageReader reader)
-               {
-                       return GetAssembly (reader, true);
-               }
-
-               public static AssemblyDefinition GetAssembly (string file)
-               {
-                       return GetAssembly (ImageReader.Read (file));
-               }
-
-               public static AssemblyDefinition GetAssembly (byte [] assembly)
-               {
-                       return GetAssembly (ImageReader.Read (assembly));
-               }
-
-               public static AssemblyDefinition GetAssembly (Stream stream)
-               {
-                       return GetAssembly (ImageReader.Read (stream));
-               }
-
-               public static AssemblyDefinition GetAssemblyManifest (string file)
-               {
-                       return GetAssemblyManifest (ImageReader.Read (file));
-               }
-
-               public static AssemblyDefinition GetAssemblyManifest (byte [] assembly)
-               {
-                       return GetAssemblyManifest (ImageReader.Read (assembly));
-               }
-
-               public static AssemblyDefinition GetAssemblyManifest (Stream stream)
-               {
-                       return GetAssemblyManifest (ImageReader.Read (stream));
-               }
-
-               static TargetRuntime CurrentRuntime ()
-               {
-                       Version corlib = typeof (object).Assembly.GetName ().Version;
-
-                       switch (corlib.Major) {
-                       case 1:
-                               return corlib.Minor == 0 ? TargetRuntime.NET_1_0 : TargetRuntime.NET_1_1;
-                       case 2:
-                               return TargetRuntime.NET_2_0;
-                       case 4:
-                               return TargetRuntime.NET_4_0;
-                       default:
-                               throw new NotSupportedException ();
-                       }
-               }
-
-               public static AssemblyDefinition DefineAssembly (string name, AssemblyKind kind)
-               {
-                       return DefineAssembly (name, name, CurrentRuntime (), kind);
-               }
-
-               public static AssemblyDefinition DefineAssembly (string name, TargetRuntime rt, AssemblyKind kind)
-               {
-                       return DefineAssembly (name, name, rt, kind);
-               }
-
-               public static AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, TargetRuntime rt, AssemblyKind kind)
-               {
-                       AssemblyNameDefinition asmName = new AssemblyNameDefinition ();
-                       asmName.Name = assemblyName;
-                       AssemblyDefinition asm = new AssemblyDefinition (asmName);
-                       asm.Runtime = rt;
-                       asm.Kind = kind;
-                       ModuleDefinition main = new ModuleDefinition (moduleName, asm, true);
-                       asm.Modules.Add (main);
-                       return asm;
-               }
-
-               static void WriteAssembly (AssemblyDefinition asm, BinaryWriter bw)
-               {
-                       asm.Accept (new StructureWriter (asm, bw));
-               }
-
-               public static void SaveAssembly (AssemblyDefinition asm, string file)
-               {
-                       using (FileStream fs = new FileStream (
-                               file, FileMode.Create, FileAccess.Write, FileShare.None)) {
-
-                               SaveAssembly (asm, fs);
-                               asm.MainModule.Image.SetFileInfo (new FileInfo (file));
-                       }
-               }
-
-               public static void SaveAssembly (AssemblyDefinition asm, out byte [] assembly)
-               {
-                       MemoryBinaryWriter bw = new MemoryBinaryWriter ();
-                       SaveAssembly (asm, bw.BaseStream);
-                       assembly = bw.ToArray ();
-               }
-
-               public static void SaveAssembly (AssemblyDefinition asm, Stream stream)
-               {
-                       BinaryWriter bw = new BinaryWriter (stream);
-                       try {
-                               WriteAssembly (asm, bw);
-                       } finally {
-                               bw.Close ();
-                       }
-
-                       foreach (ModuleDefinition module in asm.Modules)
-                               if (module.Controller.Writer.SaveSymbols)
-                                       module.Controller.Writer.WriteSymbols (module);
-               }
-
-#if !CF_1_0 && !CF_2_0
-               public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm, AppDomain domain)
-               {
-                       using (MemoryBinaryWriter writer = new MemoryBinaryWriter ()) {
-
-                               WriteAssembly (asm, writer);
-                               return domain.Load (writer.ToArray ());
-                       }
-               }
-
-               public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm)
-               {
-                       return CreateReflectionAssembly (asm, AppDomain.CurrentDomain);
-               }
-#endif
-       }
-}
index 9231fc8406c6b263e0a5fa794b7cc0b75776a07a..6d04c59c4c6714797149990478514f88b6e9031e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
-       public enum AssemblyFlags : uint {
+       public enum AssemblyAttributes : uint {
                PublicKey                                               = 0x0001,
                SideBySideCompatible                    = 0x0000,
                Retargetable                                    = 0x0100,
-               EnableJITcompileTracking                = 0x8000,
-               DisableJITcompileOptimizer              = 0x4000
+               DisableJITCompileOptimizer              = 0x4000,
+               EnableJITCompileTracking                = 0x8000,
        }
 }
index e32c2ec2fbc73b388a24ed78dcd74846086542a7..0e7bf838beebf801a2794a12c1ee9202984170aa 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -34,4 +34,3 @@ namespace Mono.Cecil {
                SHA1            = 0x8004
        }
 }
-
index cd77a32dd5da454b968e61ed882f2dfd13e9d604..b7019815b31948a8e808a29a8a805007735ac863 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
-#if !EMBEDDED
-
 [assembly: AssemblyTitle ("Mono.Cecil")]
-[assembly: AssemblyDescription ("Library for reading and writing CIL images")]
-[assembly: AssemblyConfiguration ("")]
 [assembly: AssemblyProduct ("Mono.Cecil")]
-[assembly: AssemblyCopyright ("(C) 2005 - 2007, Jb Evain")]
-[assembly: AssemblyCulture ("")]
+[assembly: AssemblyCopyright ("Copyright Â© 2008 - 2010 Jb Evain")]
 
-[assembly: CLSCompliant (false)]
 [assembly: ComVisible (false)]
 
-[assembly: AssemblyVersion (
-       //
-       // DO NOT MODIFY THE STRING BELOWS WITOUT UPDATING cecil.pc.in in mono/data
-       //
-       "0.6.9.0"
-       //
-       // DO NOT MODIFY THE STRING ABOVE WITHOUT UPDATING cecil.pc.in in mono/data
-)]
-
-#if KEYFILE
-[assembly: AssemblyKeyFile("../../mono.snk")]
-#endif
+[assembly: Guid ("fd225bb4-fa53-44b2-a6db-85f5e48dcb54")]
 
+[assembly: AssemblyVersion ("0.9.4.0")]
+#if !CF
+[assembly: AssemblyFileVersion ("0.9.4.0")]
 #endif
 
-
-
+[assembly: InternalsVisibleTo ("Mono.Cecil.Pdb, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Mdb, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Rocks, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Tests, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs
deleted file mode 100644 (file)
index 7d5e7c0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// AssemblyKind.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public enum AssemblyKind {
-               Dll,
-               Console,
-               Windows
-       }
-}
index 0ff9ff1515392a533e4473bc47affba0d6a87550..68e44f80bfcf09b245f599b4a7b7683075656cbe 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil {
 
        public sealed class AssemblyLinkedResource : Resource {
 
-               private AssemblyNameReference m_asmRef;
+               AssemblyNameReference reference;
 
                public AssemblyNameReference Assembly {
-                       get { return m_asmRef; }
-                       set { m_asmRef = value; }
+                       get { return reference; }
+                       set { reference = value; }
+               }
+
+               public override ResourceType ResourceType {
+                       get { return ResourceType.AssemblyLinked; }
                }
 
-               public AssemblyLinkedResource (string name, ManifestResourceAttributes flags,
-                       AssemblyNameReference asmRef) : base (name, flags)
+               public AssemblyLinkedResource (string name, ManifestResourceAttributes flags)
+                       : base (name, flags)
                {
-                       m_asmRef = asmRef;
                }
 
-               public override void Accept (IReflectionStructureVisitor visitor)
+               public AssemblyLinkedResource (string name, ManifestResourceAttributes flags, AssemblyNameReference reference)
+                       : base (name, flags)
                {
-                       visitor.VisitAssemblyLinkedResource (this);
+                       this.reference = reference;
                }
        }
 }
index bf54fb58d7d4ff46bbbadbb950859acc08987d46..4756cb81a3a44d0ad03159eb05442960b4b9d515 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        public sealed class AssemblyNameDefinition : AssemblyNameReference {
 
                public override byte [] Hash {
-                       get { return new byte [0]; }
-               }
-
-               public AssemblyNameDefinition () : base()
-               {
+                       get { return Empty<byte>.Array; }
                }
 
-               public AssemblyNameDefinition (string name, string culture, Version version) : base (name, culture, version)
+               internal AssemblyNameDefinition ()
                {
+                       this.token = new MetadataToken (TokenType.Assembly, 1);
                }
 
-               public override void Accept (IReflectionStructureVisitor visitor)
+               public AssemblyNameDefinition (string name, Version version)
+                       : base (name, version)
                {
-                       visitor.VisitAssemblyNameDefinition (this);
+                       this.token = new MetadataToken (TokenType.Assembly, 1);
                }
        }
 }
index 6b99de9870c2e1fb72c5b9fc95bb46910874850b..2798082ba2fd45596b857773c1919e68e4928ead 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Globalization;
+using System.Security.Cryptography;
+using System.Text;
 
-       using System;
-       using System.Collections;
-       using System.Globalization;
-       using System.Security.Cryptography;
-       using System.Text;
+namespace Mono.Cecil {
 
-       using Mono.Cecil.Metadata;
+       public class AssemblyNameReference : IMetadataScope {
 
-       public class AssemblyNameReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+               string name;
+               string culture;
+               Version version;
+               uint attributes;
+               byte [] public_key;
+               byte [] public_key_token;
+               AssemblyHashAlgorithm hash_algorithm;
+               byte [] hash;
 
-               string m_name;
-               string m_culture;
-               Version m_version;
-               AssemblyFlags m_flags;
-               byte [] m_publicKey;
-               byte [] m_publicKeyToken;
-               AssemblyHashAlgorithm m_hashAlgo;
-               byte [] m_hash;
-               MetadataToken m_token;
-               IDictionary m_annotations;
+               internal MetadataToken token;
 
-               bool m_fullNameDiscarded = true;
-               string m_fullName;
+               string full_name;
 
                public string Name {
-                       get { return m_name; }
+                       get { return name; }
                        set {
-                               m_name = value;
-                               m_fullNameDiscarded = true;
+                               name = value;
+                               full_name = null;
                        }
                }
 
                public string Culture {
-                       get { return m_culture; }
+                       get { return culture; }
                        set {
-                               m_culture = value;
-                               m_fullNameDiscarded = true;
+                               culture = value;
+                               full_name = null;
                        }
                }
 
                public Version Version {
-                       get { return m_version; }
+                       get { return version; }
                        set {
-                                m_version = value;
-                                m_fullNameDiscarded = true;
+                                version = value;
+                                full_name = null;
                        }
                }
 
-               public AssemblyFlags Flags {
-                       get { return m_flags; }
-                       set { m_flags = value; }
+               public AssemblyAttributes Attributes {
+                       get { return (AssemblyAttributes) attributes; }
+                       set { attributes = (uint) value; }
                }
 
                public bool HasPublicKey {
-                       get { return (m_flags & AssemblyFlags.PublicKey) != 0; }
-                       set {
-                               if (value)
-                                       m_flags |= AssemblyFlags.PublicKey;
-                               else
-                                       m_flags &= ~AssemblyFlags.PublicKey;
-                       }
+                       get { return attributes.GetAttributes ((uint) AssemblyAttributes.PublicKey); }
+                       set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.PublicKey, value); }
                }
 
                public bool IsSideBySideCompatible {
-                       get { return (m_flags & AssemblyFlags.SideBySideCompatible) != 0; }
-                       set {
-                               if (value)
-                                       m_flags |= AssemblyFlags.SideBySideCompatible;
-                               else
-                                       m_flags &= ~AssemblyFlags.SideBySideCompatible;
-                       }
+                       get { return attributes.GetAttributes ((uint) AssemblyAttributes.SideBySideCompatible); }
+                       set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.SideBySideCompatible, value); }
                }
 
                public bool IsRetargetable {
-                       get { return (m_flags & AssemblyFlags.Retargetable) != 0; }
-                       set {
-                               if (value)
-                                       m_flags |= AssemblyFlags.Retargetable;
-                               else
-                                       m_flags &= ~AssemblyFlags.Retargetable;
-                       }
+                       get { return attributes.GetAttributes ((uint) AssemblyAttributes.Retargetable); }
+                       set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.Retargetable, value); }
                }
 
                public byte [] PublicKey {
-                       get { return m_publicKey; }
+                       get { return public_key; }
                        set {
-                               m_publicKey = value;
-                               m_publicKeyToken = null;
-                               m_fullNameDiscarded = true;
+                               public_key = value;
+                               HasPublicKey = !public_key.IsNullOrEmpty ();
+                               public_key_token = Empty<byte>.Array;
+                               full_name = null;
                        }
                }
 
                public byte [] PublicKeyToken {
                        get {
-#if !CF_1_0
-                               if ((m_publicKeyToken == null || m_publicKeyToken.Length == 0) && (m_publicKey != null && m_publicKey.Length > 0)) {
-                                       HashAlgorithm ha;
-                                       switch (m_hashAlgo) {
-                                       case AssemblyHashAlgorithm.Reserved:
-                                               ha = MD5.Create (); break;
-                                       default:
-                                               // None default to SHA1
-                                               ha = SHA1.Create (); break;
-                                       }
-                                       byte [] hash = ha.ComputeHash (m_publicKey);
+                               if (public_key_token.IsNullOrEmpty () && !public_key.IsNullOrEmpty ()) {
+                                       var hash = HashPublicKey ();
                                        // we need the last 8 bytes in reverse order
-                                       m_publicKeyToken = new byte [8];
-                                       Array.Copy (hash, (hash.Length - 8), m_publicKeyToken, 0, 8);
-                                       Array.Reverse (m_publicKeyToken, 0, 8);
+                                       public_key_token = new byte [8];
+                                       Array.Copy (hash, (hash.Length - 8), public_key_token, 0, 8);
+                                       Array.Reverse (public_key_token, 0, 8);
                                }
-#endif
-                               return m_publicKeyToken;
+                               return public_key_token;
                        }
                        set {
-                               m_publicKeyToken = value;
-                               m_fullNameDiscarded = true;
+                               public_key_token = value;
+                               full_name = null;
+                       }
+               }
+
+               byte [] HashPublicKey ()
+               {
+                       HashAlgorithm algorithm;
+
+                       switch (hash_algorithm) {
+                       case AssemblyHashAlgorithm.Reserved:
+#if SILVERLIGHT
+                               throw new NotSupportedException ();
+#else
+                               algorithm = MD5.Create ();
+                               break;
+#endif
+                       default:
+                               // None default to SHA1
+#if SILVERLIGHT
+                               algorithm = new SHA1Managed ();
+                               break;
+#else
+                               algorithm = SHA1.Create ();
+                               break;
+#endif
                        }
+
+                       using (algorithm)
+                               return algorithm.ComputeHash (public_key);
+               }
+
+               public virtual MetadataScopeType MetadataScopeType {
+                       get { return MetadataScopeType.AssemblyNameReference; }
                }
 
                public string FullName {
                        get {
-                               if (m_fullName != null && !m_fullNameDiscarded)
-                                       return m_fullName;
-
-                               StringBuilder sb = new StringBuilder ();
-                               string sep = ", ";
-                               sb.Append (m_name);
-                               if (m_version != null) {
-                                       sb.Append (sep);
-                                       sb.Append ("Version=");
-                                       sb.Append (m_version.ToString ());
+                               if (full_name != null)
+                                       return full_name;
+
+                               const string sep = ", ";
+
+                               var builder = new StringBuilder ();
+                               builder.Append (name);
+                               if (version != null) {
+                                       builder.Append (sep);
+                                       builder.Append ("Version=");
+                                       builder.Append (version.ToString ());
                                }
-                               sb.Append (sep);
-                               sb.Append ("Culture=");
-                               sb.Append (m_culture == null || m_culture.Length == 0 ? "neutral" : m_culture);
-                               sb.Append (sep);
-                               sb.Append ("PublicKeyToken=");
-                               if (this.PublicKeyToken != null && m_publicKeyToken.Length > 0) {
-                                       for (int i = 0 ; i < m_publicKeyToken.Length ; i++) {
-                                               sb.Append (m_publicKeyToken [i].ToString ("x2"));
+                               builder.Append (sep);
+                               builder.Append ("Culture=");
+                               builder.Append (string.IsNullOrEmpty (culture) ? "neutral" : culture);
+                               builder.Append (sep);
+                               builder.Append ("PublicKeyToken=");
+
+                               if (this.PublicKeyToken != null && public_key_token.Length > 0) {
+                                       for (int i = 0 ; i < public_key_token.Length ; i++) {
+                                               builder.Append (public_key_token [i].ToString ("x2"));
                                        }
-                               } else {
-                                       sb.Append ("null");
-                               }
-                               m_fullName = sb.ToString ();
-                               m_fullNameDiscarded = false;
-                               return m_fullName;
+                               } else
+                                       builder.Append ("null");
+
+                               return full_name = builder.ToString ();
                        }
                }
 
@@ -185,17 +188,17 @@ namespace Mono.Cecil {
                        if (fullName.Length == 0)
                                throw new ArgumentException ("Name can not be empty");
 
-                       AssemblyNameReference name = new AssemblyNameReference ();
-                       string [] tokens = fullName.Split (',');
+                       var name = new AssemblyNameReference ();
+                       var tokens = fullName.Split (',');
                        for (int i = 0; i < tokens.Length; i++) {
-                               string token = tokens [i].Trim ();
+                               var token = tokens [i].Trim ();
 
                                if (i == 0) {
                                        name.Name = token;
                                        continue;
                                }
 
-                               string [] parts = token.Split ('=');
+                               var parts = token.Split ('=');
                                if (parts.Length != 2)
                                        throw new ArgumentException ("Malformed name");
 
@@ -207,13 +210,13 @@ namespace Mono.Cecil {
                                        name.Culture = parts [1];
                                        break;
                                case "PublicKeyToken":
-                                       string pkToken = parts [1];
-                                       if (pkToken == "null")
+                                       string pk_token = parts [1];
+                                       if (pk_token == "null")
                                                break;
 
-                                       name.PublicKeyToken = new byte [pkToken.Length / 2];
+                                       name.PublicKeyToken = new byte [pk_token.Length / 2];
                                        for (int j = 0; j < name.PublicKeyToken.Length; j++) {
-                                               name.PublicKeyToken [j] = Byte.Parse (pkToken.Substring (j * 2, 2), NumberStyles.HexNumber);
+                                               name.PublicKeyToken [j] = Byte.Parse (pk_token.Substring (j * 2, 2), NumberStyles.HexNumber);
                                        }
                                        break;
                                }
@@ -222,54 +225,39 @@ namespace Mono.Cecil {
                        return name;
                }
 
-               public AssemblyHashAlgorithm HashAlgorithm
-               {
-                       get { return m_hashAlgo; }
-                       set { m_hashAlgo = value; }
+               public AssemblyHashAlgorithm HashAlgorithm {
+                       get { return hash_algorithm; }
+                       set { hash_algorithm = value; }
                }
 
                public virtual byte [] Hash {
-                       get { return m_hash; }
-                       set { m_hash = value; }
+                       get { return hash; }
+                       set { hash = value; }
                }
 
                public MetadataToken MetadataToken {
-                       get { return m_token; }
-                       set { m_token = value; }
+                       get { return token; }
+                       set { token = value; }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
-                       get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
-                       }
-               }
-
-               public AssemblyNameReference () : this (string.Empty, string.Empty, new Version (0, 0, 0, 0))
+               internal AssemblyNameReference ()
                {
                }
 
-               public AssemblyNameReference (string name, string culture, Version version)
+               public AssemblyNameReference (string name, Version version)
                {
                        if (name == null)
                                throw new ArgumentNullException ("name");
-                       if (culture == null)
-                               throw new ArgumentNullException ("culture");
-                       m_name = name;
-                       m_culture = culture;
-                       m_version = version;
-                       m_hashAlgo = AssemblyHashAlgorithm.None;
+
+                       this.name = name;
+                       this.version = version;
+                       this.hash_algorithm = AssemblyHashAlgorithm.None;
+                       this.token = new MetadataToken (TokenType.AssemblyRef);
                }
 
                public override string ToString ()
                {
                        return this.FullName;
                }
-
-               public virtual void Accept (IReflectionStructureVisitor visitor)
-               {
-                       visitor.VisitAssemblyNameReference (this);
-               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs
deleted file mode 100644 (file)
index be2b3b9..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// AssemblyNameReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class AssemblyNameReferenceCollection : CollectionBase, IReflectionStructureVisitable {
-
-               ModuleDefinition m_container;
-
-               public AssemblyNameReference this [int index] {
-                       get { return List [index] as AssemblyNameReference; }
-                       set { List [index] = value; }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public AssemblyNameReferenceCollection (ModuleDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (AssemblyNameReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (AssemblyNameReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (AssemblyNameReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, AssemblyNameReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (AssemblyNameReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is AssemblyNameReference))
-                               throw new ArgumentException ("Must be of type " + typeof (AssemblyNameReference).FullName);
-               }
-
-               public void Accept (IReflectionStructureVisitor visitor)
-               {
-                       visitor.VisitAssemblyNameReferenceCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs
new file mode 100644 (file)
index 0000000..18175fc
--- /dev/null
@@ -0,0 +1,3007 @@
+//
+// AssemblyReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil {
+
+       abstract class ModuleReader {
+
+               readonly protected Image image;
+               readonly protected ModuleDefinition module;
+
+               protected ModuleReader (Image image, ReadingMode mode)
+               {
+                       this.image = image;
+                       this.module = new ModuleDefinition (image);
+                       this.module.ReadingMode = mode;
+               }
+
+               protected abstract void ReadModule ();
+
+               protected void ReadModuleManifest (MetadataReader reader)
+               {
+                       reader.Populate (module);
+
+                       ReadAssembly (reader);
+               }
+
+               void ReadAssembly (MetadataReader reader)
+               {
+                       var name = reader.ReadAssemblyNameDefinition ();
+                       if (name == null) {
+                               module.kind = ModuleKind.NetModule;
+                               return;
+                       }
+
+                       var assembly = new AssemblyDefinition ();
+                       assembly.Name = name;
+
+                       module.assembly = assembly;
+                       assembly.main_module = module;
+               }
+
+               public static ModuleDefinition CreateModuleFrom (Image image, ReaderParameters parameters)
+               {
+                       var module = ReadModule (image, parameters);
+
+                       ReadSymbols (module, parameters);
+
+                       if (parameters.AssemblyResolver != null)
+                               module.assembly_resolver = parameters.AssemblyResolver;
+
+                       return module;
+               }
+
+               static void ReadSymbols (ModuleDefinition module, ReaderParameters parameters)
+               {
+                       var symbol_reader_provider = parameters.SymbolReaderProvider;
+
+                       if (symbol_reader_provider == null && parameters.ReadSymbols)
+                               symbol_reader_provider = SymbolProvider.GetPlatformReaderProvider ();
+
+                       if (symbol_reader_provider != null) {
+                               module.SymbolReaderProvider = symbol_reader_provider;
+
+                               var reader = parameters.SymbolStream != null
+                                       ? symbol_reader_provider.GetSymbolReader (module, parameters.SymbolStream)
+                                       : symbol_reader_provider.GetSymbolReader (module, module.FullyQualifiedName);
+
+                               module.ReadSymbols (reader);
+                       }
+               }
+
+               static ModuleDefinition ReadModule (Image image, ReaderParameters parameters)
+               {
+                       var reader = CreateModuleReader (image, parameters.ReadingMode);
+                       reader.ReadModule ();
+                       return reader.module;
+               }
+
+               static ModuleReader CreateModuleReader (Image image, ReadingMode mode)
+               {
+                       switch (mode) {
+                       case ReadingMode.Immediate:
+                               return new ImmediateModuleReader (image);
+                       case ReadingMode.Deferred:
+                               return new DeferredModuleReader (image);
+                       default:
+                               throw new ArgumentException ();
+                       }
+               }
+       }
+
+       sealed class ImmediateModuleReader : ModuleReader {
+
+               public ImmediateModuleReader (Image image)
+                       : base (image, ReadingMode.Immediate)
+               {
+               }
+
+               protected override void ReadModule ()
+               {
+                       this.module.Read (this.module, (module, reader) => {
+                               ReadModuleManifest (reader);
+                               ReadModule (module);
+                               return module;
+                       });
+               }
+
+               public static void ReadModule (ModuleDefinition module)
+               {
+                       if (module.HasAssemblyReferences)
+                               Read (module.AssemblyReferences);
+                       if (module.HasResources)
+                               Read (module.Resources);
+                       if (module.HasModuleReferences)
+                               Read (module.ModuleReferences);
+                       if (module.HasTypes)
+                               ReadTypes (module.Types);
+                       if (module.HasExportedTypes)
+                               Read (module.ExportedTypes);
+                       if (module.HasCustomAttributes)
+                               Read (module.CustomAttributes);
+
+                       var assembly = module.Assembly;
+                       if (assembly == null)
+                               return;
+
+                       if (assembly.HasCustomAttributes)
+                               Read (assembly.CustomAttributes);
+                       if (assembly.HasSecurityDeclarations)
+                               Read (assembly.SecurityDeclarations);
+               }
+
+               static void ReadTypes (Collection<TypeDefinition> types)
+               {
+                       for (int i = 0; i < types.Count; i++)
+                               ReadType (types [i]);
+               }
+
+               static void ReadType (TypeDefinition type)
+               {
+                       ReadGenericParameters (type);
+
+                       if (type.HasInterfaces)
+                               Read (type.Interfaces);
+
+                       if (type.HasNestedTypes)
+                               ReadTypes (type.NestedTypes);
+
+                       if (type.HasLayoutInfo)
+                               Read (type.ClassSize);
+
+                       if (type.HasFields)
+                               ReadFields (type);
+
+                       if (type.HasMethods)
+                               ReadMethods (type);
+
+                       if (type.HasProperties)
+                               ReadProperties (type);
+
+                       if (type.HasEvents)
+                               ReadEvents (type);
+
+                       ReadSecurityDeclarations (type);
+                       ReadCustomAttributes (type);
+               }
+
+               static void ReadGenericParameters (IGenericParameterProvider provider)
+               {
+                       if (!provider.HasGenericParameters)
+                               return;
+
+                       var parameters = provider.GenericParameters;
+
+                       for (int i = 0; i < parameters.Count; i++) {
+                               var parameter = parameters [i];
+
+                               if (parameter.HasConstraints)
+                                       Read (parameter.Constraints);
+
+                               if (parameter.HasCustomAttributes)
+                                       Read (parameter.CustomAttributes);
+                       }
+               }
+
+               static void ReadSecurityDeclarations (ISecurityDeclarationProvider provider)
+               {
+                       if (provider.HasSecurityDeclarations)
+                               Read (provider.SecurityDeclarations);
+               }
+
+               static void ReadCustomAttributes (ICustomAttributeProvider provider)
+               {
+                       if (provider.HasCustomAttributes)
+                               Read (provider.CustomAttributes);
+               }
+
+               static void ReadFields (TypeDefinition type)
+               {
+                       var fields = type.Fields;
+
+                       for (int i = 0; i < fields.Count; i++) {
+                               var field = fields [i];
+
+                               if (field.HasConstant)
+                                       Read (field.Constant);
+
+                               if (field.HasLayoutInfo)
+                                       Read (field.Offset);
+
+                               if (field.RVA > 0)
+                                       Read (field.InitialValue);
+
+                               if (field.HasMarshalInfo)
+                                       Read (field.MarshalInfo);
+
+                               ReadCustomAttributes (field);
+                       }
+               }
+
+               static void ReadMethods (TypeDefinition type)
+               {
+                       var methods = type.Methods;
+
+                       for (int i = 0; i < methods.Count; i++) {
+                               var method = methods [i];
+
+                               ReadGenericParameters (method);
+
+                               if (method.HasParameters)
+                                       ReadParameters (method);
+
+                               if (method.HasOverrides)
+                                       Read (method.Overrides);
+
+                               if (method.IsPInvokeImpl)
+                                       Read (method.PInvokeInfo);
+
+                               ReadSecurityDeclarations (method);
+                               ReadCustomAttributes (method);
+
+                               var return_type = method.MethodReturnType;
+                               if (return_type.HasConstant)
+                                       Read (return_type.Constant);
+
+                               if (return_type.HasMarshalInfo)
+                                       Read (return_type.MarshalInfo);
+
+                               ReadCustomAttributes (return_type);
+                       }
+               }
+
+               static void ReadParameters (MethodDefinition method)
+               {
+                       var parameters = method.Parameters;
+
+                       for (int i = 0; i < parameters.Count; i++) {
+                               var parameter = parameters [i];
+
+                               if (parameter.HasConstant)
+                                       Read (parameter.Constant);
+
+                               if (parameter.HasMarshalInfo)
+                                       Read (parameter.MarshalInfo);
+
+                               ReadCustomAttributes (parameter);
+                       }
+               }
+
+               static void ReadProperties (TypeDefinition type)
+               {
+                       var properties = type.Properties;
+
+                       for (int i = 0; i < properties.Count; i++) {
+                               var property = properties [i];
+
+                               Read (property.GetMethod);
+
+                               if (property.HasConstant)
+                                       Read (property.Constant);
+
+                               ReadCustomAttributes (property);
+                       }
+               }
+
+               static void ReadEvents (TypeDefinition type)
+               {
+                       var events = type.Events;
+
+                       for (int i = 0; i < events.Count; i++) {
+                               var @event = events [i];
+
+                               Read (@event.AddMethod);
+
+                               ReadCustomAttributes (@event);
+                       }
+               }
+
+               static void Read (object collection)
+               {
+               }
+       }
+
+       sealed class DeferredModuleReader : ModuleReader {
+
+               public DeferredModuleReader (Image image)
+                       : base (image, ReadingMode.Deferred)
+               {
+               }
+
+               protected override void ReadModule ()
+               {
+                       this.module.Read (this.module, (module, reader) => {
+                               ReadModuleManifest (reader);
+                               return module;
+                       });
+               }
+       }
+
+       sealed class MetadataReader : ByteBuffer {
+
+               readonly internal Image image;
+               readonly internal ModuleDefinition module;
+               readonly internal MetadataSystem metadata;
+
+               internal IGenericContext context;
+               internal CodeReader code;
+
+               uint Position {
+                       get { return (uint) base.position; }
+                       set { base.position = (int) value; }
+               }
+
+               public MetadataReader (ModuleDefinition module)
+                       : base (module.Image.MetadataSection.Data)
+               {
+                       this.image = module.Image;
+                       this.module = module;
+                       this.metadata = module.MetadataSystem;
+                       this.code = CodeReader.CreateCodeReader (this);
+               }
+
+               int GetCodedIndexSize (CodedIndex index)
+               {
+                       return image.GetCodedIndexSize (index);
+               }
+
+               uint ReadByIndexSize (int size)
+               {
+                       if (size == 4)
+                               return ReadUInt32 ();
+                       else
+                               return ReadUInt16 ();
+               }
+
+               byte [] ReadBlob ()
+               {
+                       var blob_heap = image.BlobHeap;
+                       if (blob_heap == null) {
+                               position += 2;
+                               return Empty<byte>.Array;
+                       }
+
+                       return blob_heap.Read (ReadBlobIndex ());
+               }
+
+               byte [] ReadBlob (uint signature)
+               {
+                       var blob_heap = image.BlobHeap;
+                       if (blob_heap == null)
+                               return Empty<byte>.Array;
+
+                       return blob_heap.Read (signature);
+               }
+
+               uint ReadBlobIndex ()
+               {
+                       var blob_heap = image.BlobHeap;
+                       return ReadByIndexSize (blob_heap != null ? blob_heap.IndexSize : 2);
+               }
+
+               string ReadString ()
+               {
+                       return image.StringHeap.Read (ReadByIndexSize (image.StringHeap.IndexSize));
+               }
+
+               uint ReadStringIndex ()
+               {
+                       return ReadByIndexSize (image.StringHeap.IndexSize);
+               }
+
+               uint ReadTableIndex (Table table)
+               {
+                       return ReadByIndexSize (image.GetTableIndexSize (table));
+               }
+
+               MetadataToken ReadMetadataToken (CodedIndex index)
+               {
+                       return index.GetMetadataToken (ReadByIndexSize (GetCodedIndexSize (index)));
+               }
+
+               int MoveTo (Table table)
+               {
+                       var info = image.TableHeap [table];
+                       if (info.Length != 0)
+                               Position = info.Offset;
+
+                       return (int) info.Length;
+               }
+
+               bool MoveTo (Table table, uint row)
+               {
+                       var info = image.TableHeap [table];
+                       var length = info.Length;
+                       if (length == 0 || row > length)
+                               return false;
+
+                       Position = info.Offset + (info.RowSize * (row - 1));
+                       return true;
+               }
+
+               public AssemblyNameDefinition ReadAssemblyNameDefinition ()
+               {
+                       if (MoveTo (Table.Assembly) == 0)
+                               return null;
+
+                       var name = new AssemblyNameDefinition ();
+
+                       name.HashAlgorithm = (AssemblyHashAlgorithm) ReadUInt32 ();
+
+                       PopulateVersionAndFlags (name);
+
+                       name.PublicKey = ReadBlob ();
+
+                       PopulateNameAndCulture (name);
+
+                       return name;
+               }
+
+               public ModuleDefinition Populate (ModuleDefinition module)
+               {
+                       if (MoveTo (Table.Module) == 0)
+                               return module;
+
+                       Advance (2); // Generation
+
+                       module.Name = ReadString ();
+                       module.Mvid = image.GuidHeap.Read (ReadByIndexSize (image.GuidHeap.IndexSize));
+
+                       return module;
+               }
+
+               public Collection<AssemblyNameReference> ReadAssemblyReferences ()
+               {
+                       int length = MoveTo (Table.AssemblyRef);
+                       var references = new Collection<AssemblyNameReference> (length);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var reference = new AssemblyNameReference ();
+                               reference.token = new MetadataToken (TokenType.AssemblyRef, i);
+
+                               PopulateVersionAndFlags (reference);
+
+                               reference.PublicKeyToken = ReadBlob ();
+
+                               PopulateNameAndCulture (reference);
+
+                               reference.Hash = ReadBlob ();
+
+                               references.Add (reference);
+                       }
+
+                       return references;
+               }
+
+               public MethodDefinition ReadEntryPoint ()
+               {
+                       if (module.Kind != ModuleKind.Console && module.Kind != ModuleKind.Windows)
+                               return null;
+
+                       var token = new MetadataToken (module.Image.EntryPointToken);
+
+                       return GetMethodDefinition (token.RID);
+               }
+
+               public Collection<ModuleDefinition> ReadModules ()
+               {
+                       var modules = new Collection<ModuleDefinition> (1);
+                       modules.Add (this.module);
+
+                       int length = MoveTo (Table.File);
+                       for (uint i = 1; i <= length; i++) {
+                               var attributes = (FileAttributes) ReadUInt32 ();
+                               var name = ReadString ();
+                               ReadBlobIndex ();
+
+                               if (attributes != FileAttributes.ContainsMetaData)
+                                       continue;
+
+                               var parameters = new ReaderParameters {
+                                       ReadingMode = module.ReadingMode,
+                                       SymbolReaderProvider = module.SymbolReaderProvider,
+                               };
+
+                               modules.Add (ModuleDefinition.ReadModule (
+                                       GetModuleFileName (name), parameters));
+                       }
+
+                       return modules;
+               }
+
+               string GetModuleFileName (string name)
+               {
+                       if (module.FullyQualifiedName == null)
+                               throw new NotSupportedException ();
+
+                       var path = Path.GetDirectoryName (module.FullyQualifiedName);
+                       return Path.Combine (path, name);
+               }
+
+               public Collection<ModuleReference> ReadModuleReferences ()
+               {
+                       int length = MoveTo (Table.ModuleRef);
+                       var references = new Collection<ModuleReference> (length);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var reference = new ModuleReference (ReadString ());
+                               reference.token = new MetadataToken (TokenType.ModuleRef, i);
+
+                               references.Add (reference);
+                       }
+
+                       return references;
+               }
+
+               public bool HasFileResource ()
+               {
+                       int length = MoveTo (Table.File);
+                       if (length == 0)
+                               return false;
+
+                       for (uint i = 1; i <= length; i++)
+                               if (ReadFileRecord (i).Col1 == FileAttributes.ContainsNoMetaData)
+                                       return true;
+
+                       return false;
+               }
+
+               public Collection<Resource> ReadResources ()
+               {
+                       int length = MoveTo (Table.ManifestResource);
+                       var resources = new Collection<Resource> (length);
+
+                       for (int i = 1; i <= length; i++) {
+                               var offset = ReadUInt32 ();
+                               var flags = (ManifestResourceAttributes) ReadUInt32 ();
+                               var name = ReadString ();
+                               var implementation = ReadMetadataToken (CodedIndex.Implementation);
+
+                               Resource resource;
+
+                               if (implementation.RID == 0) {
+                                       resource = new EmbeddedResource (name, flags, offset, this);
+                               } else if (implementation.TokenType == TokenType.AssemblyRef) {
+                                       resource = new AssemblyLinkedResource (name, flags) {
+                                               Assembly = (AssemblyNameReference) GetTypeReferenceScope (implementation),
+                                       };
+                               } else if (implementation.TokenType == TokenType.File) {
+                                       var file_record = ReadFileRecord (implementation.RID);
+
+                                       resource = new LinkedResource (name, flags) {
+                                               File = file_record.Col2,
+                                               hash = ReadBlob (file_record.Col3)
+                                       };
+                               } else
+                                       throw new NotSupportedException ();
+
+                               resources.Add (resource);
+                       }
+
+                       return resources;
+               }
+
+               Row<FileAttributes, string, uint> ReadFileRecord (uint rid)
+               {
+                       var position = this.position;
+
+                       if (!MoveTo (Table.File, rid))
+                               throw new ArgumentException ();
+
+                       var record = new Row<FileAttributes, string, uint> (
+                               (FileAttributes) ReadUInt32 (),
+                               ReadString (),
+                               ReadBlobIndex ());
+
+                       this.position = position;
+
+                       return record;
+               }
+
+               public MemoryStream GetManagedResourceStream (uint offset)
+               {
+                       var rva = image.Resources.VirtualAddress;
+                       var section = image.GetSectionAtVirtualAddress (rva);
+                       var position = (rva - section.VirtualAddress) + offset;
+                       var buffer = section.Data;
+
+                       var length = buffer [position]
+                               | (buffer [position + 1] << 8)
+                               | (buffer [position + 2] << 16)
+                               | (buffer [position + 3] << 24);
+
+                       return new MemoryStream (buffer, (int) position + 4, length);
+               }
+
+               void PopulateVersionAndFlags (AssemblyNameReference name)
+               {
+                       name.Version = new Version (
+                               ReadUInt16 (),
+                               ReadUInt16 (),
+                               ReadUInt16 (),
+                               ReadUInt16 ());
+
+                       name.Attributes = (AssemblyAttributes) ReadUInt32 ();
+               }
+
+               void PopulateNameAndCulture (AssemblyNameReference name)
+               {
+                       name.Name = ReadString ();
+                       name.Culture = ReadString ();
+               }
+
+               public TypeDefinitionCollection ReadTypes ()
+               {
+                       InitializeTypeDefinitions ();
+                       var mtypes = metadata.Types;
+                       var type_count = mtypes.Length - metadata.NestedTypes.Count;
+                       var types = new TypeDefinitionCollection (module, type_count);
+
+                       for (int i = 0; i < mtypes.Length; i++) {
+                               var type = mtypes [i];
+                               if (IsNested (type.Attributes))
+                                       continue;
+
+                               types.Add (type);
+                       }
+
+                       return types;
+               }
+
+               void InitializeTypeDefinitions ()
+               {
+                       if (metadata.Types != null)
+                               return;
+
+                       InitializeNestedTypes ();
+                       InitializeFields ();
+                       InitializeMethods ();
+
+                       int length = MoveTo (Table.TypeDef);
+                       var types = metadata.Types = new TypeDefinition [length];
+
+                       for (uint i = 0; i < length; i++) {
+                               if (types [i] != null)
+                                       continue;
+
+                               types [i] = ReadType (i + 1);
+                       }
+               }
+
+               static bool IsNested (TypeAttributes attributes)
+               {
+                       switch (attributes & TypeAttributes.VisibilityMask) {
+                       case TypeAttributes.NestedAssembly:
+                       case TypeAttributes.NestedFamANDAssem:
+                       case TypeAttributes.NestedFamily:
+                       case TypeAttributes.NestedFamORAssem:
+                       case TypeAttributes.NestedPrivate:
+                       case TypeAttributes.NestedPublic:
+                               return true;
+                       default:
+                               return false;
+                       }
+               }
+
+               public bool HasNestedTypes (TypeDefinition type)
+               {
+                       uint [] mapping;
+                       InitializeNestedTypes ();
+
+                       if (!metadata.TryGetNestedTypeMapping (type, out mapping))
+                               return false;
+
+                       return mapping.Length > 0;
+               }
+
+               public Collection<TypeDefinition> ReadNestedTypes (TypeDefinition type)
+               {
+                       InitializeNestedTypes ();
+                       uint [] mapping;
+                       if (!metadata.TryGetNestedTypeMapping (type, out mapping))
+                               return new MemberDefinitionCollection<TypeDefinition> (type);
+
+                       var nested_types = new MemberDefinitionCollection<TypeDefinition> (type, mapping.Length);
+
+                       for (int i = 0; i < mapping.Length; i++)
+                               nested_types.Add (GetTypeDefinition (mapping [i]));
+
+                       metadata.RemoveNestedTypeMapping (type);
+
+                       return nested_types;
+               }
+
+               void InitializeNestedTypes ()
+               {
+                       if (metadata.NestedTypes != null)
+                               return;
+
+                       var length = MoveTo (Table.NestedClass);
+
+                       metadata.NestedTypes = new Dictionary<uint, uint []> (length);
+                       metadata.ReverseNestedTypes = new Dictionary<uint, uint> (length);
+
+                       if (length == 0)
+                               return;
+
+                       for (int i = 1; i <= length; i++) {
+                               var nested = ReadTableIndex (Table.TypeDef);
+                               var declaring = ReadTableIndex (Table.TypeDef);
+
+                               AddNestedMapping (declaring, nested);
+                       }
+               }
+
+               void AddNestedMapping (uint declaring, uint nested)
+               {
+                       metadata.SetNestedTypeMapping (declaring, AddMapping (metadata.NestedTypes, declaring, nested));
+                       metadata.SetReverseNestedTypeMapping (nested, declaring);
+               }
+
+               static TValue [] AddMapping<TKey, TValue> (Dictionary<TKey, TValue []> cache, TKey key, TValue value)
+               {
+                       TValue [] mapped;
+                       if (!cache.TryGetValue (key, out mapped)) {
+                               mapped = new [] { value };
+                               return mapped;
+                       }
+
+                       var new_mapped = new TValue [mapped.Length + 1];
+                       Array.Copy (mapped, new_mapped, mapped.Length);
+                       new_mapped [mapped.Length] = value;
+                       return new_mapped;
+               }
+
+               TypeDefinition ReadType (uint rid)
+               {
+                       if (!MoveTo (Table.TypeDef, rid))
+                               return null;
+
+                       var attributes = (TypeAttributes) ReadUInt32 ();
+                       var name = ReadString ();
+                       var @namespace = ReadString ();
+                       var type = new TypeDefinition (@namespace, name, attributes);
+                       type.token = new MetadataToken (TokenType.TypeDef, rid);
+                       type.scope = module;
+                       type.module = module;
+
+                       metadata.AddTypeDefinition (type);
+
+                       this.context = type;
+
+                       type.BaseType = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
+
+                       type.fields_range = ReadFieldsRange (rid);
+                       type.methods_range = ReadMethodsRange (rid);
+
+                       if (IsNested (attributes))
+                               type.DeclaringType = GetNestedTypeDeclaringType (type);
+
+                       return type;
+               }
+
+               TypeDefinition GetNestedTypeDeclaringType (TypeDefinition type)
+               {
+                       uint declaring_rid;
+                       if (!metadata.TryGetReverseNestedTypeMapping (type, out declaring_rid))
+                               return null;
+
+                       metadata.RemoveReverseNestedTypeMapping (type);
+                       return GetTypeDefinition (declaring_rid);
+               }
+
+               Range ReadFieldsRange (uint type_index)
+               {
+                       return ReadListRange (type_index, Table.TypeDef, Table.Field);
+               }
+
+               Range ReadMethodsRange (uint type_index)
+               {
+                       return ReadListRange (type_index, Table.TypeDef, Table.Method);
+               }
+
+               Range ReadListRange (uint current_index, Table current, Table target)
+               {
+                       var list = new Range ();
+
+                       list.Start = ReadTableIndex (target);
+
+                       uint next_index;
+                       var current_table = image.TableHeap [current];
+
+                       if (current_index == current_table.Length)
+                               next_index = image.TableHeap [target].Length + 1;
+                       else {
+                               var position = Position;
+                               Position += (uint) (current_table.RowSize - image.GetTableIndexSize (target));
+                               next_index = ReadTableIndex (target);
+                               Position = position;
+                       }
+
+                       list.Length = next_index - list.Start;
+
+                       return list;
+               }
+
+               public Row<short, int> ReadTypeLayout (TypeDefinition type)
+               {
+                       InitializeTypeLayouts ();
+                       Row<ushort, uint> class_layout;
+                       var rid = type.token.RID;
+                       if (!metadata.ClassLayouts.TryGetValue (rid, out class_layout))
+                               return new Row<short, int> (Mixin.NoDataMarker, Mixin.NoDataMarker);
+
+                       type.PackingSize = (short) class_layout.Col1;
+                       type.ClassSize = (int) class_layout.Col2;
+
+                       metadata.ClassLayouts.Remove (rid);
+
+                       return new Row<short, int> ((short) class_layout.Col1, (int) class_layout.Col2);
+               }
+
+               void InitializeTypeLayouts ()
+               {
+                       if (metadata.ClassLayouts != null)
+                               return;
+
+                       int length = MoveTo (Table.ClassLayout);
+
+                       var class_layouts = metadata.ClassLayouts = new Dictionary<uint, Row<ushort, uint>> (length);
+
+                       for (uint i = 0; i < length; i++) {
+                               var packing_size = ReadUInt16 ();
+                               var class_size = ReadUInt32 ();
+
+                               var parent = ReadTableIndex (Table.TypeDef);
+
+                               class_layouts.Add (parent, new Row<ushort, uint> (packing_size, class_size));
+                       }
+               }
+
+               public TypeReference GetTypeDefOrRef (MetadataToken token)
+               {
+                       return (TypeReference) LookupToken (token);
+               }
+
+               TypeDefinition GetTypeDefinition (uint rid)
+               {
+                       InitializeTypeDefinitions ();
+
+                       var type = metadata.GetTypeDefinition (rid);
+                       if (type != null)
+                               return type;
+
+                       return ReadTypeDefinition (rid);
+               }
+
+               TypeDefinition ReadTypeDefinition (uint rid)
+               {
+                       if (!MoveTo (Table.TypeDef, rid))
+                               return null;
+
+                       return ReadType (rid);
+               }
+
+               void InitializeTypeReferences ()
+               {
+                       if (metadata.TypeReferences != null)
+                               return;
+
+                       metadata.TypeReferences = new TypeReference [image.GetTableLength (Table.TypeRef)];
+               }
+
+               public TypeReference GetTypeReference (string scope, string full_name)
+               {
+                       InitializeTypeReferences ();
+
+                       var length = metadata.TypeReferences.Length;
+
+                       for (uint i = 1; i <= length; i++) {
+                               var type = GetTypeReference (i);
+
+                               if (type.FullName != full_name)
+                                       continue;
+
+                               if (string.IsNullOrEmpty (scope))
+                                       return type;
+
+                               if (type.Scope.Name == scope)
+                                       return type;
+                       }
+
+                       return null;
+               }
+
+               TypeReference GetTypeReference (uint rid)
+               {
+                       InitializeTypeReferences ();
+
+                       var type = metadata.GetTypeReference (rid);
+                       if (type != null)
+                               return type;
+
+                       type = ReadTypeReference (rid);
+                       if (type != null)
+                                metadata.AddTypeReference (type);
+
+                       return type;
+               }
+
+               TypeReference ReadTypeReference (uint rid)
+               {
+                       if (!MoveTo (Table.TypeRef, rid))
+                               return null;
+
+                       TypeReference declaring_type = null;
+                       IMetadataScope scope;
+
+                       var scope_token = ReadMetadataToken (CodedIndex.ResolutionScope);
+
+                       if (scope_token.TokenType == TokenType.TypeRef) {
+                               declaring_type = GetTypeDefOrRef (scope_token);
+
+                               scope = declaring_type != null
+                                       ? declaring_type.Scope
+                                       : module;
+                       } else
+                               scope = GetTypeReferenceScope (scope_token);
+
+                       var name = ReadString ();
+                       var @namespace = ReadString ();
+
+                       var type = new TypeReference (
+                               @namespace,
+                               name,
+                               module,
+                               scope);
+
+                       type.DeclaringType = declaring_type;
+                       type.token = new MetadataToken (TokenType.TypeRef, rid);
+
+                       MetadataSystem.TryProcessPrimitiveType (type);
+
+                       return type;
+               }
+
+               IMetadataScope GetTypeReferenceScope (MetadataToken scope)
+               {
+                       switch (scope.TokenType) {
+                       // FIXME: both assembly refs and module refs should be in their
+                       // own arrays, in case of someone modify the collections before
+                       // this code is called
+                       case TokenType.AssemblyRef:
+                               return module.AssemblyReferences [(int) scope.RID - 1];
+                       case TokenType.ModuleRef:
+                               return module.ModuleReferences [(int) scope.RID - 1];
+                       case TokenType.Module:
+                               return module;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
+
+               public IEnumerable<TypeReference> GetTypeReferences ()
+               {
+                       InitializeTypeReferences ();
+
+                       var length = image.GetTableLength (Table.TypeRef);
+
+                       var type_references = new TypeReference [length];
+
+                       for (uint i = 1; i <= length; i++)
+                               type_references [i - 1] = GetTypeReference (i);
+
+                       return type_references;
+               }
+
+               TypeReference GetTypeSpecification (uint rid)
+               {
+                       if (!MoveTo (Table.TypeSpec, rid))
+                               return null;
+
+                       var reader = ReadSignature (ReadBlobIndex ());
+                       return reader.ReadTypeSignature ();
+               }
+
+               SignatureReader ReadSignature (uint signature)
+               {
+                       return new SignatureReader (signature, this);
+               }
+
+               public bool HasInterfaces (TypeDefinition type)
+               {
+                       InitializeInterfaces ();
+                       MetadataToken [] mapping;
+
+                       return metadata.TryGetInterfaceMapping (type, out mapping);
+               }
+
+               public Collection<TypeReference> ReadInterfaces (TypeDefinition type)
+               {
+                       InitializeInterfaces ();
+                       MetadataToken [] mapping;
+
+                       if (!metadata.TryGetInterfaceMapping (type, out mapping))
+                               return new Collection<TypeReference> ();
+
+                       var interfaces = new Collection<TypeReference> (mapping.Length);
+
+                       this.context = type;
+
+                       for (int i = 0; i < mapping.Length; i++)
+                               interfaces.Add (GetTypeDefOrRef (mapping [i]));
+
+                       metadata.RemoveInterfaceMapping (type);
+
+                       return interfaces;
+               }
+
+               void InitializeInterfaces ()
+               {
+                       if (metadata.Interfaces != null)
+                               return;
+
+                       int length = MoveTo (Table.InterfaceImpl);
+
+                       metadata.Interfaces = new Dictionary<uint, MetadataToken []> (length);
+
+                       for (int i = 0; i < length; i++) {
+                               var type = ReadTableIndex (Table.TypeDef);
+                               var @interface = ReadMetadataToken (CodedIndex.TypeDefOrRef);
+
+                               AddInterfaceMapping (type, @interface);
+                       }
+               }
+
+               void AddInterfaceMapping (uint type, MetadataToken @interface)
+               {
+                       metadata.SetInterfaceMapping (type, AddMapping (metadata.Interfaces, type, @interface));
+               }
+
+               public Collection<FieldDefinition> ReadFields (TypeDefinition type)
+               {
+                       var fields_range = type.fields_range;
+                       if (fields_range.Length == 0)
+                               return new MemberDefinitionCollection<FieldDefinition> (type);
+
+                       var fields = new MemberDefinitionCollection<FieldDefinition> (type, (int) fields_range.Length);
+                       this.context = type;
+
+                       MoveTo (Table.Field, fields_range.Start);
+                       for (uint i = 0; i < fields_range.Length; i++)
+                               fields.Add (ReadField (fields_range.Start + i));
+
+                       return fields;
+               }
+
+               FieldDefinition ReadField (uint field_rid)
+               {
+                       var attributes = (FieldAttributes) ReadUInt16 ();
+                       var name = ReadString ();
+                       var signature = ReadBlobIndex ();
+
+                       var field = new FieldDefinition (name, attributes, ReadFieldType (signature));
+                       field.token = new MetadataToken (TokenType.Field, field_rid);
+                       metadata.AddFieldDefinition (field);
+
+                       return field;
+               }
+
+               void InitializeFields ()
+               {
+                       if (metadata.Fields != null)
+                               return;
+
+                       metadata.Fields = new FieldDefinition [image.GetTableLength (Table.Field)];
+               }
+
+               TypeReference ReadFieldType (uint signature)
+               {
+                       var reader = ReadSignature (signature);
+
+                       const byte field_sig = 0x6;
+
+                       if (reader.ReadByte () != field_sig)
+                               throw new NotSupportedException ();
+
+                       return reader.ReadTypeSignature ();
+               }
+
+               public int ReadFieldRVA (FieldDefinition field)
+               {
+                       InitializeFieldRVAs ();
+                       var rid = field.token.RID;
+
+                       RVA rva;
+                       if (!metadata.FieldRVAs.TryGetValue (rid, out rva))
+                               return 0;
+
+                       var size = GetFieldTypeSize (field.FieldType);
+
+                       if (size == 0 || rva == 0)
+                               return 0;
+
+                       metadata.FieldRVAs.Remove (rid);
+
+                       field.InitialValue = GetFieldInitializeValue (size, rva);
+
+                       return (int) rva;
+               }
+
+               byte [] GetFieldInitializeValue (int size, RVA rva)
+               {
+                       var section = image.GetSectionAtVirtualAddress (rva);
+                       if (section == null)
+                               return Empty<byte>.Array;
+
+                       var value = new byte [size];
+                       Buffer.BlockCopy (section.Data, (int) (rva - section.VirtualAddress), value, 0, size);
+                       return value;
+               }
+
+               static int GetFieldTypeSize (TypeReference type)
+               {
+                       int size = 0;
+
+                       switch (type.etype) {
+                       case ElementType.Boolean:
+                       case ElementType.U1:
+                       case ElementType.I1:
+                               size = 1;
+                               break;
+                       case ElementType.U2:
+                       case ElementType.I2:
+                       case ElementType.Char:
+                               size = 2;
+                               break;
+                       case ElementType.U4:
+                       case ElementType.I4:
+                       case ElementType.R4:
+                               size = 4;
+                               break;
+                       case ElementType.U8:
+                       case ElementType.I8:
+                       case ElementType.R8:
+                               size = 8;
+                               break;
+                       case ElementType.Ptr:
+                       case ElementType.FnPtr:
+                               size = IntPtr.Size;
+                               break;
+                       case ElementType.CModOpt:
+                       case ElementType.CModReqD:
+                               return GetFieldTypeSize (((IModifierType) type).ElementType);
+                       default:
+                               var field_type = type.CheckedResolve ();
+                               if (field_type.HasLayoutInfo)
+                                       size = field_type.ClassSize;
+
+                               break;
+                       }
+
+                       return size;
+               }
+
+               void InitializeFieldRVAs ()
+               {
+                       if (metadata.FieldRVAs != null)
+                               return;
+
+                       int length = MoveTo (Table.FieldRVA);
+
+                       var field_rvas = metadata.FieldRVAs = new Dictionary<uint, uint> (length);
+
+                       for (int i = 0; i < length; i++) {
+                               var rva = ReadUInt32 ();
+                               var field = ReadTableIndex (Table.Field);
+
+                               field_rvas.Add (field, rva);
+                       }
+               }
+
+               public int ReadFieldLayout (FieldDefinition field)
+               {
+                       InitializeFieldLayouts ();
+                       var rid = field.token.RID;
+                       uint offset;
+                       if (!metadata.FieldLayouts.TryGetValue (rid, out offset))
+                               return Mixin.NoDataMarker;
+
+                       metadata.FieldLayouts.Remove (rid);
+
+                       return (int) offset;
+               }
+
+               void InitializeFieldLayouts ()
+               {
+                       if (metadata.FieldLayouts != null)
+                               return;
+
+                       int length = MoveTo (Table.FieldLayout);
+
+                       var field_layouts = metadata.FieldLayouts = new Dictionary<uint, uint> (length);
+
+                       for (int i = 0; i < length; i++) {
+                               var offset = ReadUInt32 ();
+                               var field = ReadTableIndex (Table.Field);
+
+                               field_layouts.Add (field, offset);
+                       }
+               }
+
+               public bool HasEvents (TypeDefinition type)
+               {
+                       InitializeEvents ();
+
+                       Range range;
+                       if (!metadata.TryGetEventsRange (type, out range))
+                               return false;
+
+                       return range.Length > 0;
+               }
+
+               public Collection<EventDefinition> ReadEvents (TypeDefinition type)
+               {
+                       InitializeEvents ();
+                       Range range;
+
+                       if (!metadata.TryGetEventsRange (type, out range))
+                               return new MemberDefinitionCollection<EventDefinition> (type);
+
+                       var events = new MemberDefinitionCollection<EventDefinition> (type, (int) range.Length);
+
+                       metadata.RemoveEventsRange (type);
+
+                       if (range.Length == 0 || !MoveTo (Table.Event, range.Start))
+                               return events;
+
+                       this.context = type;
+
+                       for (uint i = 0; i < range.Length; i++)
+                               events.Add (ReadEvent (range.Start + i));
+
+                       return events;
+               }
+
+               EventDefinition ReadEvent (uint event_rid)
+               {
+                       var attributes = (EventAttributes) ReadUInt16 ();
+                       var name = ReadString ();
+                       var event_type = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
+
+                       var @event = new EventDefinition (name, attributes, event_type);
+                       @event.token = new MetadataToken (TokenType.Event, event_rid);
+                       return @event;
+               }
+
+               void InitializeEvents ()
+               {
+                       if (metadata.Events != null)
+                               return;
+
+                       int length = MoveTo (Table.EventMap);
+
+                       metadata.Events = new Dictionary<uint, Range> (length);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var type_rid = ReadTableIndex (Table.TypeDef);
+                               Range events_range = ReadEventsRange (i);
+                               metadata.AddEventsRange (type_rid, events_range);
+                       }
+               }
+
+               Range ReadEventsRange (uint rid)
+               {
+                       return ReadListRange (rid, Table.EventMap, Table.Event);
+               }
+
+               public bool HasProperties (TypeDefinition type)
+               {
+                       InitializeProperties ();
+
+                       Range range;
+                       if (!metadata.TryGetPropertiesRange (type, out range))
+                               return false;
+
+                       return range.Length > 0;
+               }
+
+               public Collection<PropertyDefinition> ReadProperties (TypeDefinition type)
+               {
+                       InitializeProperties ();
+
+                       Range range;
+
+                       if (!metadata.TryGetPropertiesRange (type, out range))
+                               return new MemberDefinitionCollection<PropertyDefinition> (type);
+
+                       metadata.RemovePropertiesRange (type);
+
+                       var properties = new MemberDefinitionCollection<PropertyDefinition> (type, (int) range.Length);
+
+                       if (range.Length == 0 || !MoveTo (Table.Property, range.Start))
+                               return properties;
+
+                       this.context = type;
+
+                       for (uint i = 0; i < range.Length; i++)
+                               properties.Add (ReadProperty (range.Start + i));
+
+                       return properties;
+               }
+
+               PropertyDefinition ReadProperty (uint property_rid)
+               {
+                       var attributes = (PropertyAttributes) ReadUInt16 ();
+                       var name = ReadString ();
+                       var signature = ReadBlobIndex ();
+
+                       var reader = ReadSignature (signature);
+                       const byte property_signature = 0x8;
+
+                       var calling_convention = reader.ReadByte ();
+
+                       if ((calling_convention & property_signature) == 0)
+                               throw new NotSupportedException ();
+
+                       var has_this = (calling_convention & 0x20) != 0;
+
+                       reader.ReadCompressedUInt32 (); // count
+
+                       var property = new PropertyDefinition (name, attributes, reader.ReadTypeSignature ());
+                       property.HasThis = has_this;
+                       property.token = new MetadataToken (TokenType.Property, property_rid);
+
+                       return property;
+               }
+
+               void InitializeProperties ()
+               {
+                       if (metadata.Properties != null)
+                               return;
+
+                       int length = MoveTo (Table.PropertyMap);
+
+                       metadata.Properties = new Dictionary<uint, Range> (length);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var type_rid = ReadTableIndex (Table.TypeDef);
+                               var properties_range = ReadPropertiesRange (i);
+                               metadata.AddPropertiesRange (type_rid, properties_range);
+                       }
+               }
+
+               Range ReadPropertiesRange (uint rid)
+               {
+                       return ReadListRange (rid, Table.PropertyMap, Table.Property);
+               }
+
+               public MethodSemanticsAttributes ReadMethodSemantics (MethodDefinition method)
+               {
+                       InitializeMethodSemantics ();
+                       Row<MethodSemanticsAttributes, MetadataToken> row;
+                       if (!metadata.Semantics.TryGetValue (method.token.RID, out row))
+                               return MethodSemanticsAttributes.None;
+
+                       method.SemanticsAttributes = row.Col1;
+                       var type = method.DeclaringType;
+
+                       switch (row.Col1) {
+                       case MethodSemanticsAttributes.AddOn:
+                               GetEvent (type, row.Col2).add_method = method;
+                               break;
+                       case MethodSemanticsAttributes.Fire:
+                               GetEvent (type, row.Col2).invoke_method = method;
+                               break;
+                       case MethodSemanticsAttributes.RemoveOn:
+                               GetEvent (type, row.Col2).remove_method = method;
+                               break;
+                       case MethodSemanticsAttributes.Getter:
+                               GetProperty (type, row.Col2).get_method = method;
+                               break;
+                       case MethodSemanticsAttributes.Setter:
+                               GetProperty (type, row.Col2).set_method = method;
+                               break;
+                       case MethodSemanticsAttributes.Other:
+                               switch (row.Col2.TokenType) {
+                               case TokenType.Event: {
+                                       var @event = GetEvent (type, row.Col2);
+                                       if (@event.other_methods == null)
+                                               @event.other_methods = new Collection<MethodDefinition> ();
+
+                                       @event.other_methods.Add (method);
+                                       break;
+                               }
+                               case TokenType.Property: {
+                                       var property = GetProperty (type, row.Col2);
+                                       if (property.other_methods == null)
+                                               property.other_methods = new Collection<MethodDefinition> ();
+
+                                       property.other_methods.Add (method);
+
+                                       break;
+                               }
+                               default:
+                                       throw new NotSupportedException ();
+                               }
+                               break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       metadata.Semantics.Remove (method.token.RID);
+
+                       return row.Col1;
+               }
+
+               static EventDefinition GetEvent (TypeDefinition type, MetadataToken token)
+               {
+                       if (token.TokenType != TokenType.Event)
+                               throw new ArgumentException ();
+
+                       return GetMember (type.Events, token);
+               }
+
+               static PropertyDefinition GetProperty (TypeDefinition type, MetadataToken token)
+               {
+                       if (token.TokenType != TokenType.Property)
+                               throw new ArgumentException ();
+
+                       return GetMember (type.Properties, token);
+               }
+
+               static TMember GetMember<TMember> (Collection<TMember> members, MetadataToken token) where TMember : IMemberDefinition
+               {
+                       for (int i = 0; i < members.Count; i++) {
+                               var member = members [i];
+                               if (member.MetadataToken == token)
+                                       return member;
+                       }
+
+                       throw new ArgumentException ();
+               }
+
+               void InitializeMethodSemantics ()
+               {
+                       if (metadata.Semantics != null)
+                               return;
+
+                       int length = MoveTo (Table.MethodSemantics);
+
+                       var semantics = metadata.Semantics = new Dictionary<uint, Row<MethodSemanticsAttributes, MetadataToken>> (0);
+
+                       for (uint i = 0; i < length; i++) {
+                               var attributes = (MethodSemanticsAttributes) ReadUInt16 ();
+                               var method_rid = ReadTableIndex (Table.Method);
+                               var association = ReadMetadataToken (CodedIndex.HasSemantics);
+
+                               semantics [method_rid] = new Row<MethodSemanticsAttributes, MetadataToken> (attributes, association);
+                       }
+               }
+
+               public PropertyDefinition ReadMethods (PropertyDefinition property)
+               {
+                       ReadAllSemantics (property.DeclaringType);
+                       return property;
+               }
+
+               public EventDefinition ReadMethods (EventDefinition @event)
+               {
+                       ReadAllSemantics (@event.DeclaringType);
+                       return @event;
+               }
+
+               static void ReadAllSemantics (TypeDefinition type)
+               {
+                       var methods = type.Methods;
+                       for (int i = 0; i < methods.Count; i++)
+                               methods [i].ReadSemantics ();
+               }
+
+               Range ReadParametersRange (uint method_rid)
+               {
+                       return ReadListRange (method_rid, Table.Method, Table.Param);
+               }
+
+               public Collection<MethodDefinition> ReadMethods (TypeDefinition type)
+               {
+                       var methods_range = type.methods_range;
+                       if (methods_range.Length == 0)
+                               return new MemberDefinitionCollection<MethodDefinition> (type);
+
+                       var methods = new MemberDefinitionCollection<MethodDefinition> (type, (int) methods_range.Length);
+
+                       MoveTo (Table.Method, methods_range.Start);
+                       for (uint i = 0; i < methods_range.Length; i++)
+                               ReadMethod (methods_range.Start + i, methods);
+
+                       return methods;
+               }
+
+               void InitializeMethods ()
+               {
+                       if (metadata.Methods != null)
+                               return;
+
+                       metadata.Methods = new MethodDefinition [image.GetTableLength (Table.Method)];
+               }
+
+               void ReadMethod (uint method_rid, Collection<MethodDefinition> methods)
+               {
+                       var method = new MethodDefinition ();
+                       method.rva = ReadUInt32 ();
+                       method.ImplAttributes = (MethodImplAttributes) ReadUInt16 ();
+                       method.Attributes = (MethodAttributes) ReadUInt16 ();
+                       method.Name = ReadString ();
+                       method.token = new MetadataToken (TokenType.Method, method_rid);
+
+                       methods.Add (method); // attach method
+
+                       var signature = ReadBlobIndex ();
+                       var param_range = ReadParametersRange (method_rid);
+
+                       this.context = method;
+
+                       ReadMethodSignature (signature, method);
+                       metadata.AddMethodDefinition (method);
+
+                       if (param_range.Length == 0)
+                               return;
+
+                       var position = base.position;
+                       ReadParameters (method, param_range);
+                       base.position = position;
+               }
+
+               void ReadParameters (MethodDefinition method, Range param_range)
+               {
+                       MoveTo (Table.Param, param_range.Start);
+                       for (uint i = 0; i < param_range.Length; i++) {
+                               var attributes = (ParameterAttributes) ReadUInt16 ();
+                               var sequence = ReadUInt16 ();
+                               var name = ReadString ();
+
+                               var parameter = sequence == 0
+                                       ? method.MethodReturnType.Parameter
+                                       : method.Parameters [sequence - 1];
+
+                               parameter.token = new MetadataToken (TokenType.Param, param_range.Start + i);
+                               parameter.Name = name;
+                               parameter.Attributes = attributes;
+                       }
+               }
+
+               void ReadMethodSignature (uint signature, IMethodSignature method)
+               {
+                       var reader = ReadSignature (signature);
+                       reader.ReadMethodSignature (method);
+               }
+
+               public PInvokeInfo ReadPInvokeInfo (MethodDefinition method)
+               {
+                       InitializePInvokes ();
+                       Row<PInvokeAttributes, uint, uint> row;
+
+                       var rid = method.token.RID;
+
+                       if (!metadata.PInvokes.TryGetValue (rid, out row))
+                               return null;
+
+                       metadata.PInvokes.Remove (rid);
+
+                       return new PInvokeInfo (
+                               row.Col1,
+                               image.StringHeap.Read (row.Col2),
+                               module.ModuleReferences [(int) row.Col3 - 1]);
+               }
+
+               void InitializePInvokes ()
+               {
+                       if (metadata.PInvokes != null)
+                               return;
+
+                       int length = MoveTo (Table.ImplMap);
+
+                       var pinvokes = metadata.PInvokes = new Dictionary<uint, Row<PInvokeAttributes, uint, uint>> (length);
+
+                       for (int i = 1; i <= length; i++) {
+                               var attributes = (PInvokeAttributes) ReadUInt16 ();
+                               var method = ReadMetadataToken (CodedIndex.MemberForwarded);
+                               var name = ReadStringIndex ();
+                               var scope = ReadTableIndex (Table.File);
+
+                               if (method.TokenType != TokenType.Method)
+                                       continue;
+
+                               pinvokes.Add (method.RID, new Row<PInvokeAttributes, uint, uint> (attributes, name, scope));
+                       }
+               }
+
+               public bool HasGenericParameters (IGenericParameterProvider provider)
+               {
+                       InitializeGenericParameters ();
+
+                       Range range;
+                       if (!metadata.TryGetGenericParameterRange (provider, out range))
+                               return false;
+
+                       return range.Length > 0;
+               }
+
+               public Collection<GenericParameter> ReadGenericParameters (IGenericParameterProvider provider)
+               {
+                       InitializeGenericParameters ();
+
+                       Range range;
+                       if (!metadata.TryGetGenericParameterRange (provider, out range)
+                               || !MoveTo (Table.GenericParam, range.Start))
+                               return new Collection<GenericParameter> ();
+
+                       metadata.RemoveGenericParameterRange (provider);
+
+                       var generic_parameters = new Collection<GenericParameter> ((int) range.Length);
+
+                       for (uint i = 0; i < range.Length; i++) {
+                               ReadUInt16 (); // index
+                               var flags = (GenericParameterAttributes) ReadUInt16 ();
+                               ReadMetadataToken (CodedIndex.TypeOrMethodDef);
+                               var name = ReadString ();
+
+                               var parameter = new GenericParameter (name, provider);
+                               parameter.token = new MetadataToken (TokenType.GenericParam, range.Start + i);
+                               parameter.Attributes = flags;
+
+                               generic_parameters.Add (parameter);
+                       }
+
+                       return generic_parameters;
+               }
+
+               void InitializeGenericParameters ()
+               {
+                       if (metadata.GenericParameters != null)
+                               return;
+
+                       metadata.GenericParameters = InitializeRanges (
+                               Table.GenericParam, () => {
+                                       Advance (4);
+                                       var next = ReadMetadataToken (CodedIndex.TypeOrMethodDef);
+                                       ReadStringIndex ();
+                                       return next;
+                       });
+               }
+
+               Dictionary<MetadataToken, Range> InitializeRanges (Table table, Func<MetadataToken> get_next)
+               {
+                       int length = MoveTo (table);
+                       var ranges = new Dictionary<MetadataToken, Range> (length);
+
+                       if (length == 0)
+                               return ranges;
+
+                       MetadataToken owner = MetadataToken.Zero;
+                       Range range = new Range (1, 0);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var next = get_next ();
+
+                               if (i == 1) {
+                                       owner = next;
+                                       range.Length++;
+                               } else if (next != owner) {
+                                       if (owner.RID != 0)
+                                               ranges.Add (owner, range);
+                                       range = new Range (i, 1);
+                                       owner = next;
+                               } else
+                                       range.Length++;
+                       }
+
+                       if (owner != MetadataToken.Zero)
+                               ranges.Add (owner, range);
+
+                       return ranges;
+               }
+
+               public bool HasGenericConstraints (GenericParameter generic_parameter)
+               {
+                       InitializeGenericConstraints ();
+
+                       MetadataToken [] mapping;
+                       if (!metadata.TryGetGenericConstraintMapping (generic_parameter, out mapping))
+                               return false;
+
+                       return mapping.Length > 0;
+               }
+
+               public Collection<TypeReference> ReadGenericConstraints (GenericParameter generic_parameter)
+               {
+                       InitializeGenericConstraints ();
+
+                       MetadataToken [] mapping;
+                       if (!metadata.TryGetGenericConstraintMapping (generic_parameter, out mapping))
+                               return new Collection<TypeReference> ();
+
+                       var constraints = new Collection<TypeReference> (mapping.Length);
+
+                       this.context = (IGenericContext) generic_parameter.Owner;
+
+                       for (int i = 0; i < mapping.Length; i++)
+                               constraints.Add (GetTypeDefOrRef (mapping [i]));
+
+                       metadata.RemoveGenericConstraintMapping (generic_parameter);
+
+                       return constraints;
+               }
+
+               void InitializeGenericConstraints ()
+               {
+                       if (metadata.GenericConstraints != null)
+                               return;
+
+                       var length = MoveTo (Table.GenericParamConstraint);
+
+                       metadata.GenericConstraints = new Dictionary<uint, MetadataToken []> (length);
+
+                       for (int i = 1; i <= length; i++)
+                               AddGenericConstraintMapping (
+                                       ReadTableIndex (Table.GenericParam),
+                                       ReadMetadataToken (CodedIndex.TypeDefOrRef));
+               }
+
+               void AddGenericConstraintMapping (uint generic_parameter, MetadataToken constraint)
+               {
+                       metadata.SetGenericConstraintMapping (
+                               generic_parameter,
+                               AddMapping (metadata.GenericConstraints, generic_parameter, constraint));
+               }
+
+               public bool HasOverrides (MethodDefinition method)
+               {
+                       InitializeOverrides ();
+                       MetadataToken [] mapping;
+
+                       if (!metadata.TryGetOverrideMapping (method, out mapping))
+                               return false;
+
+                       return mapping.Length > 0;
+               }
+
+               public Collection<MethodReference> ReadOverrides (MethodDefinition method)
+               {
+                       InitializeOverrides ();
+
+                       MetadataToken [] mapping;
+                       if (!metadata.TryGetOverrideMapping (method, out mapping))
+                               return new Collection<MethodReference> ();
+
+                       var overrides = new Collection<MethodReference> (mapping.Length);
+
+                       this.context = method;
+
+                       for (int i = 0; i < mapping.Length; i++)
+                               overrides.Add ((MethodReference) LookupToken (mapping [i]));
+
+                       metadata.RemoveOverrideMapping (method);
+
+                       return overrides;
+               }
+
+               void InitializeOverrides ()
+               {
+                       if (metadata.Overrides != null)
+                               return;
+
+                       var length = MoveTo (Table.MethodImpl);
+
+                       metadata.Overrides = new Dictionary<uint, MetadataToken []> (length);
+
+                       for (int i = 1; i <= length; i++) {
+                               ReadTableIndex (Table.TypeDef);
+
+                               var method = ReadMetadataToken (CodedIndex.MethodDefOrRef);
+                               if (method.TokenType != TokenType.Method)
+                                       throw new NotSupportedException ();
+
+                               var @override = ReadMetadataToken (CodedIndex.MethodDefOrRef);
+
+                               AddOverrideMapping (method.RID, @override);
+                       }
+               }
+
+               void AddOverrideMapping (uint method_rid, MetadataToken @override)
+               {
+                       metadata.SetOverrideMapping (
+                               method_rid,
+                               AddMapping (metadata.Overrides, method_rid, @override));
+               }
+
+               public MethodBody ReadMethodBody (MethodDefinition method)
+               {
+                       return code.ReadMethodBody (method);
+               }
+
+               public CallSite ReadCallSite (MetadataToken token)
+               {
+                       if (!MoveTo (Table.StandAloneSig, token.RID))
+                               return null;
+
+                       var signature = ReadBlobIndex ();
+
+                       var call_site = new CallSite ();
+
+                       ReadMethodSignature (signature, call_site);
+
+                       return call_site;
+               }
+
+               public VariableDefinitionCollection ReadVariables (MetadataToken local_var_token)
+               {
+                       if (!MoveTo (Table.StandAloneSig, local_var_token.RID))
+                               return null;
+
+                       var reader = ReadSignature (ReadBlobIndex ());
+                       const byte local_sig = 0x7;
+
+                       if (reader.ReadByte () != local_sig)
+                               throw new NotSupportedException ();
+
+                       var count = reader.ReadCompressedUInt32 ();
+                       if (count == 0)
+                               return null;
+
+                       var variables = new VariableDefinitionCollection ((int) count);
+
+                       for (int i = 0; i < count; i++)
+                               variables.Add (new VariableDefinition (reader.ReadTypeSignature ()));
+
+                       return variables;
+               }
+
+               public IMetadataTokenProvider LookupToken (MetadataToken token)
+               {
+                       var rid = token.RID;
+
+                       if (rid == 0)
+                               return null;
+
+                       IMetadataTokenProvider element;
+                       var position = this.position;
+                       var context = this.context;
+
+                       switch (token.TokenType) {
+                       case TokenType.TypeDef:
+                               element = GetTypeDefinition (rid);
+                               break;
+                       case TokenType.TypeRef:
+                               element = GetTypeReference (rid);
+                               break;
+                       case TokenType.TypeSpec:
+                               element = GetTypeSpecification (rid);
+                               break;
+                       case TokenType.Field:
+                               element = GetFieldDefinition (rid);
+                               break;
+                       case TokenType.Method:
+                               element = GetMethodDefinition (rid);
+                               break;
+                       case TokenType.MemberRef:
+                               element = GetMemberReference (rid);
+                               break;
+                       case TokenType.MethodSpec:
+                               element = GetMethodSpecification (rid);
+                               break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       this.position = position;
+                       this.context = context;
+
+                       return element;
+               }
+
+               public FieldDefinition GetFieldDefinition (uint rid)
+               {
+                       InitializeTypeDefinitions ();
+
+                       var field = metadata.GetFieldDefinition (rid);
+                       if (field != null)
+                               return field;
+
+                       return LookupField (rid);
+               }
+
+               FieldDefinition LookupField (uint rid)
+               {
+                       var type = metadata.GetFieldDeclaringType (rid);
+                       if (type == null)
+                               throw new NotSupportedException ();
+
+                       InitializeCollection (type.Fields);
+
+                       return metadata.GetFieldDefinition (rid);
+               }
+
+               public MethodDefinition GetMethodDefinition (uint rid)
+               {
+                       InitializeTypeDefinitions ();
+
+                       var method = metadata.GetMethodDefinition (rid);
+                       if (method != null)
+                               return method;
+
+                       return LookupMethod (rid);
+               }
+
+               MethodDefinition LookupMethod (uint rid)
+               {
+                       var type = metadata.GetMethodDeclaringType (rid);
+                       if (type == null)
+                               throw new NotSupportedException ();
+
+                       InitializeCollection (type.Methods);
+
+                       return metadata.GetMethodDefinition (rid);
+               }
+
+               MethodSpecification GetMethodSpecification (uint rid)
+               {
+                       if (!MoveTo (Table.MethodSpec, rid))
+                               return null;
+
+                       var method = (MethodReference) LookupToken (
+                               ReadMetadataToken (CodedIndex.MethodDefOrRef));
+                       var signature = ReadBlobIndex ();
+
+                       return ReadMethodSpecSignature (signature, method);
+               }
+
+               MethodSpecification ReadMethodSpecSignature (uint signature, MethodReference method)
+               {
+                       var reader = ReadSignature (signature);
+                       const byte methodspec_sig = 0x0a;
+
+                       var call_conv = reader.ReadByte ();
+
+                       if (call_conv != methodspec_sig)
+                               throw new NotSupportedException ();
+
+                       var instance = new GenericInstanceMethod (method);
+
+                       reader.ReadGenericInstanceSignature (method, instance);
+
+                       return instance;
+               }
+
+               MemberReference GetMemberReference (uint rid)
+               {
+                       InitializeMemberReferences ();
+
+                       var member = metadata.GetMemberReference (rid);
+                       if (member != null)
+                               return member;
+
+                       member = ReadMemberReference (rid);
+                       if (!member.ContainsGenericParameter)
+                               metadata.AddMemberReference (member);
+                       return member;
+               }
+
+               MemberReference ReadMemberReference (uint rid)
+               {
+                       if (!MoveTo (Table.MemberRef, rid))
+                               return null;
+
+                       var token = ReadMetadataToken (CodedIndex.MemberRefParent);
+                       var name = ReadString ();
+                       var signature = ReadBlobIndex ();
+
+                       MemberReference member;
+
+                       switch (token.TokenType) {
+                       case TokenType.TypeDef:
+                       case TokenType.TypeRef:
+                       case TokenType.TypeSpec:
+                               member = ReadTypeMemberReference (token, name, signature);
+                               break;
+                       case TokenType.Method:
+                               member = ReadMethodMemberReference (token, name, signature);
+                               break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       member.token = new MetadataToken (TokenType.MemberRef, rid);
+
+                       return member;
+               }
+
+               MemberReference ReadTypeMemberReference (MetadataToken type, string name, uint signature)
+               {
+                       var declaring_type = GetTypeDefOrRef (type);
+
+                       this.context = declaring_type;
+
+                       var member = ReadMemberReferenceSignature (signature, declaring_type);
+                       member.Name = name;
+
+                       return member;
+               }
+
+               MemberReference ReadMemberReferenceSignature (uint signature, TypeReference declaring_type)
+               {
+                       var reader = ReadSignature (signature);
+                       const byte field_sig = 0x6;
+
+                       if (reader.buffer [reader.position] == field_sig) {
+                               reader.position++;
+                               var field = new FieldReference ();
+                               field.DeclaringType = declaring_type;
+                               field.FieldType = reader.ReadTypeSignature ();
+                               return field;
+                       } else {
+                               var method = new MethodReference ();
+                               method.DeclaringType = declaring_type;
+                               reader.ReadMethodSignature (method);
+                               return method;
+                       }
+               }
+
+               MemberReference ReadMethodMemberReference (MetadataToken token, string name, uint signature)
+               {
+                       var method = GetMethodDefinition (token.RID);
+
+                       this.context = method;
+
+                       var member = ReadMemberReferenceSignature (signature, method.DeclaringType);
+                       member.Name = name;
+
+                       return member;
+               }
+
+               void InitializeMemberReferences ()
+               {
+                       if (metadata.MemberReferences != null)
+                               return;
+
+                       metadata.MemberReferences = new MemberReference [image.GetTableLength (Table.MemberRef)];
+               }
+
+               public IEnumerable<MemberReference> GetMemberReferences ()
+               {
+                       InitializeMemberReferences ();
+
+                       var length = image.GetTableLength (Table.MemberRef);
+
+                       var type_system = module.TypeSystem;
+
+                       var context = new MethodReference (string.Empty, type_system.Void);
+                       context.DeclaringType = new TypeReference (string.Empty, string.Empty, module, type_system.Corlib);
+
+                       var member_references = new MemberReference [length];
+
+                       for (uint i = 1; i <= length; i++) {
+                               this.context = context;
+                               member_references [i - 1] = GetMemberReference (i);
+                       }
+
+                       return member_references;
+               }
+
+               void InitializeConstants ()
+               {
+                       if (metadata.Constants != null)
+                               return;
+
+                       var length = MoveTo (Table.Constant);
+
+                       var constants = metadata.Constants = new Dictionary<MetadataToken, Row<ElementType, uint>> (length);
+
+                       for (uint i = 1; i <= length; i++) {
+                               var type = (ElementType) ReadUInt16 ();
+                               var owner = ReadMetadataToken (CodedIndex.HasConstant);
+                               var signature = ReadBlobIndex ();
+
+                               constants.Add (owner, new Row<ElementType, uint> (type, signature));
+                       }
+               }
+
+               public object ReadConstant (IConstantProvider owner)
+               {
+                       InitializeConstants ();
+
+                       Row<ElementType, uint> row;
+                       if (!metadata.Constants.TryGetValue (owner.MetadataToken, out row))
+                               return Mixin.NoValue;
+
+                       metadata.Constants.Remove (owner.MetadataToken);
+
+                       switch (row.Col1) {
+                       case ElementType.Class:
+                       case ElementType.Object:
+                               return null;
+                       case ElementType.String:
+                               return ReadConstantString (ReadBlob (row.Col2));
+                       default:
+                               return ReadConstantPrimitive (row.Col1, row.Col2);
+                       }
+               }
+
+               static string ReadConstantString (byte [] blob)
+               {
+                       var length = blob.Length;
+                       if ((length & 1) == 1)
+                               length--;
+
+                       return Encoding.Unicode.GetString (blob, 0, length);
+               }
+
+               object ReadConstantPrimitive (ElementType type, uint signature)
+               {
+                       var reader = ReadSignature (signature);
+                       return reader.ReadConstantSignature (type);
+               }
+
+               void InitializeCustomAttributes ()
+               {
+                       if (metadata.CustomAttributes != null)
+                               return;
+
+                       metadata.CustomAttributes = InitializeRanges (
+                               Table.CustomAttribute, () => {
+                                       var next = ReadMetadataToken (CodedIndex.HasCustomAttribute);
+                                       ReadMetadataToken (CodedIndex.CustomAttributeType);
+                                       ReadBlobIndex ();
+                                       return next;
+                       });
+               }
+
+               public bool HasCustomAttributes (ICustomAttributeProvider owner)
+               {
+                       InitializeCustomAttributes ();
+
+                       Range range;
+                       if (!metadata.TryGetCustomAttributeRange (owner, out range))
+                               return false;
+
+                       return range.Length > 0;
+               }
+
+               public Collection<CustomAttribute> ReadCustomAttributes (ICustomAttributeProvider owner)
+               {
+                       InitializeCustomAttributes ();
+
+                       Range range;
+                       if (!metadata.TryGetCustomAttributeRange (owner, out range)
+                               || !MoveTo (Table.CustomAttribute, range.Start))
+                               return new Collection<CustomAttribute> ();
+
+                       var custom_attributes = new Collection<CustomAttribute> ((int) range.Length);
+
+                       for (int i = 0; i < range.Length; i++) {
+                               ReadMetadataToken (CodedIndex.HasCustomAttribute);
+
+                               var constructor = (MethodReference) LookupToken (
+                                       ReadMetadataToken (CodedIndex.CustomAttributeType));
+
+                               var signature = ReadBlobIndex ();
+
+                               custom_attributes.Add (new CustomAttribute (signature, constructor));
+                       }
+
+                       metadata.RemoveCustomAttributeRange (owner);
+
+                       return custom_attributes;
+               }
+
+               public byte [] ReadCustomAttributeBlob (uint signature)
+               {
+                       return ReadBlob (signature);
+               }
+
+               public void ReadCustomAttributeSignature (CustomAttribute attribute)
+               {
+                       var reader = ReadSignature (attribute.signature);
+                       if (reader.ReadUInt16 () != 0x0001)
+                           throw new InvalidOperationException ();
+
+                       var constructor = attribute.Constructor;
+                       if (constructor.HasParameters)
+                               reader.ReadCustomAttributeConstructorArguments (attribute, constructor.Parameters);
+
+                       if (!reader.CanReadMore ())
+                               return;
+
+                       var named = reader.ReadUInt16 ();
+
+                       if (named == 0)
+                               return;
+
+                       reader.ReadCustomAttributeNamedArguments (named, ref attribute.fields, ref attribute.properties);
+               }
+
+               void InitializeMarshalInfos ()
+               {
+                       if (metadata.FieldMarshals != null)
+                               return;
+
+                       var length = MoveTo (Table.FieldMarshal);
+
+                       var marshals = metadata.FieldMarshals = new Dictionary<MetadataToken, uint> (length);
+
+                       for (int i = 0; i < length; i++) {
+                               var token = ReadMetadataToken (CodedIndex.HasFieldMarshal);
+                               var signature = ReadBlobIndex ();
+                               if (token.RID == 0)
+                                       continue;
+
+                               marshals.Add (token, signature);
+                       }
+               }
+
+               public bool HasMarshalInfo (IMarshalInfoProvider owner)
+               {
+                       InitializeMarshalInfos ();
+
+                       return metadata.FieldMarshals.ContainsKey (owner.MetadataToken);
+               }
+
+               public MarshalInfo ReadMarshalInfo (IMarshalInfoProvider owner)
+               {
+                       InitializeMarshalInfos ();
+
+                       uint signature;
+                       if (!metadata.FieldMarshals.TryGetValue (owner.MetadataToken, out signature))
+                               return null;
+
+                       var reader = ReadSignature (signature);
+
+                       metadata.FieldMarshals.Remove (owner.MetadataToken);
+
+                       return reader.ReadMarshalInfo ();
+               }
+
+               void InitializeSecurityDeclarations ()
+               {
+                       if (metadata.SecurityDeclarations != null)
+                               return;
+
+                       metadata.SecurityDeclarations = InitializeRanges (
+                               Table.DeclSecurity, () => {
+                                       ReadUInt16 ();
+                                       var next = ReadMetadataToken (CodedIndex.HasDeclSecurity);
+                                       ReadBlobIndex ();
+                                       return next;
+                       });
+               }
+
+               public bool HasSecurityDeclarations (ISecurityDeclarationProvider owner)
+               {
+                       InitializeSecurityDeclarations ();
+
+                       Range range;
+                       if (!metadata.TryGetSecurityDeclarationRange (owner, out range))
+                               return false;
+
+                       return range.Length > 0;
+               }
+
+               public Collection<SecurityDeclaration> ReadSecurityDeclarations (ISecurityDeclarationProvider owner)
+               {
+                       InitializeSecurityDeclarations ();
+
+                       Range range;
+                       if (!metadata.TryGetSecurityDeclarationRange (owner, out range)
+                               || !MoveTo (Table.DeclSecurity, range.Start))
+                               return new Collection<SecurityDeclaration> ();
+
+                       var security_declarations = new Collection<SecurityDeclaration> ((int) range.Length);
+
+                       for (int i = 0; i < range.Length; i++) {
+                               var action = (SecurityAction) ReadUInt16 ();
+                               ReadMetadataToken (CodedIndex.HasDeclSecurity);
+                               var signature = ReadBlobIndex ();
+
+                               security_declarations.Add (new SecurityDeclaration (action, signature, module));
+                       }
+
+                       metadata.RemoveSecurityDeclarationRange (owner);
+
+                       return security_declarations;
+               }
+
+               public byte [] ReadSecurityDeclarationBlob (uint signature)
+               {
+                       return ReadBlob (signature);
+               }
+
+               public void ReadSecurityDeclarationSignature (SecurityDeclaration declaration)
+               {
+                       var signature = declaration.signature;
+                       var reader = ReadSignature (signature);
+
+                       if (reader.buffer [reader.position] != '.') {
+                               ReadXmlSecurityDeclaration (signature, declaration);
+                               return;
+                       }
+
+                       reader.ReadByte ();
+                       var count = reader.ReadCompressedUInt32 ();
+                       var attributes = new Collection<SecurityAttribute> ((int) count);
+
+                       for (int i = 0; i < count; i++)
+                               attributes.Add (reader.ReadSecurityAttribute ());
+
+                       declaration.security_attributes = attributes;
+               }
+
+               void ReadXmlSecurityDeclaration (uint signature, SecurityDeclaration declaration)
+               {
+                       var blob = ReadBlob (signature);
+                       var attributes = new Collection<SecurityAttribute> (1);
+
+                       var attribute = new SecurityAttribute (
+                               module.TypeSystem.LookupType ("System.Security.Permissions", "PermissionSetAttribute"));
+
+                       attribute.properties = new Collection<CustomAttributeNamedArgument> (1);
+                       attribute.properties.Add (
+                               new CustomAttributeNamedArgument (
+                                       "XML",
+                                       new CustomAttributeArgument (
+                                               module.TypeSystem.String,
+                                               Encoding.Unicode.GetString (blob, 0, blob.Length))));
+
+                       attributes.Add (attribute);
+
+                       declaration.security_attributes = attributes;
+               }
+
+               public Collection<ExportedType> ReadExportedTypes ()
+               {
+                       var length = MoveTo (Table.ExportedType);
+                       if (length == 0)
+                               return new Collection<ExportedType> ();
+
+                       var exported_types = new Collection<ExportedType> (length);
+
+                       for (int i = 1; i <= length; i++) {
+                               var attributes = (TypeAttributes) ReadUInt32 ();
+                               var identifier = ReadUInt32 ();
+                               var name = ReadString ();
+                               var @namespace = ReadString ();
+                               var implementation = ReadMetadataToken (CodedIndex.Implementation);
+
+                               ExportedType declaring_type = null;
+                               IMetadataScope scope = null;
+
+                               switch (implementation.TokenType) {
+                               case TokenType.AssemblyRef:
+                               case TokenType.File:
+                                       scope = GetExportedTypeScope (implementation);
+                                       break;
+                               case TokenType.ExportedType:
+                                       // FIXME: if the table is not properly sorted
+                                       declaring_type = exported_types [(int) implementation.RID - 1];
+                                       break;
+                               }
+
+                               var exported_type = new ExportedType (@namespace, name, scope) {
+                                       Attributes = attributes,
+                                       Identifier = (int) identifier,
+                                       DeclaringType = declaring_type,
+                               };
+                               exported_type.token = new MetadataToken (TokenType.ExportedType, i);
+
+                               exported_types.Add (exported_type);
+                       }
+
+                       return exported_types;
+               }
+
+               IMetadataScope GetExportedTypeScope (MetadataToken token)
+               {
+                       switch (token.TokenType) {
+                       case TokenType.AssemblyRef:
+                               return module.AssemblyReferences [(int) token.RID - 1];
+                       case TokenType.File:
+                               var position = this.position;
+                               var reference = GetModuleReferenceFromFile (token);
+                               this.position = position;
+
+                               if (reference == null)
+                                       throw new NotSupportedException ();
+
+                               return reference;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
+
+               ModuleReference GetModuleReferenceFromFile (MetadataToken token)
+               {
+                       if (!MoveTo (Table.File, token.RID))
+                               return null;
+
+                       ReadUInt32 ();
+                       var file_name = ReadString ();
+                       var modules = module.ModuleReferences;
+
+                       ModuleReference reference = null;
+                       for (int i = 0; i < modules.Count; i++) {
+                               var module_reference = modules [i];
+                               if (module_reference.Name != file_name)
+                                       continue;
+
+                               reference = module_reference;
+                               break;
+                       }
+
+                       return reference;
+               }
+
+               static void InitializeCollection (object o)
+               {
+               }
+       }
+
+       sealed class SignatureReader : ByteBuffer {
+
+               readonly MetadataReader reader;
+               readonly uint start, sig_length;
+
+               TypeSystem TypeSystem {
+                       get { return reader.module.TypeSystem; }
+               }
+
+               public SignatureReader (uint blob, MetadataReader reader)
+                       : base (reader.buffer)
+               {
+                       this.reader = reader;
+
+                       MoveToBlob (blob);
+
+                       this.sig_length = ReadCompressedUInt32 ();
+                       this.start = (uint) position;
+               }
+
+               void MoveToBlob (uint blob)
+               {
+                       position = (int) (reader.image.BlobHeap.Offset + blob);
+               }
+
+               MetadataToken ReadTypeTokenSignature ()
+               {
+                       return CodedIndex.TypeDefOrRef.GetMetadataToken (ReadCompressedUInt32 ());
+               }
+
+               GenericParameter GetGenericParameter (GenericParameterType type, uint var)
+               {
+                       var context = reader.context;
+
+                       if (context == null)
+                               throw new NotSupportedException ();
+
+                       IGenericParameterProvider provider;
+
+                       switch (type) {
+                       case GenericParameterType.Type:
+                               provider = context.Type;
+                               break;
+                       case GenericParameterType.Method:
+                               provider = context.Method;
+                               break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       int index = (int) var;
+
+                       if (!context.IsDefinition)
+                               CheckGenericContext (provider, index);
+
+                       return provider.GenericParameters [index];
+               }
+
+               static void CheckGenericContext (IGenericParameterProvider owner, int index)
+               {
+                       var owner_parameters = owner.GenericParameters;
+
+                       for (int i = owner_parameters.Count; i <= index; i++)
+                               owner_parameters.Add (new GenericParameter (owner));
+               }
+
+               public void ReadGenericInstanceSignature (IGenericParameterProvider provider, IGenericInstance instance)
+               {
+                       var arity = ReadCompressedUInt32 ();
+
+                       if (!provider.IsDefinition)
+                               CheckGenericContext (provider, (int) arity - 1);
+
+                       var instance_arguments = instance.GenericArguments;
+
+                       for (int i = 0; i < arity; i++)
+                               instance_arguments.Add (ReadTypeSignature ());
+               }
+
+               ArrayType ReadArrayTypeSignature ()
+               {
+                       var array = new ArrayType (ReadTypeSignature ());
+
+                       var rank = ReadCompressedUInt32 ();
+
+                       var sizes = new uint [ReadCompressedUInt32 ()];
+                       for (int i = 0; i < sizes.Length; i++)
+                               sizes [i] = ReadCompressedUInt32 ();
+
+                       var low_bounds = new int [ReadCompressedUInt32 ()];
+                       for (int i = 0; i < low_bounds.Length; i++)
+                               low_bounds [i] = ReadCompressedInt32 ();
+
+                       array.Dimensions.Clear ();
+
+                       for (int i = 0; i < rank; i++) {
+                               int? lower = null, upper = null;
+
+                               if (i < low_bounds.Length)
+                                       lower = low_bounds [i];
+
+                               if (i < sizes.Length)
+                                       upper = lower + (int) sizes [i] - 1;
+
+                               array.Dimensions.Add (new ArrayDimension (lower, upper));
+                       }
+
+                       return array;
+               }
+
+               TypeReference GetTypeDefOrRef (MetadataToken token)
+               {
+                       return reader.GetTypeDefOrRef (token);
+               }
+
+               public TypeReference ReadTypeSignature ()
+               {
+                       return ReadTypeSignature ((ElementType) ReadByte ());
+               }
+
+               TypeReference ReadTypeSignature (ElementType etype)
+               {
+                       switch (etype) {
+                       case ElementType.ValueType: {
+                               var value_type = GetTypeDefOrRef (ReadTypeTokenSignature ());
+                               value_type.IsValueType = true;
+                               return value_type;
+                       }
+                       case ElementType.Class:
+                               return GetTypeDefOrRef (ReadTypeTokenSignature ());
+                       case ElementType.Ptr:
+                               return new PointerType (ReadTypeSignature ());
+                       case ElementType.FnPtr: {
+                               var fptr = new FunctionPointerType ();
+                               ReadMethodSignature (fptr);
+                               return fptr;
+                       }
+                       case ElementType.ByRef:
+                               return new ByReferenceType (ReadTypeSignature ());
+                       case ElementType.Pinned:
+                               return new PinnedType (ReadTypeSignature ());
+                       case ElementType.SzArray:
+                               return new ArrayType (ReadTypeSignature ());
+                       case ElementType.Array:
+                               return ReadArrayTypeSignature ();
+                       case ElementType.CModOpt:
+                               return new OptionalModifierType (
+                                       GetTypeDefOrRef (ReadTypeTokenSignature ()), ReadTypeSignature ());
+                       case ElementType.CModReqD:
+                               return new RequiredModifierType (
+                                       GetTypeDefOrRef (ReadTypeTokenSignature ()), ReadTypeSignature ());
+                       case ElementType.Sentinel:
+                               return new SentinelType (ReadTypeSignature ());
+                       case ElementType.Var:
+                               return GetGenericParameter (GenericParameterType.Type, ReadCompressedUInt32 ());
+                       case ElementType.MVar:
+                               return GetGenericParameter (GenericParameterType.Method, ReadCompressedUInt32 ());
+                       case ElementType.GenericInst: {
+                               var is_value_type = ReadByte () == (byte) ElementType.ValueType;
+                               var element_type = GetTypeDefOrRef (ReadTypeTokenSignature ());
+                               var generic_instance = new GenericInstanceType (element_type);
+
+                               ReadGenericInstanceSignature (element_type, generic_instance);
+
+                               if (is_value_type) {
+                                       generic_instance.IsValueType = true;
+                                       element_type.GetElementType ().IsValueType = true;
+                               }
+
+                               return generic_instance;
+                       }
+                       case ElementType.Object: return TypeSystem.Object;
+                       case ElementType.Void: return TypeSystem.Void;
+                       case ElementType.TypedByRef: return TypeSystem.TypedReference;
+                       case ElementType.I: return TypeSystem.IntPtr;
+                       case ElementType.U: return TypeSystem.UIntPtr;
+                       default: return GetPrimitiveType (etype);
+                       }
+               }
+
+               public void ReadMethodSignature (IMethodSignature method)
+               {
+                       var calling_convention = ReadByte ();
+                       method.CallingConvention = (MethodCallingConvention) calling_convention;
+                       method.HasThis = (calling_convention & 0x20) != 0;
+                       method.ExplicitThis = (calling_convention & 0x40) != 0;
+
+                       var generic_context = method as MethodReference;
+                       if (generic_context != null)
+                               reader.context = generic_context;
+
+                       if ((calling_convention & 0x10) != 0) {
+                               var arity = ReadCompressedUInt32 ();
+
+                               if (generic_context != null && !generic_context.IsDefinition)
+                                       CheckGenericContext (generic_context, (int) arity -1 );
+                       }
+
+                       // TODO: more call_conv
+
+                       var param_count = ReadCompressedUInt32 ();
+
+                       method.MethodReturnType.ReturnType = ReadTypeSignature ();
+
+                       if (param_count == 0)
+                               return;
+
+                       Collection<ParameterDefinition> parameters;
+
+                       var method_ref = method as MethodReference;
+                       if (method_ref != null)
+                               parameters = method_ref.parameters = new ParameterDefinitionCollection (method, (int) param_count);
+                       else
+                               parameters = method.Parameters;
+
+                       for (int i = 0; i < param_count; i++)
+                               parameters.Add (new ParameterDefinition (ReadTypeSignature ()));
+               }
+
+               public object ReadConstantSignature (ElementType type)
+               {
+                       return ReadPrimitiveValue (type);
+               }
+
+               public void ReadCustomAttributeConstructorArguments (CustomAttribute attribute, Collection<ParameterDefinition> parameters)
+               {
+                       var count = parameters.Count;
+                       if (count == 0)
+                               return;
+
+                       attribute.arguments = new Collection<CustomAttributeArgument> (count);
+
+                       for (int i = 0; i < count; i++)
+                               attribute.arguments.Add (
+                                       ReadCustomAttributeFixedArgument (parameters [i].ParameterType));
+               }
+
+               CustomAttributeArgument ReadCustomAttributeFixedArgument (TypeReference type)
+               {
+                       if (type.IsArray)
+                               return ReadCustomAttributeFixedArrayArgument ((ArrayType) type);
+
+                       return ReadCustomAttributeElement (type);
+               }
+
+               public void ReadCustomAttributeNamedArguments (ushort count, ref Collection<CustomAttributeNamedArgument> fields, ref Collection<CustomAttributeNamedArgument> properties)
+               {
+                       for (int i = 0; i < count; i++)
+                               ReadCustomAttributeNamedArgument (ref fields, ref properties);
+               }
+
+               void ReadCustomAttributeNamedArgument (ref Collection<CustomAttributeNamedArgument> fields, ref Collection<CustomAttributeNamedArgument> properties)
+               {
+                       var kind = ReadByte ();
+                       var type = ReadCustomAttributeFieldOrPropType ();
+                       var name = ReadUTF8String ();
+
+                       Collection<CustomAttributeNamedArgument> container;
+                       switch (kind) {
+                       case 0x53:
+                               container = GetCustomAttributeNamedArgumentCollection (ref fields);
+                               break;
+                       case 0x54:
+                               container = GetCustomAttributeNamedArgumentCollection (ref properties);
+                               break;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+
+                       container.Add (new CustomAttributeNamedArgument (name, ReadCustomAttributeFixedArgument (type)));
+               }
+
+               static Collection<CustomAttributeNamedArgument> GetCustomAttributeNamedArgumentCollection (ref Collection<CustomAttributeNamedArgument> collection)
+               {
+                       if (collection != null)
+                               return collection;
+
+                       return collection = new Collection<CustomAttributeNamedArgument> ();
+               }
+
+               CustomAttributeArgument ReadCustomAttributeFixedArrayArgument (ArrayType type)
+               {
+                       var length = ReadUInt32 ();
+
+                       if (length == 0xffffffff)
+                               return new CustomAttributeArgument (type, null);
+
+                       if (length == 0)
+                               return new CustomAttributeArgument (type, Empty<CustomAttributeArgument>.Array);
+
+                       var arguments = new CustomAttributeArgument [length];
+                       var element_type = type.ElementType;
+
+                       for (int i = 0; i < length; i++)
+                               arguments [i] = ReadCustomAttributeElement (element_type);
+
+                       return new CustomAttributeArgument (type, arguments);
+               }
+
+               CustomAttributeArgument ReadCustomAttributeElement (TypeReference type)
+               {
+                       if (type.IsArray)
+                               return ReadCustomAttributeFixedArrayArgument ((ArrayType) type);
+
+                       if (type.etype == ElementType.Object)
+                               return ReadCustomAttributeElement (ReadCustomAttributeFieldOrPropType ());
+
+                       return new CustomAttributeArgument (type, ReadCustomAttributeElementValue (type));
+               }
+
+               object ReadCustomAttributeElementValue (TypeReference type)
+               {
+                       var etype = type.etype;
+
+                       switch (etype) {
+                       case ElementType.String:
+                               return ReadUTF8String ();
+                       case ElementType.None:
+                               if (type.IsTypeOf ("System", "Type"))
+                                       return ReadTypeReference ();
+
+                               return ReadCustomAttributeEnum (type);
+                       default:
+                               return ReadPrimitiveValue (etype);
+                       }
+               }
+
+               object ReadPrimitiveValue (ElementType type)
+               {
+                       switch (type) {
+                       case ElementType.Boolean:
+                               return ReadByte () == 1;
+                       case ElementType.I1:
+                               return (sbyte) ReadByte ();
+                       case ElementType.U1:
+                               return ReadByte ();
+                       case ElementType.Char:
+                               return (char) ReadUInt16 ();
+                       case ElementType.I2:
+                               return ReadInt16 ();
+                       case ElementType.U2:
+                               return ReadUInt16 ();
+                       case ElementType.I4:
+                               return ReadInt32 ();
+                       case ElementType.U4:
+                               return ReadUInt32 ();
+                       case ElementType.I8:
+                               return ReadInt64 ();
+                       case ElementType.U8:
+                               return ReadUInt64 ();
+                       case ElementType.R4:
+                               return ReadSingle ();
+                       case ElementType.R8:
+                               return ReadDouble ();
+                       default:
+                               throw new NotImplementedException (type.ToString ());
+                       }
+               }
+
+               TypeReference GetPrimitiveType (ElementType etype)
+               {
+                       switch (etype) {
+                       case ElementType.Boolean:
+                               return TypeSystem.Boolean;
+                       case ElementType.Char:
+                               return TypeSystem.Char;
+                       case ElementType.I1:
+                               return TypeSystem.SByte;
+                       case ElementType.U1:
+                               return TypeSystem.Byte;
+                       case ElementType.I2:
+                               return TypeSystem.Int16;
+                       case ElementType.U2:
+                               return TypeSystem.UInt16;
+                       case ElementType.I4:
+                               return TypeSystem.Int32;
+                       case ElementType.U4:
+                               return TypeSystem.UInt32;
+                       case ElementType.I8:
+                               return TypeSystem.Int64;
+                       case ElementType.U8:
+                               return TypeSystem.UInt64;
+                       case ElementType.R4:
+                               return TypeSystem.Single;
+                       case ElementType.R8:
+                               return TypeSystem.Double;
+                       case ElementType.String:
+                               return TypeSystem.String;
+                       default:
+                               throw new NotImplementedException (etype.ToString ());
+                       }
+               }
+
+               TypeReference ReadCustomAttributeFieldOrPropType ()
+               {
+                       var etype = (ElementType) ReadByte ();
+
+                       switch (etype) {
+                       case ElementType.Boxed:
+                               return TypeSystem.Object;
+                       case ElementType.SzArray:
+                               return new ArrayType (ReadCustomAttributeFieldOrPropType ());
+                       case ElementType.Enum:
+                               return ReadTypeReference ();
+                       case ElementType.Type:
+                               return TypeSystem.LookupType ("System", "Type");
+                       default:
+                               return GetPrimitiveType (etype);
+                       }
+               }
+
+               public TypeReference ReadTypeReference ()
+               {
+                       return TypeParser.ParseType (reader.module, ReadUTF8String ());
+               }
+
+               object ReadCustomAttributeEnum (TypeReference enum_type)
+               {
+                       var type = enum_type.CheckedResolve ();
+                       if (!type.IsEnum)
+                               throw new ArgumentException ();
+
+                       return ReadCustomAttributeElementValue (type.GetEnumUnderlyingType ());
+               }
+
+               public SecurityAttribute ReadSecurityAttribute ()
+               {
+                       var attribute = new SecurityAttribute (ReadTypeReference ());
+
+                       ReadCompressedUInt32 ();
+
+                       ReadCustomAttributeNamedArguments (
+                               (ushort) ReadCompressedUInt32 (),
+                               ref attribute.fields,
+                               ref attribute.properties);
+
+                       return attribute;
+               }
+
+               public MarshalInfo ReadMarshalInfo ()
+               {
+                       var native = ReadNativeType ();
+                       switch (native) {
+                       case NativeType.Array: {
+                               var array = new ArrayMarshalInfo ();
+                               if (CanReadMore ())
+                                       array.element_type = ReadNativeType ();
+                               if (CanReadMore ())
+                                       array.size_parameter_index = (int) ReadCompressedUInt32 ();
+                               if (CanReadMore ())
+                                       array.size = (int) ReadCompressedUInt32 ();
+                               if (CanReadMore ())
+                                       array.size_parameter_multiplier = (int) ReadCompressedUInt32 ();
+                               return array;
+                       }
+                       case NativeType.SafeArray: {
+                               var array = new SafeArrayMarshalInfo ();
+                               if (CanReadMore ())
+                                       array.element_type = ReadVariantType ();
+                               return array;
+                       }
+                       case NativeType.FixedArray: {
+                               var array = new FixedArrayMarshalInfo ();
+                               if (CanReadMore ())
+                                       array.size = (int) ReadCompressedUInt32 ();
+                               if (CanReadMore ())
+                                       array.element_type = ReadNativeType ();
+                               return array;
+                       }
+                       case NativeType.FixedSysString: {
+                               var sys_string = new FixedSysStringMarshalInfo ();
+                               if (CanReadMore ())
+                                       sys_string.size = (int) ReadCompressedUInt32 ();
+                               return sys_string;
+                       }
+                       case NativeType.CustomMarshaler: {
+                               var marshaler = new CustomMarshalInfo ();
+                               var guid_value = ReadUTF8String ();
+                               marshaler.guid = !string.IsNullOrEmpty (guid_value) ? new Guid (guid_value) : Guid.Empty;
+                               marshaler.unmanaged_type = ReadUTF8String ();
+                               marshaler.managed_type = ReadTypeReference ();
+                               marshaler.cookie = ReadUTF8String ();
+                               return marshaler;
+                       }
+                       default:
+                               return new MarshalInfo (native);
+                       }
+               }
+
+               NativeType ReadNativeType ()
+               {
+                       return (NativeType) ReadByte ();
+               }
+
+               VariantType ReadVariantType ()
+               {
+                       return (VariantType) ReadByte ();
+               }
+
+               string ReadUTF8String ()
+               {
+                       if (buffer [position] == 0xff) {
+                               position++;
+                               return null;
+                       }
+
+                       var length = (int) ReadCompressedUInt32 ();
+                       if (length == 0)
+                               return string.Empty;
+
+                       var @string = Encoding.UTF8.GetString (buffer, position,
+                               buffer [position + length - 1] == 0 ? length - 1 : length);
+
+                       position += length;
+                       return @string;
+               }
+
+               public bool CanReadMore ()
+               {
+                       return position - start < sig_length;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs
deleted file mode 100644 (file)
index 4bd08e9..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-// AssemblyStripper.cs
-//
-// Author:
-//   Jb Evain (jbevain@novell.com)
-//
-// (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.IO;
-
-using Mono.Cecil.Binary;
-using Mono.Cecil.Cil;
-using Mono.Cecil.Metadata;
-
-namespace Mono.Cecil {
-
-       class AssemblyStripper {
-
-               AssemblyDefinition assembly;
-               BinaryWriter writer;
-
-               Image original;
-               Image stripped;
-
-               ReflectionWriter reflection_writer;
-               MetadataWriter metadata_writer;
-
-               TablesHeap original_tables;
-               TablesHeap stripped_tables;
-
-               AssemblyStripper (AssemblyDefinition assembly, BinaryWriter writer)
-               {
-                       this.assembly = assembly;
-                       this.writer = writer;
-               }
-
-               void Strip ()
-               {
-                       FullLoad ();
-                       ClearMethodBodies ();
-                       CopyOriginalImage ();
-                       PatchMethods ();
-                       PatchFields ();
-                       PatchResources ();
-                       Write ();
-               }
-
-               void FullLoad ()
-               {
-                       assembly.MainModule.FullLoad ();
-               }
-
-               void ClearMethodBodies ()
-               {
-                       foreach (TypeDefinition type in assembly.MainModule.Types) {
-                               ClearMethodBodies (type.Constructors);
-                               ClearMethodBodies (type.Methods);
-                       }
-               }
-
-               static void ClearMethodBodies (ICollection methods)
-               {
-                       foreach (MethodDefinition method in methods) {
-                               if (!method.HasBody)
-                                       continue;
-
-                               MethodBody body = new MethodBody (method);
-                               body.CilWorker.Emit (OpCodes.Ret);
-
-                               method.Body = body;
-                       }
-               }
-
-               void CopyOriginalImage ()
-               {
-                       original = assembly.MainModule.Image;
-                       stripped = Image.CreateImage();
-
-                       stripped.Accept (new CopyImageVisitor (original));
-
-                       assembly.MainModule.Image = stripped;
-
-                       original_tables = original.MetadataRoot.Streams.TablesHeap;
-                       stripped_tables = stripped.MetadataRoot.Streams.TablesHeap;
-
-                       TableCollection tables = original_tables.Tables;
-                       foreach (IMetadataTable table in tables)
-                               stripped_tables.Tables.Add(table);
-
-                       stripped_tables.Valid = original_tables.Valid;
-                       stripped_tables.Sorted = original_tables.Sorted;
-
-                       reflection_writer = new ReflectionWriter (assembly.MainModule);
-                       reflection_writer.StructureWriter = new StructureWriter (assembly, writer);
-                       reflection_writer.CodeWriter.Stripped = true;
-
-                       metadata_writer = reflection_writer.MetadataWriter;
-
-                       PatchHeap (metadata_writer.StringWriter, original.MetadataRoot.Streams.StringsHeap);
-                       PatchHeap (metadata_writer.GuidWriter, original.MetadataRoot.Streams.GuidHeap);
-                       PatchHeap (metadata_writer.UserStringWriter, original.MetadataRoot.Streams.UserStringsHeap);
-                       PatchHeap (metadata_writer.BlobWriter, original.MetadataRoot.Streams.BlobHeap);
-
-                       if (assembly.EntryPoint != null)
-                               metadata_writer.EntryPointToken = assembly.EntryPoint.MetadataToken.ToUInt ();
-               }
-
-               static void PatchHeap (MemoryBinaryWriter heap_writer, MetadataHeap heap)
-               {
-                       if (heap == null)
-                               return;
-
-                       heap_writer.BaseStream.Position = 0;
-                       heap_writer.Write (heap.Data);
-               }
-
-               void PatchMethods ()
-               {
-                       MethodTable methodTable = (MethodTable) stripped_tables [MethodTable.RId];
-                       if (methodTable == null)
-                               return;
-
-                       RVA method_rva = RVA.Zero;
-
-                       for (int i = 0; i < methodTable.Rows.Count; i++) {
-                               MethodRow methodRow = methodTable[i];
-
-                               MetadataToken methodToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
-
-                               MethodDefinition method = (MethodDefinition) assembly.MainModule.LookupByToken (methodToken);
-
-                               if (method.HasBody) {
-                                       method_rva = method_rva != RVA.Zero
-                                               ? method_rva
-                                               : reflection_writer.CodeWriter.WriteMethodBody (method);
-
-                                       methodRow.RVA = method_rva;
-                               } else
-                                       methodRow.RVA = RVA.Zero;
-                       }
-               }
-
-               void PatchFields ()
-               {
-                       FieldRVATable fieldRvaTable = (FieldRVATable) stripped_tables [FieldRVATable.RId];
-                       if (fieldRvaTable == null)
-                               return;
-
-                       for (int i = 0; i < fieldRvaTable.Rows.Count; i++) {
-                               FieldRVARow fieldRvaRow = fieldRvaTable [i];
-
-                               MetadataToken fieldToken = new MetadataToken (TokenType.Field, fieldRvaRow.Field);
-
-                               FieldDefinition field = (FieldDefinition) assembly.MainModule.LookupByToken (fieldToken);
-
-                               fieldRvaRow.RVA = metadata_writer.GetDataCursor ();
-                               metadata_writer.AddData (field.InitialValue.Length + 3 & (~3));
-                               metadata_writer.AddFieldInitData (field.InitialValue);
-                       }
-               }
-
-               void PatchResources ()
-               {
-                       ManifestResourceTable resourceTable = (ManifestResourceTable) stripped_tables [ManifestResourceTable.RId];
-                       if (resourceTable == null)
-                               return;
-
-                       for (int i = 0; i < resourceTable.Rows.Count; i++) {
-                               ManifestResourceRow resourceRow = resourceTable [i];
-
-                               if (resourceRow.Implementation.RID != 0)
-                                       continue;
-
-                               foreach (Resource resource in assembly.MainModule.Resources) {
-                                       EmbeddedResource er = resource as EmbeddedResource;
-                                       if (er == null)
-                                               continue;
-
-                                       if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name])
-                                               continue;
-
-                                       resourceRow.Offset = metadata_writer.AddResource (er.Data);
-                               }
-                       }
-               }
-
-               void Write ()
-               {
-                       stripped.MetadataRoot.Accept (metadata_writer);
-               }
-
-               public static void StripAssembly (AssemblyDefinition assembly, string file)
-               {
-                       using (FileStream fs = new FileStream (file, FileMode.Create, FileAccess.Write, FileShare.None)) {
-                               new AssemblyStripper (assembly, new BinaryWriter (fs)).Strip ();
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs
new file mode 100644 (file)
index 0000000..02b98ae
--- /dev/null
@@ -0,0 +1,2524 @@
+//
+// AssemblyWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+using RID = System.UInt32;
+using CodedRID = System.UInt32;
+using StringIndex = System.UInt32;
+using BlobIndex = System.UInt32;
+
+namespace Mono.Cecil {
+
+#if !READ_ONLY
+
+       using TypeRefRow     = Row<CodedRID, StringIndex, StringIndex>;
+       using TypeDefRow     = Row<TypeAttributes, StringIndex, StringIndex, CodedRID, RID, RID>;
+       using FieldRow       = Row<FieldAttributes, StringIndex, BlobIndex>;
+       using MethodRow      = Row<RVA, MethodImplAttributes, MethodAttributes, StringIndex, BlobIndex, RID>;
+       using ParamRow       = Row<ParameterAttributes, ushort, StringIndex>;
+       using InterfaceImplRow = Row<uint, CodedRID>;
+       using MemberRefRow   = Row<CodedRID, StringIndex, BlobIndex>;
+       using ConstantRow    = Row<ElementType, CodedRID, BlobIndex>;
+       using CustomAttributeRow = Row<CodedRID, CodedRID, BlobIndex>;
+       using FieldMarshalRow = Row<CodedRID, BlobIndex>;
+       using DeclSecurityRow = Row<SecurityAction, CodedRID, BlobIndex>;
+       using ClassLayoutRow = Row<ushort, uint, RID>;
+       using FieldLayoutRow = Row<uint, RID>;
+       using EventMapRow    = Row<RID, RID>;
+       using EventRow       = Row<EventAttributes, StringIndex, CodedRID>;
+       using PropertyMapRow = Row<RID, RID>;
+       using PropertyRow    = Row<PropertyAttributes, StringIndex, BlobIndex>;
+       using MethodSemanticsRow = Row<MethodSemanticsAttributes, RID, CodedRID>;
+       using MethodImplRow  = Row<RID, CodedRID, CodedRID>;
+       using ImplMapRow     = Row<PInvokeAttributes, CodedRID, StringIndex, RID>;
+       using FieldRVARow    = Row<RVA, RID>;
+       using AssemblyRow    = Row<AssemblyHashAlgorithm, ushort, ushort, ushort, ushort, AssemblyAttributes, uint, uint, uint>;
+       using AssemblyRefRow = Row<ushort, ushort, ushort, ushort, AssemblyAttributes, uint, uint, uint, uint>;
+       using FileRow        = Row<FileAttributes, StringIndex, BlobIndex>;
+       using ExportedTypeRow = Row<TypeAttributes, uint, StringIndex, StringIndex, CodedRID>;
+       using ManifestResourceRow = Row<uint, ManifestResourceAttributes, StringIndex, CodedRID>;
+       using NestedClassRow = Row<RID, RID>;
+       using GenericParamRow = Row<ushort, GenericParameterAttributes, CodedRID, StringIndex>;
+       using MethodSpecRow = Row<CodedRID, BlobIndex>;
+       using GenericParamConstraintRow = Row<RID, CodedRID>;
+
+       static class ModuleWriter {
+
+               public static void WriteModuleTo (ModuleDefinition module, Stream stream, WriterParameters parameters)
+               {
+                       if ((module.Attributes & ModuleAttributes.ILOnly) == 0)
+                               throw new ArgumentException ();
+
+                       if (module.HasImage && module.ReadingMode == ReadingMode.Deferred)
+                               ImmediateModuleReader.ReadModule (module);
+
+                       module.MetadataSystem.Clear ();
+
+                       var name = module.assembly != null ? module.assembly.Name : null;
+                       var fq_name = stream.GetFullyQualifiedName ();
+                       var symbol_writer_provider = parameters.SymbolWriterProvider;
+                       if (symbol_writer_provider == null && parameters.WriteSymbols)
+                               symbol_writer_provider = SymbolProvider.GetPlatformWriterProvider ();
+                       var symbol_writer = GetSymbolWriter (module, fq_name, symbol_writer_provider);
+
+#if !SILVERLIGHT && !CF
+                       if (parameters.StrongNameKeyPair != null && name != null)
+                               name.PublicKey = parameters.StrongNameKeyPair.PublicKey;
+#endif
+
+                       if (name != null && name.HasPublicKey)
+                               module.Attributes |= ModuleAttributes.StrongNameSigned;
+
+                       var metadata = new MetadataBuilder (module, fq_name,
+                               symbol_writer_provider, symbol_writer);
+
+                       BuildMetadata (module, metadata);
+
+                       if (module.SymbolReader != null)
+                               module.SymbolReader.Dispose ();
+
+                       var writer = ImageWriter.CreateWriter (module, metadata, stream);
+
+                       writer.WriteImage ();
+
+#if !SILVERLIGHT && !CF
+                       if (parameters.StrongNameKeyPair != null)
+                               CryptoService.StrongName (stream, writer, parameters.StrongNameKeyPair);
+#endif
+                       if (symbol_writer != null)
+                               symbol_writer.Dispose ();
+               }
+
+               static void BuildMetadata (ModuleDefinition module, MetadataBuilder metadata)
+               {
+                       if (!module.HasImage) {
+                               metadata.BuildMetadata ();
+                               return;
+                       }
+
+                       module.Read (metadata, (builder, _) => {
+                               builder.BuildMetadata ();
+                               return builder;
+                       });
+               }
+
+               static ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fq_name, ISymbolWriterProvider symbol_writer_provider)
+               {
+                       if (symbol_writer_provider == null)
+                               return null;
+
+                       return symbol_writer_provider.GetSymbolWriter (module, fq_name);
+               }
+       }
+
+       abstract class MetadataTable {
+
+               public abstract int Length { get; }
+
+               public bool IsLarge {
+                       get { return Length > 65535; }
+               }
+
+               public abstract void Write (TableHeapBuffer buffer);
+               public abstract void Sort ();
+       }
+
+       abstract class OneRowTable<TRow> : MetadataTable where TRow : struct {
+
+               internal TRow row;
+
+               public sealed override int Length {
+                       get { return 1; }
+               }
+
+               public sealed override void Sort ()
+               {
+               }
+       }
+
+       abstract class MetadataTable<TRow> : MetadataTable where TRow : struct {
+
+               internal TRow [] rows = new TRow [2];
+               internal int length;
+
+               public sealed override int Length {
+                       get { return length; }
+               }
+
+               public int AddRow (TRow row)
+               {
+                       if (rows.Length == length)
+                               Grow ();
+
+                       rows [length++] = row;
+                       return length;
+               }
+
+               void Grow ()
+               {
+                       var rows = new TRow [this.rows.Length * 2];
+                       Array.Copy (this.rows, rows, this.rows.Length);
+                       this.rows = rows;
+               }
+
+               public override void Sort ()
+               {
+               }
+       }
+
+       abstract class SortedTable<TRow> : MetadataTable<TRow>, IComparer<TRow> where TRow : struct {
+
+               public sealed override void Sort ()
+               {
+                       Array.Sort (rows, 0, length, this);
+               }
+
+               protected int Compare (uint x, uint y)
+               {
+                       return x == y ? 0 : x > y ? 1 : -1;
+               }
+
+               public abstract int Compare (TRow x, TRow y);
+       }
+
+       sealed class ModuleTable : OneRowTable<uint> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       buffer.WriteUInt16 (0);         // Generation
+                       buffer.WriteString (row);       // Name
+                       buffer.WriteUInt16 (1);         // Mvid
+                       buffer.WriteUInt16 (0);         // EncId
+                       buffer.WriteUInt16 (0);         // EncBaseId
+               }
+       }
+
+       sealed class TypeRefTable : MetadataTable<TypeRefRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteCodedRID (
+                                       rows [i].Col1, CodedIndex.ResolutionScope);     // Scope
+                               buffer.WriteString (rows [i].Col2);                     // Name
+                               buffer.WriteString (rows [i].Col3);                     // Namespace
+                       }
+               }
+       }
+
+       sealed class TypeDefTable : MetadataTable<TypeDefRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 ((uint) rows [i].Col1);      // Attributes
+                               buffer.WriteString (rows [i].Col2);                     // Name
+                               buffer.WriteString (rows [i].Col3);                     // Namespace
+                               buffer.WriteCodedRID (
+                                       rows [i].Col4, CodedIndex.TypeDefOrRef);        // Extends
+                               buffer.WriteRID (rows [i].Col5, Table.Field);   // FieldList
+                               buffer.WriteRID (rows [i].Col6, Table.Method);  // MethodList
+                       }
+               }
+       }
+
+       sealed class FieldTable : MetadataTable<FieldRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Attributes
+                               buffer.WriteString (rows [i].Col2);                     // Name
+                               buffer.WriteBlob (rows [i].Col3);                       // Signature
+                       }
+               }
+       }
+
+       sealed class MethodTable : MetadataTable<MethodRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 (rows [i].Col1);             // RVA
+                               buffer.WriteUInt16 ((ushort) rows [i].Col2);    // ImplFlags
+                               buffer.WriteUInt16 ((ushort) rows [i].Col3);    // Flags
+                               buffer.WriteString (rows [i].Col4);             // Name
+                               buffer.WriteBlob (rows [i].Col5);               // Signature
+                               buffer.WriteRID (rows [i].Col6, Table.Param);   // ParamList
+                       }
+               }
+       }
+
+       sealed class ParamTable : MetadataTable<ParamRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Attributes
+                               buffer.WriteUInt16 (rows [i].Col2);             // Sequence
+                               buffer.WriteString (rows [i].Col3);             // Name
+                       }
+               }
+       }
+
+       sealed class InterfaceImplTable : MetadataTable<InterfaceImplRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.TypeDef);         // Class
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.TypeDefOrRef);  // Interface
+                       }
+               }
+
+               /*public override int Compare (InterfaceImplRow x, InterfaceImplRow y)
+               {
+                       return (int) (x.Col1 == y.Col1 ? y.Col2 - x.Col2 : x.Col1 - y.Col1);
+               }*/
+       }
+
+       sealed class MemberRefTable : MetadataTable<MemberRefRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteCodedRID (rows [i].Col1, CodedIndex.MemberRefParent);
+                               buffer.WriteString (rows [i].Col2);
+                               buffer.WriteBlob (rows [i].Col3);
+                       }
+               }
+       }
+
+       sealed class ConstantTable : SortedTable<ConstantRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.HasConstant);
+                               buffer.WriteBlob (rows [i].Col3);
+                       }
+               }
+
+               public override int Compare (ConstantRow x, ConstantRow y)
+               {
+                       return Compare (x.Col2, y.Col2);
+               }
+       }
+
+       sealed class CustomAttributeTable : SortedTable<CustomAttributeRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteCodedRID (rows [i].Col1, CodedIndex.HasCustomAttribute);    // Parent
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.CustomAttributeType);   // Type
+                               buffer.WriteBlob (rows [i].Col3);
+                       }
+               }
+
+               public override int Compare (CustomAttributeRow x, CustomAttributeRow y)
+               {
+                       return Compare (x.Col1, y.Col1);
+               }
+       }
+
+       sealed class FieldMarshalTable : SortedTable<FieldMarshalRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteCodedRID (rows [i].Col1, CodedIndex.HasFieldMarshal);
+                               buffer.WriteBlob (rows [i].Col2);
+                       }
+               }
+
+               public override int Compare (FieldMarshalRow x, FieldMarshalRow y)
+               {
+                       return Compare (x.Col1, y.Col1);
+               }
+       }
+
+       sealed class DeclSecurityTable : SortedTable<DeclSecurityRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.HasDeclSecurity);
+                               buffer.WriteBlob (rows [i].Col3);
+                       }
+               }
+
+               public override int Compare (DeclSecurityRow x, DeclSecurityRow y)
+               {
+                       return Compare (x.Col2, y.Col2);
+               }
+       }
+
+       sealed class ClassLayoutTable : SortedTable<ClassLayoutRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 (rows [i].Col1);             // PackingSize
+                               buffer.WriteUInt32 (rows [i].Col2);             // ClassSize
+                               buffer.WriteRID (rows [i].Col3, Table.TypeDef); // Parent
+                       }
+               }
+
+               public override int Compare (ClassLayoutRow x, ClassLayoutRow y)
+               {
+                       return Compare (x.Col3, y.Col3);
+               }
+       }
+
+       sealed class FieldLayoutTable : SortedTable<FieldLayoutRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 (rows [i].Col1);             // Offset
+                               buffer.WriteRID (rows [i].Col2, Table.Field);   // Parent
+                       }
+               }
+
+               public override int Compare (FieldLayoutRow x, FieldLayoutRow y)
+               {
+                       return Compare (x.Col2, y.Col2);
+               }
+       }
+
+       sealed class StandAloneSigTable : MetadataTable<uint> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++)
+                               buffer.WriteBlob (rows [i]);
+               }
+       }
+
+       sealed class EventMapTable : MetadataTable<EventMapRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.TypeDef);         // Parent
+                               buffer.WriteRID (rows [i].Col2, Table.Event);           // EventList
+                       }
+               }
+       }
+
+       sealed class EventTable : MetadataTable<EventRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Flags
+                               buffer.WriteString (rows [i].Col2);             // Name
+                               buffer.WriteCodedRID (rows [i].Col3, CodedIndex.TypeDefOrRef);  // EventType
+                       }
+               }
+       }
+
+       sealed class PropertyMapTable : MetadataTable<PropertyMapRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.TypeDef);         // Parent
+                               buffer.WriteRID (rows [i].Col2, Table.Property);        // PropertyList
+                       }
+               }
+       }
+
+       sealed class PropertyTable : MetadataTable<PropertyRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Flags
+                               buffer.WriteString (rows [i].Col2);             // Name
+                               buffer.WriteBlob (rows [i].Col3);               // Type
+                       }
+               }
+       }
+
+       sealed class MethodSemanticsTable : SortedTable<MethodSemanticsRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Flags
+                               buffer.WriteRID (rows [i].Col2, Table.Method);  // Method
+                               buffer.WriteCodedRID (rows [i].Col3, CodedIndex.HasSemantics);  // Association
+                       }
+               }
+
+               public override int Compare (MethodSemanticsRow x, MethodSemanticsRow y)
+               {
+                       return Compare (x.Col3, y.Col3);
+               }
+       }
+
+       sealed class MethodImplTable : MetadataTable<MethodImplRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.TypeDef); // Class
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.MethodDefOrRef);        // MethodBody
+                               buffer.WriteCodedRID (rows [i].Col3, CodedIndex.MethodDefOrRef);        // MethodDeclaration
+                       }
+               }
+       }
+
+       sealed class ModuleRefTable : MetadataTable<uint> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++)
+                               buffer.WriteString (rows [i]);  // Name
+               }
+       }
+
+       sealed class TypeSpecTable : MetadataTable<uint> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++)
+                               buffer.WriteBlob (rows [i]);    // Signature
+               }
+       }
+
+       sealed class ImplMapTable : SortedTable<ImplMapRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 ((ushort) rows [i].Col1);    // Flags
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.MemberForwarded);       // MemberForwarded
+                               buffer.WriteString (rows [i].Col3);             // ImportName
+                               buffer.WriteRID (rows [i].Col4, Table.ModuleRef);       // ImportScope
+                       }
+               }
+
+               public override int Compare (ImplMapRow x, ImplMapRow y)
+               {
+                       return Compare (x.Col2, y.Col2);
+               }
+       }
+
+       sealed class FieldRVATable : SortedTable<FieldRVARow> {
+
+               internal int position;
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       position = buffer.position;
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 (rows [i].Col1);             // RVA
+                               buffer.WriteRID (rows [i].Col2, Table.Field);   // Field
+                       }
+               }
+
+               public override int Compare (FieldRVARow x, FieldRVARow y)
+               {
+                       return Compare (x.Col2, y.Col2);
+               }
+       }
+
+       sealed class AssemblyTable : OneRowTable<AssemblyRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       buffer.WriteUInt32 ((uint) row.Col1);   // AssemblyHashAlgorithm
+                       buffer.WriteUInt16 (row.Col2);                  // MajorVersion
+                       buffer.WriteUInt16 (row.Col3);                  // MinorVersion
+                       buffer.WriteUInt16 (row.Col4);                  // Build
+                       buffer.WriteUInt16 (row.Col5);                  // Revision
+                       buffer.WriteUInt32 ((uint) row.Col6);   // Flags
+                       buffer.WriteBlob (row.Col7);                    // PublicKey
+                       buffer.WriteString (row.Col8);                  // Name
+                       buffer.WriteString (row.Col9);                  // Culture
+               }
+       }
+
+       sealed class AssemblyRefTable : MetadataTable<AssemblyRefRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 (rows [i].Col1);             // MajorVersion
+                               buffer.WriteUInt16 (rows [i].Col2);             // MinorVersion
+                               buffer.WriteUInt16 (rows [i].Col3);             // Build
+                               buffer.WriteUInt16 (rows [i].Col4);             // Revision
+                               buffer.WriteUInt32 ((uint) rows [i].Col5);      // Flags
+                               buffer.WriteBlob (rows [i].Col6);               // PublicKeyOrToken
+                               buffer.WriteString (rows [i].Col7);             // Name
+                               buffer.WriteString (rows [i].Col8);             // Culture
+                               buffer.WriteBlob (rows [i].Col9);               // Hash
+                       }
+               }
+       }
+
+       sealed class FileTable : MetadataTable<FileRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 ((uint) rows [i].Col1);
+                               buffer.WriteString (rows [i].Col2);
+                               buffer.WriteBlob (rows [i].Col3);
+                       }
+               }
+       }
+
+       sealed class ExportedTypeTable : MetadataTable<ExportedTypeRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 ((uint) rows [i].Col1);
+                               buffer.WriteUInt32 (rows [i].Col2);
+                               buffer.WriteString (rows [i].Col3);
+                               buffer.WriteString (rows [i].Col4);
+                               buffer.WriteCodedRID (rows [i].Col5, CodedIndex.Implementation);
+                       }
+               }
+       }
+
+       sealed class ManifestResourceTable : MetadataTable<ManifestResourceRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt32 (rows [i].Col1);
+                               buffer.WriteUInt32 ((uint) rows [i].Col2);
+                               buffer.WriteString (rows [i].Col3);
+                               buffer.WriteCodedRID (rows [i].Col4, CodedIndex.Implementation);
+                       }
+               }
+       }
+
+       sealed class NestedClassTable : SortedTable<NestedClassRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.TypeDef);         // NestedClass
+                               buffer.WriteRID (rows [i].Col2, Table.TypeDef);         // EnclosingClass
+                       }
+               }
+
+               public override int Compare (NestedClassRow x, NestedClassRow y)
+               {
+                       return Compare (x.Col1, y.Col1);
+               }
+       }
+
+       sealed class GenericParamTable : MetadataTable<GenericParamRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteUInt16 (rows [i].Col1);             // Number
+                               buffer.WriteUInt16 ((ushort) rows [i].Col2);    // Flags
+                               buffer.WriteCodedRID (rows [i].Col3, CodedIndex.TypeOrMethodDef);       // Owner
+                               buffer.WriteString (rows [i].Col4);             // Name
+                       }
+               }
+       }
+
+       sealed class MethodSpecTable : MetadataTable<MethodSpecRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteCodedRID (rows [i].Col1, CodedIndex.MethodDefOrRef);        // Method
+                               buffer.WriteBlob (rows [i].Col2);       // Instantiation
+                       }
+               }
+       }
+
+       sealed class GenericParamConstraintTable : MetadataTable<GenericParamConstraintRow> {
+
+               public override void Write (TableHeapBuffer buffer)
+               {
+                       for (int i = 0; i < length; i++) {
+                               buffer.WriteRID (rows [i].Col1, Table.GenericParam);    // Owner
+                               buffer.WriteCodedRID (rows [i].Col2, CodedIndex.TypeDefOrRef);  // Constraint
+                       }
+               }
+       }
+
+       sealed class MetadataBuilder {
+
+               readonly internal ModuleDefinition module;
+               readonly internal ISymbolWriterProvider symbol_writer_provider;
+               readonly internal ISymbolWriter symbol_writer;
+               readonly internal TextMap text_map;
+               readonly internal string fq_name;
+
+               readonly Dictionary<TypeRefRow, MetadataToken> type_ref_map;
+               readonly Dictionary<uint, MetadataToken> type_spec_map;
+               readonly Dictionary<MemberRefRow, MetadataToken> member_ref_map;
+               readonly Dictionary<MethodSpecRow, MetadataToken> method_spec_map;
+               readonly Collection<GenericParameter> generic_parameters;
+               readonly Dictionary<MetadataToken, MetadataToken> method_def_map;
+
+               readonly internal CodeWriter code;
+               readonly internal DataBuffer data;
+               readonly internal ResourceBuffer resources;
+               readonly internal StringHeapBuffer string_heap;
+               readonly internal UserStringHeapBuffer user_string_heap;
+               readonly internal BlobHeapBuffer blob_heap;
+               readonly internal TableHeapBuffer table_heap;
+
+               internal MetadataToken entry_point;
+
+               RID type_rid = 1;
+               RID field_rid = 1;
+               RID method_rid = 1;
+               RID param_rid = 1;
+               RID property_rid = 1;
+               RID event_rid = 1;
+
+               readonly TypeRefTable type_ref_table;
+               readonly TypeDefTable type_def_table;
+               readonly FieldTable field_table;
+               readonly MethodTable method_table;
+               readonly ParamTable param_table;
+               readonly InterfaceImplTable iface_impl_table;
+               readonly MemberRefTable member_ref_table;
+               readonly ConstantTable constant_table;
+               readonly CustomAttributeTable custom_attribute_table;
+               readonly DeclSecurityTable declsec_table;
+               readonly StandAloneSigTable standalone_sig_table;
+               readonly EventMapTable event_map_table;
+               readonly EventTable event_table;
+               readonly PropertyMapTable property_map_table;
+               readonly PropertyTable property_table;
+               readonly TypeSpecTable typespec_table;
+               readonly MethodSpecTable method_spec_table;
+
+               readonly internal bool write_symbols;
+
+               public MetadataBuilder (ModuleDefinition module, string fq_name, ISymbolWriterProvider symbol_writer_provider, ISymbolWriter symbol_writer)
+               {
+                       this.module = module;
+                       this.text_map = CreateTextMap ();
+                       this.fq_name = fq_name;
+                       this.symbol_writer_provider = symbol_writer_provider;
+                       this.symbol_writer = symbol_writer;
+                       this.write_symbols = symbol_writer != null;
+                       this.code = new CodeWriter (this);
+                       this.data = new DataBuffer ();
+                       this.resources = new ResourceBuffer ();
+                       this.string_heap = new StringHeapBuffer ();
+                       this.user_string_heap = new UserStringHeapBuffer ();
+                       this.blob_heap = new BlobHeapBuffer ();
+                       this.table_heap = new TableHeapBuffer (module, this);
+
+                       this.type_ref_table = GetTable<TypeRefTable> (Table.TypeRef);
+                       this.type_def_table = GetTable<TypeDefTable> (Table.TypeDef);
+                       this.field_table = GetTable<FieldTable> (Table.Field);
+                       this.method_table = GetTable<MethodTable> (Table.Method);
+                       this.param_table = GetTable<ParamTable> (Table.Param);
+                       this.iface_impl_table = GetTable<InterfaceImplTable> (Table.InterfaceImpl);
+                       this.member_ref_table = GetTable<MemberRefTable> (Table.MemberRef);
+                       this.constant_table = GetTable<ConstantTable> (Table.Constant);
+                       this.custom_attribute_table = GetTable<CustomAttributeTable> (Table.CustomAttribute);
+                       this.declsec_table = GetTable<DeclSecurityTable> (Table.DeclSecurity);
+                       this.standalone_sig_table = GetTable<StandAloneSigTable> (Table.StandAloneSig);
+                       this.event_map_table = GetTable<EventMapTable> (Table.EventMap);
+                       this.event_table = GetTable<EventTable> (Table.Event);
+                       this.property_map_table = GetTable<PropertyMapTable> (Table.PropertyMap);
+                       this.property_table = GetTable<PropertyTable> (Table.Property);
+                       this.typespec_table = GetTable<TypeSpecTable> (Table.TypeSpec);
+                       this.method_spec_table = GetTable<MethodSpecTable> (Table.MethodSpec);
+
+                       var row_equality_comparer = new RowEqualityComparer ();
+                       type_ref_map = new Dictionary<TypeRefRow, MetadataToken> (row_equality_comparer);
+                       type_spec_map = new Dictionary<uint, MetadataToken> ();
+                       member_ref_map = new Dictionary<MemberRefRow, MetadataToken> (row_equality_comparer);
+                       method_spec_map = new Dictionary<MethodSpecRow, MetadataToken> (row_equality_comparer);
+                       generic_parameters = new Collection<GenericParameter> ();
+                       if (write_symbols)
+                               method_def_map = new Dictionary<MetadataToken, MetadataToken> ();
+               }
+
+               TextMap CreateTextMap ()
+               {
+                       var map = new TextMap ();
+                       map.AddMap (TextSegment.ImportAddressTable, module.Architecture == TargetArchitecture.I386 ? 8 : 16);
+                       map.AddMap (TextSegment.CLIHeader, 0x48, 8);
+                       return map;
+               }
+
+               TTable GetTable<TTable> (Table table) where TTable : MetadataTable, new ()
+               {
+                       return table_heap.GetTable<TTable> (table);
+               }
+
+               uint GetStringIndex (string @string)
+               {
+                       if (string.IsNullOrEmpty (@string))
+                               return 0;
+
+                       return string_heap.GetStringIndex (@string);
+               }
+
+               uint GetBlobIndex (ByteBuffer blob)
+               {
+                       if (blob.length == 0)
+                               return 0;
+
+                       return blob_heap.GetBlobIndex (blob);
+               }
+
+               uint GetBlobIndex (byte [] blob)
+               {
+                       if (blob.IsNullOrEmpty ())
+                               return 0;
+
+                       return GetBlobIndex (new ByteBuffer (blob));
+               }
+
+               public void BuildMetadata ()
+               {
+                       BuildModule ();
+
+                       table_heap.WriteTableHeap ();
+               }
+
+               void BuildModule ()
+               {
+                       var table = GetTable<ModuleTable> (Table.Module);
+                       table.row = GetStringIndex (module.Name);
+
+                       var assembly = module.Assembly;
+
+                       if (assembly != null)
+                               BuildAssembly ();
+
+                       if (module.HasAssemblyReferences)
+                               AddAssemblyReferences ();
+
+                       if (module.HasModuleReferences)
+                               AddModuleReferences ();
+
+                       if (module.HasResources)
+                               AddResources ();
+
+                       if (module.HasExportedTypes)
+                               AddExportedTypes ();
+
+                       BuildTypes ();
+
+                       if (assembly != null) {
+                               if (assembly.HasCustomAttributes)
+                                       AddCustomAttributes (assembly);
+
+                               if (assembly.HasSecurityDeclarations)
+                                       AddSecurityDeclarations (assembly);
+                       }
+
+                       if (module.HasCustomAttributes)
+                               AddCustomAttributes (module);
+
+                       if (module.EntryPoint != null)
+                               entry_point = LookupToken (module.EntryPoint);
+               }
+
+               void BuildAssembly ()
+               {
+                       var assembly = module.Assembly;
+                       var name = assembly.Name;
+
+                       var table = GetTable<AssemblyTable> (Table.Assembly);
+
+                       table.row = new AssemblyRow (
+                               name.HashAlgorithm,
+                               (ushort) name.Version.Major,
+                               (ushort) name.Version.Minor,
+                               (ushort) name.Version.Build,
+                               (ushort) name.Version.Revision,
+                               name.Attributes,
+                               GetBlobIndex (name.PublicKey),
+                               GetStringIndex (name.Name),
+                               GetStringIndex (name.Culture));
+
+                       if (assembly.Modules.Count > 1)
+                               BuildModules ();
+               }
+
+               void BuildModules ()
+               {
+                       var modules = this.module.Assembly.Modules;
+                       var table = GetTable<FileTable> (Table.File);
+
+                       for (int i = 0; i < modules.Count; i++) {
+                               var module = modules [i];
+                               if (module.IsMain)
+                                       continue;
+
+                               var parameters = new WriterParameters {
+                                       SymbolWriterProvider = symbol_writer_provider,
+                               };
+
+                               var file_name = GetModuleFileName (module.Name);
+                               module.Write (file_name, parameters);
+
+                               var hash = CryptoService.ComputeHash (file_name);
+
+                               table.AddRow (new FileRow (
+                                       FileAttributes.ContainsMetaData,
+                                       GetStringIndex (module.Name),
+                                       GetBlobIndex (hash)));
+                       }
+               }
+
+               string GetModuleFileName (string name)
+               {
+                       if (string.IsNullOrEmpty (name))
+                               throw new NotSupportedException ();
+
+                       var path = Path.GetDirectoryName (fq_name);
+                       return Path.Combine (path, name);
+               }
+
+               void AddAssemblyReferences ()
+               {
+                       var references = module.AssemblyReferences;
+                       var table = GetTable<AssemblyRefTable> (Table.AssemblyRef);
+
+                       for (int i = 0; i < references.Count; i++) {
+                               var reference = references [i];
+
+                               var key_or_token = reference.PublicKey.IsNullOrEmpty ()
+                                       ? reference.PublicKeyToken
+                                       : reference.PublicKey;
+
+                               var rid = table.AddRow (new AssemblyRefRow (
+                                       (ushort) reference.Version.Major,
+                                       (ushort) reference.Version.Minor,
+                                       (ushort) reference.Version.Build,
+                                       (ushort) reference.Version.Revision,
+                                       reference.Attributes,
+                                       GetBlobIndex (key_or_token),
+                                       GetStringIndex (reference.Name),
+                                       GetStringIndex (reference.Culture),
+                                       GetBlobIndex (reference.Hash)));
+
+                               reference.token = new MetadataToken (TokenType.AssemblyRef, rid);
+                       }
+               }
+
+               void AddModuleReferences ()
+               {
+                       var references = module.ModuleReferences;
+                       var table = GetTable<ModuleRefTable> (Table.ModuleRef);
+
+                       for (int i = 0; i < references.Count; i++) {
+                               var reference = references [i];
+
+                               reference.token = new MetadataToken (
+                                       TokenType.ModuleRef,
+                                       table.AddRow (GetStringIndex (reference.Name)));
+                       }
+               }
+
+               void AddResources ()
+               {
+                       var resources = module.Resources;
+                       var table = GetTable<ManifestResourceTable> (Table.ManifestResource);
+
+                       for (int i = 0; i < resources.Count; i++) {
+                               var resource = resources [i];
+
+                               var row = new ManifestResourceRow (
+                                       0,
+                                       resource.Attributes,
+                                       GetStringIndex (resource.Name),
+                                       0);
+
+                               switch (resource.ResourceType) {
+                               case ResourceType.Embedded:
+                                       row.Col1 = AddEmbeddedResource ((EmbeddedResource) resource);
+                                       break;
+                               case ResourceType.Linked:
+                                       row.Col4 = CodedIndex.Implementation.CompressMetadataToken (
+                                               new MetadataToken (
+                                                       TokenType.File,
+                                                       AddLinkedResource ((LinkedResource) resource)));
+                                       break;
+                               case ResourceType.AssemblyLinked:
+                                       row.Col4 = CodedIndex.Implementation.CompressMetadataToken (
+                                               ((AssemblyLinkedResource) resource).Assembly.MetadataToken);
+                                       break;
+                               default:
+                                       throw new NotSupportedException ();
+                               }
+
+                               table.AddRow (row);
+                       }
+               }
+
+               uint AddLinkedResource (LinkedResource resource)
+               {
+                       var table = GetTable<FileTable> (Table.File);
+
+                       var hash = resource.Hash.IsNullOrEmpty ()
+                               ? CryptoService.ComputeHash (resource.File)
+                               : resource.Hash;
+
+                       return (uint) table.AddRow (new FileRow (
+                               FileAttributes.ContainsNoMetaData,
+                               GetStringIndex (resource.File),
+                               GetBlobIndex (hash)));
+               }
+
+               uint AddEmbeddedResource (EmbeddedResource resource)
+               {
+                       return resources.AddResource (resource.GetResourceData ());
+               }
+
+               void AddExportedTypes ()
+               {
+                       var exported_types = module.ExportedTypes;
+                       var table = GetTable<ExportedTypeTable> (Table.ExportedType);
+
+                       for (int i = 0; i < exported_types.Count; i++) {
+                               var exported_type = exported_types [i];
+
+                               var rid = table.AddRow (new ExportedTypeRow (
+                                       exported_type.Attributes,
+                                       (uint) exported_type.Identifier,
+                                       GetStringIndex (exported_type.Name),
+                                       GetStringIndex (exported_type.Namespace),
+                                       MakeCodedRID (GetExportedTypeScope (exported_type), CodedIndex.Implementation)));
+
+                               exported_type.token = new MetadataToken (TokenType.ExportedType, rid);
+                       }
+               }
+
+               MetadataToken GetExportedTypeScope (ExportedType exported_type)
+               {
+                       if (exported_type.DeclaringType != null)
+                               return exported_type.DeclaringType.MetadataToken;
+
+                       var scope = exported_type.Scope;
+                       switch (scope.MetadataToken.TokenType) {
+                       case TokenType.AssemblyRef:
+                               return scope.MetadataToken;
+                       case TokenType.ModuleRef:
+                               var file_table = GetTable<FileTable> (Table.File);
+                               for (int i = 0; i < file_table.length; i++)
+                                       if (file_table.rows [i].Col2 == GetStringIndex (scope.Name))
+                                               return new MetadataToken (TokenType.File, i + 1);
+
+                               break;
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               void BuildTypes ()
+               {
+                       if (!module.HasTypes)
+                               return;
+
+                       AttachTokens ();
+                       AddTypeDefs ();
+                       AddGenericParameters ();
+               }
+
+               void AttachTokens ()
+               {
+                       var types = module.Types;
+
+                       for (int i = 0; i < types.Count; i++)
+                               AttachTypeDefToken (types [i]);
+               }
+
+               void AttachTypeDefToken (TypeDefinition type)
+               {
+                       type.token = new MetadataToken (TokenType.TypeDef, type_rid++);
+                       type.fields_range.Start = field_rid;
+                       type.methods_range.Start = method_rid;
+
+                       if (type.HasFields)
+                               AttachFieldsDefToken (type);
+
+                       if (type.HasMethods)
+                               AttachMethodsDefToken (type);
+
+                       if (type.HasNestedTypes)
+                               AttachNestedTypesDefToken (type);
+               }
+
+               void AttachNestedTypesDefToken (TypeDefinition type)
+               {
+                       var nested_types = type.NestedTypes;
+                       for (int i = 0; i < nested_types.Count; i++)
+                               AttachTypeDefToken (nested_types [i]);
+               }
+
+               void AttachFieldsDefToken (TypeDefinition type)
+               {
+                       var fields = type.Fields;
+                       type.fields_range.Length = (uint) fields.Count;
+                       for (int i = 0; i < fields.Count; i++)
+                               fields [i].token = new MetadataToken (TokenType.Field, field_rid++);
+               }
+
+               void AttachMethodsDefToken (TypeDefinition type)
+               {
+                       var methods = type.Methods;
+                       type.methods_range.Length = (uint) methods.Count;
+                       for (int i = 0; i < methods.Count; i++) {
+                               var method = methods [i];
+                               var new_token = new MetadataToken (TokenType.Method, method_rid++);
+
+                               if (write_symbols && method.token != MetadataToken.Zero)
+                                       method_def_map.Add (new_token, method.token);
+
+                               method.token = new_token;
+                       }
+               }
+
+               public bool TryGetOriginalMethodToken (MetadataToken new_token, out MetadataToken original)
+               {
+                       return method_def_map.TryGetValue (new_token, out original);
+               }
+
+               MetadataToken GetTypeToken (TypeReference type)
+               {
+                       if (type == null)
+                               return MetadataToken.Zero;
+
+                       if (type.IsDefinition)
+                               return type.token;
+
+                       if (type.IsTypeSpecification ())
+                               return GetTypeSpecToken (type);
+
+                       return GetTypeRefToken (type);
+               }
+
+               MetadataToken GetTypeSpecToken (TypeReference type)
+               {
+                       var row = GetBlobIndex (GetTypeSpecSignature (type));
+
+                       MetadataToken token;
+                       if (type_spec_map.TryGetValue (row, out token))
+                               return token;
+
+                       return AddTypeSpecification (type, row);
+               }
+
+               MetadataToken AddTypeSpecification (TypeReference type, uint row)
+               {
+                       type.token = new MetadataToken (TokenType.TypeSpec, typespec_table.AddRow (row));
+
+                       var token = type.token;
+                       type_spec_map.Add (row, token);
+                       return token;
+               }
+
+               MetadataToken GetTypeRefToken (TypeReference type)
+               {
+                       var row = CreateTypeRefRow (type);
+
+                       MetadataToken token;
+                       if (type_ref_map.TryGetValue (row, out token))
+                               return token;
+
+                       return AddTypeReference (type, row);
+               }
+
+               TypeRefRow CreateTypeRefRow (TypeReference type)
+               {
+                       var scope_token = type.IsNested
+                               ? GetTypeRefToken (type.DeclaringType)
+                               : type.Scope.MetadataToken;
+
+                       return new TypeRefRow (
+                               MakeCodedRID (scope_token, CodedIndex.ResolutionScope),
+                               GetStringIndex (type.Name),
+                               GetStringIndex (type.Namespace));
+               }
+
+               static CodedRID MakeCodedRID (IMetadataTokenProvider provider, CodedIndex index)
+               {
+                       return MakeCodedRID (provider.MetadataToken, index);
+               }
+
+               static CodedRID MakeCodedRID (MetadataToken token, CodedIndex index)
+               {
+                       return index.CompressMetadataToken (token);
+               }
+
+               MetadataToken AddTypeReference (TypeReference type, TypeRefRow row)
+               {
+                       type.token = new MetadataToken (TokenType.TypeRef, type_ref_table.AddRow (row));
+
+                       var token = type.token;
+                       type_ref_map.Add (row, token);
+                       return token;
+               }
+
+               void AddTypeDefs ()
+               {
+                       var types = module.Types;
+
+                       for (int i = 0; i < types.Count; i++)
+                               AddType (types [i]);
+               }
+
+               void AddType (TypeDefinition type)
+               {
+                       type_def_table.AddRow (new TypeDefRow (
+                               type.Attributes,
+                               GetStringIndex (type.Name),
+                               GetStringIndex (type.Namespace),
+                               MakeCodedRID (GetTypeToken (type.BaseType), CodedIndex.TypeDefOrRef),
+                               type.fields_range.Start,
+                               type.methods_range.Start));
+
+                       if (type.HasGenericParameters)
+                               AddGenericParameters (type);
+
+                       if (type.HasInterfaces)
+                               AddInterfaces (type);
+
+                       if (type.HasLayoutInfo)
+                               AddLayoutInfo (type);
+
+                       if (type.HasFields)
+                               AddFields (type);
+
+                       if (type.HasMethods)
+                               AddMethods (type);
+
+                       if (type.HasProperties)
+                               AddProperties (type);
+
+                       if (type.HasEvents)
+                               AddEvents (type);
+
+                       if (type.HasCustomAttributes)
+                               AddCustomAttributes (type);
+
+                       if (type.HasSecurityDeclarations)
+                               AddSecurityDeclarations (type);
+
+                       if (type.HasNestedTypes)
+                               AddNestedTypes (type);
+               }
+
+               void AddGenericParameters (IGenericParameterProvider owner)
+               {
+                       var parameters = owner.GenericParameters;
+
+                       for (int i = 0; i < parameters.Count; i++)
+                               generic_parameters.Add (parameters [i]);
+               }
+
+               sealed class GenericParameterComparer : IComparer<GenericParameter> {
+
+                       public int Compare (GenericParameter a, GenericParameter b)
+                       {
+                               var a_owner = MakeCodedRID (a.Owner, CodedIndex.TypeOrMethodDef);
+                               var b_owner = MakeCodedRID (b.Owner, CodedIndex.TypeOrMethodDef);
+                               if (a_owner == b_owner) {
+                                       var a_pos = a.Position;
+                                       var b_pos = b.Position;
+                                       return a_pos == b_pos ? 0 : a_pos > b_pos ? 1 : -1;
+                               }
+
+                               return a_owner > b_owner ? 1 : -1;
+                       }
+               }
+
+               void AddGenericParameters ()
+               {
+                       var items = this.generic_parameters.items;
+                       var size = this.generic_parameters.size;
+                       Array.Sort (items, 0, size, new GenericParameterComparer ());
+
+                       var generic_param_table = GetTable<GenericParamTable> (Table.GenericParam);
+                       var generic_param_constraint_table = GetTable<GenericParamConstraintTable> (Table.GenericParamConstraint);
+
+                       for (int i = 0; i < size; i++) {
+                               var generic_parameter = items [i];
+
+                               var rid = generic_param_table.AddRow (new GenericParamRow (
+                                       (ushort) generic_parameter.Position,
+                                       generic_parameter.Attributes,
+                                       MakeCodedRID (generic_parameter.Owner, CodedIndex.TypeOrMethodDef),
+                                       GetStringIndex (generic_parameter.Name)));
+
+                               generic_parameter.token = new MetadataToken (TokenType.GenericParam, rid);
+
+                               if (generic_parameter.HasConstraints)
+                                       AddConstraints (generic_parameter, generic_param_constraint_table);
+
+                               if (generic_parameter.HasCustomAttributes)
+                                       AddCustomAttributes (generic_parameter);
+                       }
+               }
+
+               void AddConstraints (GenericParameter generic_parameter, GenericParamConstraintTable table)
+               {
+                       var constraints = generic_parameter.Constraints;
+
+                       var rid = generic_parameter.token.RID;
+
+                       for (int i = 0; i < constraints.Count; i++)
+                               table.AddRow (new GenericParamConstraintRow (
+                                       rid,
+                                       MakeCodedRID (GetTypeToken (constraints [i]), CodedIndex.TypeDefOrRef)));
+               }
+
+               void AddInterfaces (TypeDefinition type)
+               {
+                       var interfaces = type.Interfaces;
+                       var type_rid = type.token.RID;
+
+                       for (int i = 0; i < interfaces.Count; i++)
+                               iface_impl_table.AddRow (new InterfaceImplRow (
+                                       type_rid,
+                                       MakeCodedRID (GetTypeToken (interfaces [i]), CodedIndex.TypeDefOrRef)));
+               }
+
+               void AddLayoutInfo (TypeDefinition type)
+               {
+                       var table = GetTable<ClassLayoutTable> (Table.ClassLayout);
+
+                       table.AddRow (new ClassLayoutRow (
+                               (ushort) type.PackingSize,
+                               (uint) type.ClassSize,
+                               type.token.RID));
+               }
+
+               void AddNestedTypes (TypeDefinition type)
+               {
+                       var nested_types = type.NestedTypes;
+                       var nested_table = GetTable<NestedClassTable> (Table.NestedClass);
+
+                       for (int i = 0; i < nested_types.Count; i++) {
+                               var nested = nested_types [i];
+                               AddType (nested);
+                               nested_table.AddRow (new NestedClassRow (nested.token.RID, type.token.RID));
+                       }
+               }
+
+               void AddFields (TypeDefinition type)
+               {
+                       var fields = type.Fields;
+
+                       for (int i = 0; i < fields.Count; i++)
+                               AddField (fields [i]);
+               }
+
+               void AddField (FieldDefinition field)
+               {
+                       field_table.AddRow (new FieldRow (
+                               field.Attributes,
+                               GetStringIndex (field.Name),
+                               GetBlobIndex (GetFieldSignature (field))));
+
+                       if (!field.InitialValue.IsNullOrEmpty ())
+                               AddFieldRVA (field);
+
+                       if (field.HasLayoutInfo)
+                               AddFieldLayout (field);
+
+                       if (field.HasCustomAttributes)
+                               AddCustomAttributes (field);
+
+                       if (field.HasConstant)
+                               AddConstant (field, field.FieldType);
+
+                       if (field.HasMarshalInfo)
+                               AddMarshalInfo (field);
+               }
+
+               void AddFieldRVA (FieldDefinition field)
+               {
+                       var table = GetTable<FieldRVATable> (Table.FieldRVA);
+                       table.AddRow (new FieldRVARow (
+                               data.AddData (field.InitialValue),
+                               field.token.RID));
+               }
+
+               void AddFieldLayout (FieldDefinition field)
+               {
+                       var table = GetTable<FieldLayoutTable> (Table.FieldLayout);
+                       table.AddRow (new FieldLayoutRow ((uint) field.Offset, field.token.RID));
+               }
+
+               void AddMethods (TypeDefinition type)
+               {
+                       var methods = type.Methods;
+
+                       for (int i = 0; i < methods.Count; i++)
+                               AddMethod (methods [i]);
+               }
+
+               void AddMethod (MethodDefinition method)
+               {
+                       method_table.AddRow (new MethodRow (
+                               method.HasBody ? code.WriteMethodBody (method) : 0,
+                               method.ImplAttributes,
+                               method.Attributes,
+                               GetStringIndex (method.Name),
+                               GetBlobIndex (GetMethodSignature (method)),
+                               param_rid));
+
+                       AddParameters (method);
+
+                       if (method.HasGenericParameters)
+                               AddGenericParameters (method);
+
+                       if (method.IsPInvokeImpl)
+                               AddPInvokeInfo (method);
+
+                       if (method.HasCustomAttributes)
+                               AddCustomAttributes (method);
+
+                       if (method.HasSecurityDeclarations)
+                               AddSecurityDeclarations (method);
+
+                       if (method.HasOverrides)
+                               AddOverrides (method);
+               }
+
+               void AddParameters (MethodDefinition method)
+               {
+                       var return_parameter = method.MethodReturnType.parameter;
+
+                       if (return_parameter != null && RequiresParameterRow (return_parameter))
+                               AddParameter (0, return_parameter, param_table);
+
+                       if (!method.HasParameters)
+                               return;
+
+                       var parameters = method.Parameters;
+
+                       for (int i = 0; i < parameters.Count; i++) {
+                               var parameter = parameters [i];
+                               if (!RequiresParameterRow (parameter))
+                                       continue;
+
+                               AddParameter ((ushort) (i + 1), parameter, param_table);
+                       }
+               }
+
+               void AddPInvokeInfo (MethodDefinition method)
+               {
+                       var pinvoke = method.PInvokeInfo;
+                       if (pinvoke == null)
+                               throw new ArgumentException ();
+
+                       var table = GetTable<ImplMapTable> (Table.ImplMap);
+                       table.AddRow (new ImplMapRow (
+                               pinvoke.Attributes,
+                               MakeCodedRID (method, CodedIndex.MemberForwarded),
+                               GetStringIndex (pinvoke.EntryPoint),
+                               pinvoke.Module.MetadataToken.RID));
+               }
+
+               void AddOverrides (MethodDefinition method)
+               {
+                       var overrides = method.Overrides;
+                       var table = GetTable<MethodImplTable> (Table.MethodImpl);
+
+                       for (int i = 0; i < overrides.Count; i++) {
+                               table.AddRow (new MethodImplRow (
+                                       method.DeclaringType.token.RID,
+                                       MakeCodedRID (method, CodedIndex.MethodDefOrRef),
+                                       MakeCodedRID (LookupToken (overrides [i]), CodedIndex.MethodDefOrRef)));
+                       }
+               }
+
+               static bool RequiresParameterRow (ParameterDefinition parameter)
+               {
+                       return !string.IsNullOrEmpty (parameter.Name)
+                               || parameter.Attributes != ParameterAttributes.None
+                               || parameter.HasMarshalInfo
+                               || parameter.HasConstant
+                               || parameter.HasCustomAttributes;
+               }
+
+               void AddParameter (ushort sequence, ParameterDefinition parameter, ParamTable table)
+               {
+                       table.AddRow (new ParamRow (
+                               parameter.Attributes,
+                               sequence,
+                               GetStringIndex (parameter.Name)));
+
+                       parameter.token = new MetadataToken (TokenType.Param, param_rid++);
+
+                       if (parameter.HasCustomAttributes)
+                               AddCustomAttributes (parameter);
+
+                       if (parameter.HasConstant)
+                               AddConstant (parameter, parameter.ParameterType);
+
+                       if (parameter.HasMarshalInfo)
+                               AddMarshalInfo (parameter);
+               }
+
+               void AddMarshalInfo (IMarshalInfoProvider owner)
+               {
+                       var table = GetTable<FieldMarshalTable> (Table.FieldMarshal);
+
+                       table.AddRow (new FieldMarshalRow (
+                               MakeCodedRID (owner, CodedIndex.HasFieldMarshal),
+                               GetBlobIndex (GetMarshalInfoSignature (owner))));
+               }
+
+               void AddProperties (TypeDefinition type)
+               {
+                       var properties = type.Properties;
+
+                       property_map_table.AddRow (new PropertyMapRow (type.token.RID, property_rid));
+
+                       for (int i = 0; i < properties.Count; i++)
+                               AddProperty (properties [i]);
+               }
+
+               void AddProperty (PropertyDefinition property)
+               {
+                       property_table.AddRow (new PropertyRow (
+                               property.Attributes,
+                               GetStringIndex (property.Name),
+                               GetBlobIndex (GetPropertySignature (property))));
+                       property.token = new MetadataToken (TokenType.Property, property_rid++);
+
+                       var method = property.GetMethod;
+                       if (method != null)
+                               AddSemantic (MethodSemanticsAttributes.Getter, property, method);
+
+                       method = property.SetMethod;
+                       if (method != null)
+                               AddSemantic (MethodSemanticsAttributes.Setter, property, method);
+
+                       if (property.HasOtherMethods)
+                               AddOtherSemantic (property, property.OtherMethods);
+
+                       if (property.HasCustomAttributes)
+                               AddCustomAttributes (property);
+
+                       if (property.HasConstant)
+                               AddConstant (property, property.PropertyType);
+               }
+
+               void AddOtherSemantic (IMetadataTokenProvider owner, Collection<MethodDefinition> others)
+               {
+                       for (int i = 0; i < others.Count; i++)
+                               AddSemantic (MethodSemanticsAttributes.Other, owner, others [i]);
+               }
+
+               void AddEvents (TypeDefinition type)
+               {
+                       var events = type.Events;
+
+                       event_map_table.AddRow (new EventMapRow (type.token.RID, event_rid));
+
+                       for (int i = 0; i < events.Count; i++)
+                               AddEvent (events [i]);
+               }
+
+               void AddEvent (EventDefinition @event)
+               {
+                       event_table.AddRow (new EventRow (
+                               @event.Attributes,
+                               GetStringIndex (@event.Name),
+                               MakeCodedRID (GetTypeToken (@event.EventType), CodedIndex.TypeDefOrRef)));
+                       @event.token = new MetadataToken (TokenType.Event, event_rid++);
+
+                       var method = @event.AddMethod;
+                       if (method != null)
+                               AddSemantic (MethodSemanticsAttributes.AddOn, @event, method);
+
+                       method = @event.InvokeMethod;
+                       if (method != null)
+                               AddSemantic (MethodSemanticsAttributes.Fire, @event, method);
+
+                       method = @event.RemoveMethod;
+                       if (method != null)
+                               AddSemantic (MethodSemanticsAttributes.RemoveOn, @event, method);
+
+                       if (@event.HasOtherMethods)
+                               AddOtherSemantic (@event, @event.OtherMethods);
+
+                       if (@event.HasCustomAttributes)
+                               AddCustomAttributes (@event);
+               }
+
+               void AddSemantic (MethodSemanticsAttributes semantics, IMetadataTokenProvider provider, MethodDefinition method)
+               {
+                       method.SemanticsAttributes = semantics;
+                       var table = GetTable<MethodSemanticsTable> (Table.MethodSemantics);
+
+                       table.AddRow (new MethodSemanticsRow (
+                               semantics,
+                               method.token.RID,
+                               MakeCodedRID (provider, CodedIndex.HasSemantics)));
+               }
+
+               void AddConstant (IConstantProvider owner, TypeReference type)
+               {
+                       var constant = owner.Constant;
+                       var etype = GetConstantType (type, constant);
+
+                       constant_table.AddRow (new ConstantRow (
+                               etype,
+                               MakeCodedRID (owner.MetadataToken, CodedIndex.HasConstant),
+                               GetBlobIndex (GetConstantSignature (etype, constant))));
+               }
+
+               static ElementType GetConstantType (TypeReference constant_type, object constant)
+               {
+                       if (constant == null)
+                               return ElementType.Class;
+
+                       var etype = constant_type.etype;
+                       switch (etype) {
+                       case ElementType.None:
+                               var type = constant_type.CheckedResolve ();
+                               if (type.IsEnum)
+                                       return GetConstantType (type.GetEnumUnderlyingType (), constant);
+
+                               return ElementType.Class;
+                       case ElementType.String:
+                               return ElementType.String;
+                       case ElementType.Object:
+                               return GetConstantType (constant.GetType ());
+                       case ElementType.Array:
+                       case ElementType.SzArray:
+                       case ElementType.MVar:
+                       case ElementType.Var:
+                               return ElementType.Class;
+                       case ElementType.GenericInst:
+                       case ElementType.CModOpt:
+                       case ElementType.CModReqD:
+                       case ElementType.ByRef:
+                       case ElementType.Sentinel:
+                               return GetConstantType (((TypeSpecification) constant_type).ElementType, constant);
+                       case ElementType.Boolean:
+                       case ElementType.Char:
+                       case ElementType.I:
+                       case ElementType.I1:
+                       case ElementType.I2:
+                       case ElementType.I4:
+                       case ElementType.I8:
+                       case ElementType.U:
+                       case ElementType.U1:
+                       case ElementType.U2:
+                       case ElementType.U4:
+                       case ElementType.U8:
+                       case ElementType.R4:
+                       case ElementType.R8:
+                               return GetConstantType (constant.GetType ());
+                       default:
+                               return etype;
+                       }
+               }
+
+               static ElementType GetConstantType (Type type)
+               {
+                       switch (Type.GetTypeCode (type)) {
+                       case TypeCode.Boolean:
+                               return ElementType.Boolean;
+                       case TypeCode.Byte:
+                               return ElementType.U1;
+                       case TypeCode.SByte:
+                               return ElementType.I1;
+                       case TypeCode.Char:
+                               return ElementType.Char;
+                       case TypeCode.Int16:
+                               return ElementType.I2;
+                       case TypeCode.UInt16:
+                               return ElementType.U2;
+                       case TypeCode.Int32:
+                               return ElementType.I4;
+                       case TypeCode.UInt32:
+                               return ElementType.U4;
+                       case TypeCode.Int64:
+                               return ElementType.I8;
+                       case TypeCode.UInt64:
+                               return ElementType.U8;
+                       case TypeCode.Single:
+                               return ElementType.R4;
+                       case TypeCode.Double:
+                               return ElementType.R8;
+                       case TypeCode.String:
+                               return ElementType.String;
+                       default:
+                               throw new NotSupportedException (type.FullName);
+                       }
+               }
+
+               void AddCustomAttributes (ICustomAttributeProvider owner)
+               {
+                       var custom_attributes = owner.CustomAttributes;
+
+                       for (int i = 0; i < custom_attributes.Count; i++) {
+                               var attribute = custom_attributes [i];
+
+                               custom_attribute_table.AddRow (new CustomAttributeRow (
+                                       MakeCodedRID (owner, CodedIndex.HasCustomAttribute),
+                                       MakeCodedRID (LookupToken (attribute.Constructor), CodedIndex.CustomAttributeType),
+                                       GetBlobIndex (GetCustomAttributeSignature (attribute))));
+                       }
+               }
+
+               void AddSecurityDeclarations (ISecurityDeclarationProvider owner)
+               {
+                       var declarations = owner.SecurityDeclarations;
+
+                       for (int i = 0; i < declarations.Count; i++) {
+                               var declaration = declarations [i];
+
+                               declsec_table.AddRow (new DeclSecurityRow (
+                                       declaration.Action,
+                                       MakeCodedRID (owner, CodedIndex.HasDeclSecurity),
+                                       GetBlobIndex (GetSecurityDeclarationSignature (declaration))));
+                       }
+               }
+
+               MetadataToken GetMemberRefToken (MemberReference member)
+               {
+                       var row = CreateMemberRefRow (member);
+
+                       MetadataToken token;
+                       if (member_ref_map.TryGetValue (row, out token))
+                               return token;
+
+                       AddMemberReference (member, row);
+
+                       return member.token;
+               }
+
+               MemberRefRow CreateMemberRefRow (MemberReference member)
+               {
+                       return new MemberRefRow (
+                               MakeCodedRID (GetTypeToken (member.DeclaringType), CodedIndex.MemberRefParent),
+                               GetStringIndex (member.Name),
+                               GetBlobIndex (GetMemberRefSignature (member)));
+               }
+
+               void AddMemberReference (MemberReference member, MemberRefRow row)
+               {
+                       member.token = new MetadataToken (TokenType.MemberRef, member_ref_table.AddRow (row));
+                       member_ref_map.Add (row, member.token);
+               }
+
+               MetadataToken GetMethodSpecToken (MethodSpecification method_spec)
+               {
+                       var row = CreateMethodSpecRow (method_spec);
+
+                       MetadataToken token;
+                       if (method_spec_map.TryGetValue (row, out token))
+                               return token;
+
+                       AddMethodSpecification (method_spec, row);
+
+                       return method_spec.token;
+               }
+
+               void AddMethodSpecification (MethodSpecification method_spec, MethodSpecRow row)
+               {
+                       method_spec.token = new MetadataToken (TokenType.MethodSpec, method_spec_table.AddRow (row));
+                       method_spec_map.Add (row, method_spec.token);
+               }
+
+               MethodSpecRow CreateMethodSpecRow (MethodSpecification method_spec)
+               {
+                       return new MethodSpecRow (
+                               MakeCodedRID (LookupToken (method_spec.ElementMethod), CodedIndex.MethodDefOrRef),
+                               GetBlobIndex (GetMethodSpecSignature (method_spec)));
+               }
+
+               SignatureWriter CreateSignatureWriter ()
+               {
+                       return new SignatureWriter (this);
+               }
+
+               SignatureWriter GetMethodSpecSignature (MethodSpecification method_spec)
+               {
+                       if (!method_spec.IsGenericInstance)
+                               throw new NotSupportedException ();
+
+                       var generic_instance = (GenericInstanceMethod) method_spec;
+
+                       var signature = CreateSignatureWriter ();
+                       signature.WriteByte (0x0a);
+
+                       signature.WriteGenericInstanceSignature (generic_instance);
+
+                       return signature;
+               }
+
+               public uint AddStandAloneSignature (uint signature)
+               {
+                       return (uint) standalone_sig_table.AddRow (signature);
+               }
+
+               public uint GetLocalVariableBlobIndex (Collection<VariableDefinition> variables)
+               {
+                       return GetBlobIndex (GetVariablesSignature (variables));
+               }
+
+               public uint GetCallSiteBlobIndex (CallSite call_site)
+               {
+                       return GetBlobIndex (GetMethodSignature (call_site));
+               }
+
+               SignatureWriter GetVariablesSignature (Collection<VariableDefinition> variables)
+               {
+                       var signature = CreateSignatureWriter ();
+                       signature.WriteByte (0x7);
+                       signature.WriteCompressedUInt32 ((uint) variables.Count);
+                       for (int i = 0; i < variables.Count; i++)
+                               signature.WriteTypeSignature (variables [i].VariableType);
+                       return signature;
+               }
+
+               SignatureWriter GetFieldSignature (FieldReference field)
+               {
+                       var signature = CreateSignatureWriter ();
+                       signature.WriteByte (0x6);
+                       signature.WriteTypeSignature (field.FieldType);
+                       return signature;
+               }
+
+               SignatureWriter GetMethodSignature (IMethodSignature method)
+               {
+                       var signature = CreateSignatureWriter ();
+                       signature.WriteMethodSignature (method);
+                       return signature;
+               }
+
+               SignatureWriter GetMemberRefSignature (MemberReference member)
+               {
+                       var field = member as FieldReference;
+                       if (field != null)
+                               return GetFieldSignature (field);
+
+                       var method = member as MethodReference;
+                       if (method != null)
+                               return GetMethodSignature (method);
+
+                       throw new NotSupportedException ();
+               }
+
+               SignatureWriter GetPropertySignature (PropertyDefinition property)
+               {
+                       var signature = CreateSignatureWriter ();
+                       byte calling_convention = 0x8;
+                       if (property.HasThis)
+                               calling_convention |= 0x20;
+
+                       uint param_count = 0;
+                       Collection<ParameterDefinition> parameters = null;
+
+                       if (property.HasParameters) {
+                               parameters = property.Parameters;
+                               param_count = (uint) parameters.Count;
+                       }
+
+                       signature.WriteByte (calling_convention);
+                       signature.WriteCompressedUInt32 (param_count);
+                       signature.WriteTypeSignature (property.PropertyType);
+
+                       if (param_count == 0)
+                               return signature;
+
+                       for (int i = 0; i < param_count; i++)
+                               signature.WriteTypeSignature (parameters [i].ParameterType);
+
+                       return signature;
+               }
+
+               SignatureWriter GetTypeSpecSignature (TypeReference type)
+               {
+                       var signature = CreateSignatureWriter ();
+                       signature.WriteTypeSignature (type);
+                       return signature;
+               }
+
+               SignatureWriter GetConstantSignature (ElementType type, object value)
+               {
+                       var signature = CreateSignatureWriter ();
+
+                       switch (type) {
+                       case ElementType.Array:
+                       case ElementType.SzArray:
+                       case ElementType.Class:
+                       case ElementType.Object:
+                       case ElementType.Var:
+                       case ElementType.MVar:
+                               signature.WriteInt32 (0);
+                               break;
+                       case ElementType.String:
+                               signature.WriteConstantString ((string) value);
+                               break;
+                       default:
+                               signature.WriteConstantPrimitive (value);
+                               break;
+                       }
+
+                       return signature;
+               }
+
+               SignatureWriter GetCustomAttributeSignature (CustomAttribute attribute)
+               {
+                       var signature = CreateSignatureWriter ();
+                       if (!attribute.resolved) {
+                               signature.WriteBytes (attribute.GetBlob ());
+                               return signature;
+                       }
+
+                       signature.WriteUInt16 (0x0001);
+
+                       signature.WriteCustomAttributeConstructorArguments (attribute);
+
+                       signature.WriteCustomAttributeNamedArguments (attribute);
+
+                       return signature;
+               }
+
+               SignatureWriter GetSecurityDeclarationSignature (SecurityDeclaration declaration)
+               {
+                       var signature = CreateSignatureWriter ();
+                       if (!declaration.resolved) {
+                               signature.WriteBytes (declaration.GetBlob ());
+                               return signature;
+                       }
+
+                       signature.WriteByte ((byte) '.');
+
+                       var attributes = declaration.security_attributes;
+                       if (attributes == null)
+                               throw new NotSupportedException ();
+
+                       signature.WriteCompressedUInt32 ((uint) attributes.Count);
+
+                       for (int i = 0; i < attributes.Count; i++)
+                               signature.WriteSecurityAttribute (attributes [i]);
+
+                       return signature;
+               }
+
+               SignatureWriter GetMarshalInfoSignature (IMarshalInfoProvider owner)
+               {
+                       var signature = CreateSignatureWriter ();
+
+                       signature.WriteMarshalInfo (owner.MarshalInfo);
+
+                       return signature;
+               }
+
+               public MetadataToken LookupToken (IMetadataTokenProvider provider)
+               {
+                       if (provider == null)
+                               throw new ArgumentNullException ();
+
+                       var token = provider.MetadataToken;
+
+                       switch (token.TokenType) {
+                       case TokenType.TypeDef:
+                       case TokenType.Method:
+                       case TokenType.Field:
+                       case TokenType.Event:
+                       case TokenType.Property:
+                               return token;
+                       case TokenType.TypeRef:
+                       case TokenType.TypeSpec:
+                       case TokenType.GenericParam:
+                               return GetTypeToken ((TypeReference) provider);
+                       case TokenType.MethodSpec:
+                               return GetMethodSpecToken ((MethodSpecification) provider);
+                       case TokenType.MemberRef:
+                               return GetMemberRefToken ((MemberReference) provider);
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
+       }
+
+       sealed class SignatureWriter : ByteBuffer {
+
+               readonly MetadataBuilder metadata;
+
+               public SignatureWriter (MetadataBuilder metadata)
+                       : base (6)
+               {
+                       this.metadata = metadata;
+               }
+
+               public void WriteElementType (ElementType element_type)
+               {
+                       WriteByte ((byte) element_type);
+               }
+
+               public void WriteUTF8String (string @string)
+               {
+                       if (@string == null) {
+                               WriteByte (0xff);
+                               return;
+                       }
+
+                       var bytes = Encoding.UTF8.GetBytes (@string);
+                       WriteCompressedUInt32 ((uint) bytes.Length);
+                       WriteBytes (bytes);
+               }
+
+               public void WriteMethodSignature (IMethodSignature method)
+               {
+                       byte calling_convention = (byte) method.CallingConvention;
+                       if (method.HasThis)
+                               calling_convention |= 0x20;
+                       if (method.ExplicitThis)
+                               calling_convention |= 0x40;
+
+                       var generic_provider = method as IGenericParameterProvider;
+                       var generic_arity = generic_provider != null && generic_provider.HasGenericParameters
+                               ? generic_provider.GenericParameters.Count
+                               : 0;
+
+                       if (generic_arity > 0)
+                               calling_convention |= 0x10;
+
+                       var param_count = method.HasParameters ? method.Parameters.Count : 0;
+
+                       WriteByte (calling_convention);
+
+                       if (generic_arity > 0)
+                               WriteCompressedUInt32 ((uint) generic_arity);
+
+                       WriteCompressedUInt32 ((uint) param_count);
+                       WriteTypeSignature (method.ReturnType);
+
+                       if (param_count == 0)
+                               return;
+
+                       var parameters = method.Parameters;
+
+                       for (int i = 0; i < param_count; i++)
+                               WriteTypeSignature (parameters [i].ParameterType);
+               }
+
+               uint MakeTypeDefOrRefCodedRID (TypeReference type)
+               {
+                       return CodedIndex.TypeDefOrRef.CompressMetadataToken (metadata.LookupToken (type));
+               }
+
+               public void WriteTypeSignature (TypeReference type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ();
+
+                       var etype = type.etype;
+
+                       switch (etype) {
+                       case ElementType.MVar:
+                       case ElementType.Var: {
+                               var generic_parameter = (GenericParameter) type;
+
+                               WriteElementType (etype);
+                               var position = generic_parameter.Position;
+                               if (position == -1)
+                                       throw new NotSupportedException ();
+
+                               WriteCompressedUInt32 ((uint) position);
+                               break;
+                       }
+
+                       case ElementType.GenericInst: {
+                               var generic_instance = (GenericInstanceType) type;
+                               WriteElementType (ElementType.GenericInst);
+                               WriteElementType (generic_instance.IsValueType ? ElementType.ValueType : ElementType.Class);
+                               WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (generic_instance.ElementType));
+
+                               WriteGenericInstanceSignature (generic_instance);
+                               break;
+                       }
+
+                       case ElementType.Ptr:
+                       case ElementType.ByRef:
+                       case ElementType.Pinned:
+                       case ElementType.Sentinel: {
+                               var type_spec = (TypeSpecification) type;
+                               WriteElementType (etype);
+                               WriteTypeSignature (type_spec.ElementType);
+                               break;
+                       }
+
+                       case ElementType.FnPtr: {
+                               var fptr = (FunctionPointerType) type;
+                               WriteElementType (ElementType.FnPtr);
+                               WriteMethodSignature (fptr);
+                               break;
+                       }
+
+                       case ElementType.CModOpt:
+                       case ElementType.CModReqD: {
+                               var modifier = (IModifierType) type;
+                               WriteModifierSignature (etype, modifier);
+                               break;
+                       }
+
+                       case ElementType.Array: {
+                               var array = (ArrayType) type;
+                               if (!array.IsVector) {
+                                       WriteArrayTypeSignature (array);
+                                       break;
+                               }
+
+                               WriteElementType (ElementType.SzArray);
+                               WriteTypeSignature (array.ElementType);
+                               break;
+                       }
+
+                       case ElementType.None: {
+                               WriteElementType (type.IsValueType ? ElementType.ValueType : ElementType.Class);
+                               WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (type));
+                               break;
+                       }
+
+                       default:
+                               if (!TryWriteElementType (type))
+                                       throw new NotSupportedException ();
+
+                               break;
+
+                       }
+               }
+
+               void WriteArrayTypeSignature (ArrayType array)
+               {
+                       WriteElementType (ElementType.Array);
+                       WriteTypeSignature (array.ElementType);
+
+                       var dimensions = array.Dimensions;
+                       var rank = dimensions.Count;
+
+                       WriteCompressedUInt32 ((uint) rank);
+
+                       var sized = 0;
+                       var lbounds = 0;
+
+                       for (int i = 0; i < rank; i++) {
+                               var dimension = dimensions [i];
+
+                               if (dimension.UpperBound.HasValue) {
+                                       sized++;
+                                       lbounds++;
+                               } else if (dimension.LowerBound.HasValue)
+                                       lbounds++;
+                       }
+
+                       var sizes = new int [sized];
+                       var low_bounds = new int [lbounds];
+
+                       for (int i = 0; i < lbounds; i++) {
+                               var dimension = dimensions [i];
+                               low_bounds [i] = dimension.LowerBound.GetValueOrDefault ();
+                               if (dimension.UpperBound.HasValue)
+                                       sizes [i] = dimension.UpperBound.Value - low_bounds [i] + 1;
+                       }
+
+                       WriteCompressedUInt32 ((uint) sized);
+                       for (int i = 0; i < sized; i++)
+                               WriteCompressedUInt32 ((uint) sizes [i]);
+
+                       WriteCompressedUInt32 ((uint) lbounds);
+                       for (int i = 0; i < lbounds; i++)
+                               WriteCompressedInt32 (low_bounds [i]);
+               }
+
+               public void WriteGenericInstanceSignature (IGenericInstance instance)
+               {
+                       var generic_arguments = instance.GenericArguments;
+                       var arity = generic_arguments.Count;
+
+                       WriteCompressedUInt32 ((uint) arity);
+                       for (int i = 0; i < arity; i++)
+                               WriteTypeSignature (generic_arguments [i]);
+               }
+
+               void WriteModifierSignature (ElementType element_type, IModifierType type)
+               {
+                       WriteElementType (element_type);
+                       WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (type.ModifierType));
+                       WriteTypeSignature (type.ElementType);
+               }
+
+               bool TryWriteElementType (TypeReference type)
+               {
+                       var element = type.etype;
+
+                       if (element == ElementType.None)
+                               return false;
+
+                       WriteElementType (element);
+                       return true;
+               }
+
+               public void WriteConstantString (string value)
+               {
+                       WriteBytes (Encoding.Unicode.GetBytes (value));
+               }
+
+               public void WriteConstantPrimitive (object value)
+               {
+                       WritePrimitiveValue (value);
+               }
+
+               public void WriteCustomAttributeConstructorArguments (CustomAttribute attribute)
+               {
+                       if (!attribute.HasConstructorArguments)
+                               return;
+
+                       var arguments = attribute.ConstructorArguments;
+                       var parameters = attribute.Constructor.Parameters;
+
+                       if (parameters.Count != arguments.Count)
+                               throw new InvalidOperationException ();
+
+                       for (int i = 0; i < arguments.Count; i++)
+                               WriteCustomAttributeFixedArgument (parameters [i].ParameterType, arguments [i]);
+               }
+
+               void WriteCustomAttributeFixedArgument (TypeReference type, CustomAttributeArgument argument)
+               {
+                       if (type.IsArray) {
+                               WriteCustomAttributeFixedArrayArgument ((ArrayType) type, argument);
+                               return;
+                       }
+
+                       WriteCustomAttributeElement (type, argument);
+               }
+
+               void WriteCustomAttributeFixedArrayArgument (ArrayType type, CustomAttributeArgument argument)
+               {
+                       var values = argument.Value as CustomAttributeArgument [];
+
+                       if (values == null) {
+                               WriteUInt32 (0xffffffff);
+                               return;
+                       }
+
+                       WriteInt32 (values.Length);
+
+                       if (values.Length == 0)
+                               return;
+
+                       var element_type = type.ElementType;
+
+                       for (int i = 0; i < values.Length; i++)
+                               WriteCustomAttributeElement (element_type, values [i]);
+               }
+
+               void WriteCustomAttributeElement (TypeReference type, CustomAttributeArgument argument)
+               {
+                       if (type.IsArray) {
+                               WriteCustomAttributeFixedArrayArgument ((ArrayType) type, argument);
+                               return;
+                       }
+
+                       if (type.etype == ElementType.Object) {
+                               WriteCustomAttributeFieldOrPropType (argument.Type);
+                               WriteCustomAttributeElement (argument.Type, argument);
+                               return;
+                       }
+
+                       WriteCustomAttributeValue (type, argument.Value);
+               }
+
+               void WriteCustomAttributeValue (TypeReference type, object value)
+               {
+                       var etype = type.etype;
+
+                       switch (etype) {
+                       case ElementType.String:
+                               var @string = (string) value;
+                               if (@string == null)
+                                       WriteByte (0xff);
+                               else
+                                       WriteUTF8String (@string);
+                               break;
+                       case ElementType.None:
+                               if (type.IsTypeOf ("System", "Type"))
+                                       WriteTypeReference ((TypeReference) value);
+                               else
+                                       WriteCustomAttributeEnumValue (type, value);
+                               break;
+                       default:
+                               WritePrimitiveValue (value);
+                               break;
+                       }
+               }
+
+               void WritePrimitiveValue (object value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ();
+
+                       switch (Type.GetTypeCode (value.GetType ())) {
+                       case TypeCode.Boolean:
+                               WriteByte ((byte) (((bool) value) ? 1 : 0));
+                               break;
+                       case TypeCode.Byte:
+                               WriteByte ((byte) value);
+                               break;
+                       case TypeCode.SByte:
+                               WriteSByte ((sbyte) value);
+                               break;
+                       case TypeCode.Int16:
+                               WriteInt16 ((short) value);
+                               break;
+                       case TypeCode.UInt16:
+                               WriteUInt16 ((ushort) value);
+                               break;
+                       case TypeCode.Char:
+                               WriteInt16 ((short) (char) value);
+                               break;
+                       case TypeCode.Int32:
+                               WriteInt32 ((int) value);
+                               break;
+                       case TypeCode.UInt32:
+                               WriteUInt32 ((uint) value);
+                               break;
+                       case TypeCode.Single:
+                               WriteSingle ((float) value);
+                               break;
+                       case TypeCode.Int64:
+                               WriteInt64 ((long) value);
+                               break;
+                       case TypeCode.UInt64:
+                               WriteUInt64 ((ulong) value);
+                               break;
+                       case TypeCode.Double:
+                               WriteDouble ((double) value);
+                               break;
+                       default:
+                               throw new NotSupportedException (value.GetType ().FullName);
+                       }
+               }
+
+               void WriteCustomAttributeEnumValue (TypeReference enum_type, object value)
+               {
+                       var type = enum_type.CheckedResolve ();
+                       if (!type.IsEnum)
+                               throw new ArgumentException ();
+
+                       WriteCustomAttributeValue (type.GetEnumUnderlyingType (), value);
+               }
+
+               void WriteCustomAttributeFieldOrPropType (TypeReference type)
+               {
+                       if (type.IsArray) {
+                               var array = (ArrayType) type;
+                               WriteElementType (ElementType.SzArray);
+                               WriteCustomAttributeFieldOrPropType (array.ElementType);
+                               return;
+                       }
+
+                       var etype = type.etype;
+
+                       switch (etype) {
+                       case ElementType.Object:
+                               WriteElementType (ElementType.Boxed);
+                               return;
+                       case ElementType.None:
+                               if (type.IsTypeOf ("System", "Type"))
+                                       WriteElementType (ElementType.Type);
+                               else {
+                                       WriteElementType (ElementType.Enum);
+                                       WriteTypeReference (type);
+                               }
+                               return;
+                       default:
+                               WriteElementType (etype);
+                               return;
+                       }
+               }
+
+               public void WriteCustomAttributeNamedArguments (CustomAttribute attribute)
+               {
+                       var count = GetNamedArgumentCount (attribute);
+
+                       WriteUInt16 ((ushort) count);
+
+                       if (count == 0)
+                               return;
+
+                       WriteICustomAttributeNamedArguments (attribute);
+               }
+
+               static int GetNamedArgumentCount (ICustomAttribute attribute)
+               {
+                       int count = 0;
+
+                       if (attribute.HasFields)
+                               count += attribute.Fields.Count;
+
+                       if (attribute.HasProperties)
+                               count += attribute.Properties.Count;
+
+                       return count;
+               }
+
+               void WriteICustomAttributeNamedArguments (ICustomAttribute attribute)
+               {
+                       if (attribute.HasFields)
+                               WriteCustomAttributeNamedArguments (0x53, attribute.Fields);
+
+                       if (attribute.HasProperties)
+                               WriteCustomAttributeNamedArguments (0x54, attribute.Properties);
+               }
+
+               void WriteCustomAttributeNamedArguments (byte kind, Collection<CustomAttributeNamedArgument> named_arguments)
+               {
+                       for (int i = 0; i < named_arguments.Count; i++)
+                               WriteCustomAttributeNamedArgument (kind, named_arguments [i]);
+               }
+
+               void WriteCustomAttributeNamedArgument (byte kind, CustomAttributeNamedArgument named_argument)
+               {
+                       var argument = named_argument.Argument;
+
+                       WriteByte (kind);
+                       WriteCustomAttributeFieldOrPropType (argument.Type);
+                       WriteUTF8String (named_argument.Name);
+                       WriteCustomAttributeFixedArgument (argument.Type, argument);
+               }
+
+               public void WriteSecurityAttribute (SecurityAttribute attribute)
+               {
+                       WriteTypeReference (attribute.AttributeType);
+
+                       var count = GetNamedArgumentCount (attribute);
+
+                       if (count == 0) {
+                               WriteCompressedUInt32 (0); // length
+                               WriteCompressedUInt32 (0); // count
+                               return;
+                       }
+
+            var buffer = new SignatureWriter (metadata);
+                       buffer.WriteCompressedUInt32 ((uint) count);
+                       buffer.WriteICustomAttributeNamedArguments (attribute);
+
+                       WriteCompressedUInt32 ((uint) buffer.length);
+                       WriteBytes (buffer);
+               }
+
+               void WriteTypeReference (TypeReference type)
+               {
+                       WriteUTF8String (TypeParser.ToParseable (type));
+               }
+
+               public void WriteMarshalInfo (MarshalInfo marshal_info)
+               {
+                       WriteNativeType (marshal_info.native);
+
+                       switch (marshal_info.native) {
+                       case NativeType.Array: {
+                               var array = (ArrayMarshalInfo) marshal_info;
+                               if (array.element_type != NativeType.None)
+                                       WriteNativeType (array.element_type);
+                               if (array.size_parameter_index > -1)
+                                       WriteCompressedUInt32 ((uint) array.size_parameter_index);
+                               if (array.size > -1)
+                                       WriteCompressedUInt32 ((uint) array.size);
+                               if (array.size_parameter_multiplier > -1)
+                                       WriteCompressedUInt32 ((uint) array.size_parameter_multiplier);
+                               return;
+                       }
+                       case NativeType.SafeArray: {
+                               var array = (SafeArrayMarshalInfo) marshal_info;
+                               if (array.element_type != VariantType.None)
+                                       WriteVariantType (array.element_type);
+                               return;
+                       }
+                       case NativeType.FixedArray: {
+                               var array = (FixedArrayMarshalInfo) marshal_info;
+                               if (array.size > -1)
+                                       WriteCompressedUInt32 ((uint) array.size);
+                               if (array.element_type != NativeType.None)
+                                       WriteNativeType (array.element_type);
+                               return;
+                       }
+                       case NativeType.FixedSysString:
+                               var sys_string = (FixedSysStringMarshalInfo) marshal_info;
+                               if (sys_string.size > -1)
+                                       WriteCompressedUInt32 ((uint) sys_string.size);
+                               return;
+                       case NativeType.CustomMarshaler:
+                               var marshaler = (CustomMarshalInfo) marshal_info;
+                               WriteUTF8String (marshaler.guid != Guid.Empty ? marshaler.guid.ToString () : string.Empty);
+                               WriteUTF8String (marshaler.unmanaged_type);
+                               WriteTypeReference (marshaler.managed_type);
+                               WriteUTF8String (marshaler.cookie);
+                               return;
+                       }
+               }
+
+               void WriteNativeType (NativeType native)
+               {
+                       WriteByte ((byte) native);
+               }
+
+               void WriteVariantType (VariantType variant)
+               {
+                       WriteByte ((byte) variant);
+               }
+       }
+
+#endif
+
+}
index 99b518201ea269192a9aa25a2cb61bc89670ce11..1b1613410572b2747d34b7b0e6ea95489f1066a8 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System;
-       using System.Collections;
-       using System.IO;
-       using SR = System.Reflection;
-       using System.Text;
+       public delegate AssemblyDefinition AssemblyResolveEventHandler (object sender, AssemblyNameReference reference);
+
+       public sealed class AssemblyResolveEventArgs : EventArgs {
+
+               readonly AssemblyNameReference reference;
+
+               public AssemblyNameReference AssemblyReference {
+                       get { return reference; }
+               }
+
+               public AssemblyResolveEventArgs (AssemblyNameReference reference)
+               {
+                       this.reference = reference;
+               }
+       }
 
        public abstract class BaseAssemblyResolver : IAssemblyResolver {
 
-               ArrayList m_directories;
-               string[] m_monoGacPaths;
+               static readonly bool on_mono = Type.GetType ("Mono.Runtime") != null;
+
+               readonly Collection<string> directories;
+
+#if !SILVERLIGHT && !CF
+               Collection<string> gac_paths;
+#endif
 
                public void AddSearchDirectory (string directory)
                {
-                       m_directories.Add (directory);
+                       directories.Add (directory);
                }
 
                public void RemoveSearchDirectory (string directory)
                {
-                       m_directories.Remove (directory);
+                       directories.Remove (directory);
                }
 
                public string [] GetSearchDirectories ()
                {
-                       return (string []) m_directories.ToArray (typeof (string));
+                       var directories = new string [this.directories.size];
+                       Array.Copy (this.directories.items, directories, directories.Length);
+                       return directories;
                }
 
                public virtual AssemblyDefinition Resolve (string fullName)
@@ -59,29 +83,33 @@ namespace Mono.Cecil {
                        return Resolve (AssemblyNameReference.Parse (fullName));
                }
 
-               public BaseAssemblyResolver ()
+               public event AssemblyResolveEventHandler ResolveFailure;
+
+               protected BaseAssemblyResolver ()
                {
-                       m_directories = new ArrayList ();
-                       m_directories.Add (".");
-                       m_directories.Add ("bin");
+                       directories = new Collection<string> (2) { ".", "bin" };
                }
 
-               public virtual AssemblyDefinition Resolve (AssemblyNameReference name)
+               AssemblyDefinition GetAssembly (string file)
                {
-                       AssemblyDefinition assembly;
-                       string frameworkdir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+                       return ModuleDefinition.ReadModule (file, new ReaderParameters { AssemblyResolver = this}).Assembly;
+               }
 
-                       assembly = SearchDirectory (name, m_directories);
+               public virtual AssemblyDefinition Resolve (AssemblyNameReference name)
+               {
+                       var assembly = SearchDirectory (name, directories);
                        if (assembly != null)
                                return assembly;
 
+#if !SILVERLIGHT && !CF
+                       var framework_dir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+
                        if (IsZero (name.Version)) {
-                               assembly = SearchDirectory (name, new string [] {frameworkdir});
+                               assembly = SearchDirectory (name, new [] { framework_dir });
                                if (assembly != null)
                                        return assembly;
                        }
 
-#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
                        if (name.Name == "mscorlib") {
                                assembly = GetCorlib (name);
                                if (assembly != null)
@@ -91,24 +119,29 @@ namespace Mono.Cecil {
                        assembly = GetAssemblyInGac (name);
                        if (assembly != null)
                                return assembly;
-#endif
 
-                       assembly = SearchDirectory (name, new string [] {frameworkdir});
+                       assembly = SearchDirectory (name, new [] { framework_dir });
                        if (assembly != null)
                                return assembly;
+#endif
+
+                       if (ResolveFailure != null) {
+                               assembly = ResolveFailure (this, name);
+                               if (assembly != null)
+                                       return assembly;
+                       }
 
                        throw new FileNotFoundException ("Could not resolve: " + name);
                }
 
-               static readonly string [] _extentions = new string [] { ".dll", ".exe" };
-
-               static AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable directories)
+               AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable<string> directories)
                {
-                       foreach (string dir in directories) {
-                               foreach (string ext in _extentions) {
-                                       string file = Path.Combine (dir, name.Name + ext);
+                       var extensions = new [] { ".exe", ".dll" };
+                       foreach (var directory in directories) {
+                               foreach (var extension in extensions) {
+                                       string file = Path.Combine (directory, name.Name + extension);
                                        if (File.Exists (file))
-                                               return AssemblyFactory.GetAssembly (file);
+                                               return GetAssembly (file);
                                }
                        }
 
@@ -120,88 +153,103 @@ namespace Mono.Cecil {
                        return version.Major == 0 && version.Minor == 0 && version.Build == 0 && version.Revision == 0;
                }
 
-#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
-               static AssemblyDefinition GetCorlib (AssemblyNameReference reference)
+#if !SILVERLIGHT && !CF
+               AssemblyDefinition GetCorlib (AssemblyNameReference reference)
                {
-                       SR.AssemblyName corlib = typeof (object).Assembly.GetName ();
-                       if (corlib.Version == reference.Version || IsZero (reference.Version))
-                               return AssemblyFactory.GetAssembly (typeof (object).Module.FullyQualifiedName);
+                       var version = reference.Version;
+                       var corlib = typeof (object).Assembly.GetName ();
+
+                       if (corlib.Version == version || IsZero (version))
+                               return GetAssembly (typeof (object).Module.FullyQualifiedName);
 
-                       string path = Directory.GetParent (
+                       var path = Directory.GetParent (
                                Directory.GetParent (
                                        typeof (object).Module.FullyQualifiedName).FullName
                                ).FullName;
 
-                       string runtime_path = null;
-                       if (OnMono ()) {
-                               if (reference.Version.Major == 1)
-                                       runtime_path = "1.0";
-                               else if (reference.Version.Major == 2) {
-                                       if (reference.Version.Minor == 1)
-                                               runtime_path = "2.1";
+                       if (on_mono) {
+                               if (version.Major == 1)
+                                       path = Path.Combine (path, "1.0");
+                               else if (version.Major == 2) {
+                                       if (version.MajorRevision == 5)
+                                               path = Path.Combine (path, "2.1");
                                        else
-                                               runtime_path = "2.0";
-                               } else if (reference.Version.Major == 4)
-                                       runtime_path = "4.0";
+                                               path = Path.Combine (path, "2.0");
+                               } else if (version.Major == 4)
+                                       path = Path.Combine (path, "4.0");
+                               else
+                                       throw new NotSupportedException ("Version not supported: " + version);
                        } else {
-                               switch (reference.Version.ToString ()) {
-                               case "1.0.3300.0":
-                                       runtime_path = "v1.0.3705";
-                                       break;
-                               case "1.0.5000.0":
-                                       runtime_path = "v1.1.4322";
+                               switch (version.Major) {
+                               case 1:
+                                       if (version.MajorRevision == 3300)
+                                               path = Path.Combine (path, "v1.0.3705");
+                                       else
+                                               path = Path.Combine (path, "v1.0.5000.0");
                                        break;
-                               case "2.0.0.0":
-                                       runtime_path = "v2.0.50727";
+                               case 2:
+                                       path = Path.Combine (path, "v2.0.50727");
                                        break;
-                               case "4.0.0.0":
-                                       runtime_path = "v4.0.30319";
+                               case 4:
+                                       path = Path.Combine (path, "v4.0.30319");
                                        break;
+                               default:
+                                       throw new NotSupportedException ("Version not supported: " + version);
                                }
                        }
 
-                       if (runtime_path == null)
-                               throw new NotSupportedException ("Version not supported: " + reference.Version);
-
-                       path = Path.Combine (path, runtime_path);
-
-                       if (File.Exists (Path.Combine (path, "mscorlib.dll")))
-                               return AssemblyFactory.GetAssembly (Path.Combine (path, "mscorlib.dll"));
+                       var file = Path.Combine (path, "mscorlib.dll");
+                       if (File.Exists (file))
+                               return GetAssembly (file);
 
                        return null;
                }
 
-               public static bool OnMono ()
+               static Collection<string> GetGacPaths ()
                {
-                       return typeof (object).Assembly.GetType ("System.MonoType", false) != null;
+                       if (on_mono)
+                               return GetDefaultMonoGacPaths ();
+
+                       var paths = new Collection<string> (2);
+                       var windir = Environment.GetEnvironmentVariable ("WINDIR");
+                       if (windir == null)
+                               return paths;
+
+                       paths.Add (Path.Combine (windir, "assembly"));
+                       paths.Add (Path.Combine (windir, Path.Combine ("Microsoft.NET", "assembly")));
+                       return paths;
                }
 
-               string[] MonoGacPaths {
-                       get {
-                               if (m_monoGacPaths == null)
-                                       m_monoGacPaths = GetDefaultMonoGacPaths ();
-                               return m_monoGacPaths;
+               static Collection<string> GetDefaultMonoGacPaths ()
+               {
+                       var paths = new Collection<string> (1);
+                       var gac = GetCurrentMonoGac ();
+                       if (gac != null)
+                               paths.Add (gac);
+
+                       var gac_paths_env = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
+                       if (string.IsNullOrEmpty (gac_paths_env))
+                               return paths;
+
+                       var prefixes = gac_paths_env.Split (Path.PathSeparator);
+                       foreach (var prefix in prefixes) {
+                               if (string.IsNullOrEmpty (prefix))
+                                       continue;
+
+                               var gac_path = Path.Combine (Path.Combine (Path.Combine (prefix, "lib"), "mono"), "gac");
+                               if (Directory.Exists (gac_path) && !paths.Contains (gac))
+                                       paths.Add (gac_path);
                        }
+
+                       return paths;
                }
 
-               static string[] GetDefaultMonoGacPaths ()
+               static string GetCurrentMonoGac ()
                {
-                       ArrayList paths = new ArrayList ();
-                       string s = GetCurrentGacPath ();
-                       if (s != null)
-                               paths.Add (s);
-                       string gacPathsEnv = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
-                       if (gacPathsEnv != null && gacPathsEnv.Length > 0) {
-                               string[] gacPrefixes = gacPathsEnv.Split (Path.PathSeparator);
-                               foreach (string gacPrefix in gacPrefixes) {
-                                       if (gacPrefix != null && gacPrefix.Length > 0) {
-                                               string gac = Path.Combine (Path.Combine (Path.Combine (gacPrefix, "lib"), "mono"), "gac");
-                                               if (Directory.Exists (gac) && !paths.Contains (gac))
-                                                       paths.Add (gac);
-                                       }
-                               }
-                       }
-                       return (string[]) paths.ToArray (typeof (String));
+                       return Path.Combine (
+                               Directory.GetParent (
+                                       Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName)).FullName,
+                               "gac");
                }
 
                AssemblyDefinition GetAssemblyInGac (AssemblyNameReference reference)
@@ -209,55 +257,57 @@ namespace Mono.Cecil {
                        if (reference.PublicKeyToken == null || reference.PublicKeyToken.Length == 0)
                                return null;
 
-                       if (OnMono ()) {
-                               foreach (string gacpath in MonoGacPaths) {
-                                       string s = GetAssemblyFile (reference, gacpath);
-                                       if (File.Exists (s))
-                                               return AssemblyFactory.GetAssembly (s);
-                               }
-                       } else {
-                               string currentGac = GetCurrentGacPath ();
-                               if (currentGac == null)
-                                       return null;
-
-                               string [] gacs = new string [] {"GAC_MSIL", "GAC_32", "GAC"};
-                               for (int i = 0; i < gacs.Length; i++) {
-                                       string gac = Path.Combine (Directory.GetParent (currentGac).FullName, gacs [i]);
-                                       string asm = GetAssemblyFile (reference, gac);
-                                       if (Directory.Exists (gac) && File.Exists (asm))
-                                               return AssemblyFactory.GetAssembly (asm);
-                               }
+                       if (gac_paths == null)
+                               gac_paths = GetGacPaths ();
+
+                       if (on_mono)
+                               return GetAssemblyInMonoGac (reference);
+
+                       return GetAssemblyInNetGac (reference);
+               }
+
+               AssemblyDefinition GetAssemblyInMonoGac (AssemblyNameReference reference)
+               {
+                       for (int i = 0; i < gac_paths.Count; i++) {
+                               var gac_path = gac_paths [i];
+                               var file = GetAssemblyFile (reference, string.Empty, gac_path);
+                               if (File.Exists (file))
+                                       return GetAssembly (file);
                        }
 
                        return null;
                }
 
-               static string GetAssemblyFile (AssemblyNameReference reference, string gac)
+               AssemblyDefinition GetAssemblyInNetGac (AssemblyNameReference reference)
                {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (reference.Version);
-                       sb.Append ("__");
-                       for (int i = 0; i < reference.PublicKeyToken.Length; i++)
-                               sb.Append (reference.PublicKeyToken [i].ToString ("x2"));
+                       var gacs = new [] { "GAC_MSIL", "GAC_32", "GAC" };
+                       var prefixes = new [] { string.Empty, "v4.0_" };
+
+                       for (int i = 0; i < 2; i++) {
+                               for (int j = 0; j < gacs.Length; j++) {
+                                       var gac = Path.Combine (gac_paths [i], gacs [j]);
+                                       var file = GetAssemblyFile (reference, prefixes [i], gac);
+                                       if (Directory.Exists (gac) && File.Exists (file))
+                                               return GetAssembly (file);
+                               }
+                       }
 
-                       return Path.Combine (
-                               Path.Combine (
-                                       Path.Combine (gac, reference.Name), sb.ToString ()),
-                                       string.Concat (reference.Name, ".dll"));
+                       return null;
                }
 
-               static string GetCurrentGacPath ()
+               static string GetAssemblyFile (AssemblyNameReference reference, string prefix, string gac)
                {
-                       string file = typeof (Uri).Module.FullyQualifiedName;
-                       if (!File.Exists (file))
-                               return null;
+                       var gac_folder = new StringBuilder ();
+                       gac_folder.Append (prefix);
+                       gac_folder.Append (reference.Version);
+                       gac_folder.Append ("__");
+                       for (int i = 0; i < reference.PublicKeyToken.Length; i++)
+                               gac_folder.Append (reference.PublicKeyToken [i].ToString ("x2"));
 
-                       return Directory.GetParent (
-                               Directory.GetParent (
-                                       Path.GetDirectoryName (
-                                               file)
-                                       ).FullName
-                               ).FullName;
+                       return Path.Combine (
+                               Path.Combine (
+                                       Path.Combine (gac, reference.Name), gac_folder.ToString ()),
+                               reference.Name + ".dll");
                }
 #endif
        }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionReader.cs
deleted file mode 100644 (file)
index ceeec17..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// BaseReflectionReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       internal abstract class BaseReflectionReader : BaseReflectionVisitor, IDetailReader {
-
-               public virtual void ReadSemantic (EventDefinition evt)
-               {
-               }
-
-               public virtual void ReadSemantic (PropertyDefinition prop)
-               {
-               }
-
-               public virtual void ReadMarshalSpec (ParameterDefinition param)
-               {
-               }
-
-               public virtual void ReadMarshalSpec (FieldDefinition field)
-               {
-               }
-
-               public virtual void ReadLayout (TypeDefinition type)
-               {
-               }
-
-               public virtual void ReadLayout (FieldDefinition field)
-               {
-               }
-
-               public virtual void ReadConstant (FieldDefinition field)
-               {
-               }
-
-               public virtual void ReadConstant (PropertyDefinition prop)
-               {
-               }
-
-               public virtual void ReadConstant (ParameterDefinition param)
-               {
-               }
-
-               public virtual void ReadInitialValue (FieldDefinition field)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs
deleted file mode 100644 (file)
index 3d3a514..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// BaseReflectionVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System.Collections;
-
-       public abstract class BaseReflectionVisitor : IReflectionVisitor {
-
-               public virtual void VisitModuleDefinition (ModuleDefinition module)
-               {
-               }
-
-               public virtual void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
-               {
-               }
-
-               public virtual void VisitTypeDefinition (TypeDefinition type)
-               {
-               }
-
-               public virtual void VisitTypeReferenceCollection (TypeReferenceCollection refs)
-               {
-               }
-
-               public virtual void VisitTypeReference (TypeReference type)
-               {
-               }
-
-               public virtual void VisitMemberReferenceCollection (MemberReferenceCollection members)
-               {
-               }
-
-               public virtual void VisitMemberReference (MemberReference member)
-               {
-               }
-
-               public virtual void VisitInterfaceCollection (InterfaceCollection interfaces)
-               {
-               }
-
-               public virtual void VisitInterface (TypeReference interf)
-               {
-               }
-
-               public virtual void VisitExternTypeCollection (ExternTypeCollection externs)
-               {
-               }
-
-               public virtual void VisitExternType (TypeReference externType)
-               {
-               }
-
-               public virtual void VisitOverrideCollection (OverrideCollection meth)
-               {
-               }
-
-               public virtual void VisitOverride (MethodReference ov)
-               {
-               }
-
-               public virtual void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
-               {
-               }
-
-               public virtual void VisitNestedType (TypeDefinition nestedType)
-               {
-               }
-
-               public virtual void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
-               {
-               }
-
-               public virtual void VisitParameterDefinition (ParameterDefinition parameter)
-               {
-               }
-
-               public virtual void VisitMethodDefinitionCollection (MethodDefinitionCollection methods)
-               {
-               }
-
-               public virtual void VisitMethodDefinition (MethodDefinition method)
-               {
-               }
-
-               public virtual void VisitConstructorCollection (ConstructorCollection ctors)
-               {
-               }
-
-               public virtual void VisitConstructor (MethodDefinition ctor)
-               {
-               }
-
-               public virtual void VisitPInvokeInfo (PInvokeInfo pinvk)
-               {
-               }
-
-               public virtual void VisitEventDefinitionCollection (EventDefinitionCollection events)
-               {
-               }
-
-               public virtual void VisitEventDefinition (EventDefinition evt)
-               {
-               }
-
-               public virtual void VisitFieldDefinitionCollection (FieldDefinitionCollection fields)
-               {
-               }
-
-               public virtual void VisitFieldDefinition (FieldDefinition field)
-               {
-               }
-
-               public virtual void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
-               {
-               }
-
-               public virtual void VisitPropertyDefinition (PropertyDefinition property)
-               {
-               }
-
-               public virtual void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
-               {
-               }
-
-               public virtual void VisitSecurityDeclaration (SecurityDeclaration secDecl)
-               {
-               }
-
-               public virtual void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
-               {
-               }
-
-               public virtual void VisitCustomAttribute (CustomAttribute customAttr)
-               {
-               }
-
-               public virtual void VisitGenericParameterCollection (GenericParameterCollection genparams)
-               {
-               }
-
-               public virtual void VisitGenericParameter (GenericParameter genparam)
-               {
-               }
-
-               public virtual void VisitMarshalSpec (MarshalSpec marshalSpec)
-               {
-               }
-
-               public virtual void TerminateModuleDefinition (ModuleDefinition module)
-               {
-               }
-
-               protected void VisitCollection (ICollection coll)
-               {
-                       if (coll.Count == 0)
-                               return;
-
-                       foreach (IReflectionVisitable visitable in coll)
-                               visitable.Accept (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs
deleted file mode 100644 (file)
index 1acec7d..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// BaseStructureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System.Collections;
-
-       public abstract class BaseStructureVisitor : IReflectionStructureVisitor {
-
-               public virtual void VisitAssemblyDefinition (AssemblyDefinition asm)
-               {
-               }
-
-               public virtual void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
-               {
-               }
-
-               public virtual void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
-               {
-               }
-
-               public virtual void VisitAssemblyNameReference (AssemblyNameReference name)
-               {
-               }
-
-               public virtual void VisitResourceCollection (ResourceCollection resources)
-               {
-               }
-
-               public virtual void VisitEmbeddedResource (EmbeddedResource res)
-               {
-               }
-
-               public virtual void VisitLinkedResource (LinkedResource res)
-               {
-               }
-
-               public virtual void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
-               {
-               }
-
-               public virtual void VisitModuleDefinition (ModuleDefinition module)
-               {
-               }
-
-               public virtual void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
-               {
-               }
-
-               public virtual void VisitModuleReference (ModuleReference module)
-               {
-               }
-
-               public virtual void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
-               {
-               }
-
-               public virtual void TerminateAssemblyDefinition (AssemblyDefinition asm)
-               {
-               }
-
-               protected void VisitCollection (ICollection coll)
-               {
-                       if (coll.Count == 0)
-                               return;
-
-                       foreach (IReflectionStructureVisitable visitable in coll)
-                               visitable.Accept (this);
-               }
-       }
-}
index 7849cb8ac22995013c40565e5aa0556da596569e..e4880ec79c85b5837a8d43726df5386610463470 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-       using System.Collections;
-       using System.Text;
-
-       using Mono.Cecil.Metadata;
-
-       public sealed class CallSite : IMethodSignature, IAnnotationProvider, IMetadataTokenProvider {
-
-               MethodReference m_function;
-
-               public bool HasThis {
-                       get { return m_function.HasThis; }
-                       set { m_function.HasThis = value; }
-               }
-
-               public bool ExplicitThis {
-                       get { return m_function.ExplicitThis; }
-                       set { m_function.ExplicitThis = value; }
-               }
-
-               public MethodCallingConvention CallingConvention {
-                       get { return m_function.CallingConvention; }
-                       set { m_function.CallingConvention = value; }
-               }
-
-               public bool HasParameters {
-                       get { return m_function.HasParameters; }
-               }
+using System;
+using System.Text;
 
-               public ParameterDefinitionCollection Parameters {
-                       get { return m_function.Parameters; }
-               }
-
-               public MethodReturnType ReturnType {
-                       get { return m_function.ReturnType; }
-                       set { m_function.ReturnType = value; }
-               }
-
-               public MetadataToken MetadataToken {
-                       get { return m_function.MetadataToken; }
-                       set { m_function.MetadataToken = value; }
-               }
-
-               IDictionary IAnnotationProvider.Annotations {
-                       get { return ((IAnnotationProvider) m_function).Annotations; }
-               }
-
-               public CallSite (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType)
-               {
-                       m_function = new MethodReference (string.Empty, hasThis, explicitThis, callConv);
-                       m_function.ReturnType = retType;
-               }
-
-               public int GetSentinel ()
-               {
-                       return m_function.GetSentinel ();
-               }
-
-               public override string ToString ()
-               {
-                       int sentinel = GetSentinel ();
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (m_function.ReturnType.ReturnType.FullName);
-                       sb.Append ("(");
-                       if (m_function.HasParameters) {
-                               for (int i = 0; i < m_function.Parameters.Count; i++) {
-                                       if (i > 0)
-                                               sb.Append (",");
+namespace Mono.Cecil {
 
-                                       if (i == sentinel)
-                                               sb.Append ("...,");
+       public sealed class CallSite : MethodReference {
 
-                                       sb.Append (m_function.Parameters [i].ParameterType.FullName);
-                               }
+               public override string FullName {
+                       get {
+                               var signature = new StringBuilder ();
+                               signature.Append (ReturnType.FullName);
+                               this.MethodSignatureFullName (signature);
+                               return signature.ToString ();
                        }
-                       sb.Append (")");
-                       return sb.ToString ();
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs
deleted file mode 100644 (file)
index 85fde6e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// FrameworkCompatibility.cs
-//
-// Author:
-//   Rodrigo B. de Oliveira (rodrigobamboo@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if CF_1_0
-namespace System {
-
-       internal class NotImplementedException : System.Exception {
-
-               public NotImplementedException (string message) : base (message)
-               {
-               }
-
-               public NotImplementedException ()
-               {
-               }
-       }
-}
-#endif
-
-#if CF_1_0 || CF_2_0
-namespace System.Security {
-
-       public class SecurityElement    {
-
-               public SecurityElement (string tag)
-               {
-               }
-
-               public string Text
-               {
-                       get { return string.Empty; }
-                       set {}
-               }
-
-               public void AddChild (SecurityElement child)
-               {
-               }
-
-               public void AddAttribute (string name, string value)
-               {
-               }
-       }
-}
-#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs
deleted file mode 100644 (file)
index 32491e6..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// Constants.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public class Constants {
-
-               Constants ()
-               {
-               }
-
-               public const string Corlib = "mscorlib";
-
-               public const string ModuleType = "<Module>";
-               public const string PrivateImplDetails = "<PrivateImplementationDetails>";
-               public const string Deleted = "_Deleted";
-
-               public const string Void = "System.Void";
-               public const string Object = "System.Object";
-               public const string String = "System.String";
-               public const string Boolean = "System.Boolean";
-               public const string Char = "System.Char";
-               public const string Single = "System.Single";
-               public const string Double = "System.Double";
-               public const string SByte = "System.SByte";
-               public const string Byte = "System.Byte";
-               public const string Int16 = "System.Int16";
-               public const string UInt16 = "System.UInt16";
-               public const string Int32 = "System.Int32";
-               public const string UInt32 = "System.UInt32";
-               public const string Int64 = "System.Int64";
-               public const string UInt64 = "System.UInt64";
-               public const string IntPtr = "System.IntPtr";
-               public const string UIntPtr = "System.UIntPtr";
-               public const string TypedReference = "System.TypedReference";
-               public const string Type = "System.Type";
-               public const string ValueType = "System.ValueType";
-               public const string Enum = "System.Enum";
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs
deleted file mode 100644 (file)
index 0c0f293..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// ConstraintCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ConstraintCollection : CollectionBase {
-
-               GenericParameter m_container;
-
-               public TypeReference this [int index] {
-                       get { return List [index] as TypeReference; }
-                       set { List [index] = value; }
-               }
-
-               public GenericParameter Container {
-                       get { return m_container; }
-               }
-
-               public ConstraintCollection (GenericParameter container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (TypeReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (TypeReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, TypeReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (TypeReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is TypeReference))
-                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs
deleted file mode 100644 (file)
index a0ebebc..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// ConstructorCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ConstructorCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public MethodDefinition this [int index] {
-                       get { return List [index] as MethodDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public ConstructorCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (MethodDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (MethodDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (MethodDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (MethodDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, MethodDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (MethodDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       MethodDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is MethodDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
-               }
-
-               internal MethodDefinition GetConstructorInternal (bool isStatic, IList parameters)
-               {
-                       if (parameters == null)
-#if CF_2_0 || CF_1_0
-                               parameters = new Type[0];
-#else
-                               parameters = Type.EmptyTypes;
-#endif
-
-                       foreach (MethodDefinition ctor in this) {
-                               if (ctor.IsStatic != isStatic || ctor.Parameters.Count != parameters.Count)
-                                       continue;
-
-                               bool match = true;
-                               for (int i = 0; i < parameters.Count; i++) {
-                                       string pname;
-                                       object param = parameters [i];
-                                       if (param is Type)
-                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
-                                       else if (param is TypeReference)
-                                               pname = (param as TypeReference).FullName;
-                                       else if (param is ParameterDefinition)
-                                               pname = (param as ParameterDefinition).ParameterType.FullName;
-                                       else
-                                               throw new NotSupportedException ();
-
-                                       if (ctor.Parameters [i].ParameterType.FullName != pname) {
-                                               match = false;
-                                               break;
-                                       }
-                               }
-
-                               if (match)
-                                       return ctor;
-                       }
-
-                       return null;
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, Type [] parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, TypeReference [] parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-
-               public MethodDefinition GetConstructor (bool isStatic, ParameterDefinitionCollection parameters)
-               {
-                       return GetConstructorInternal (isStatic, parameters);
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitConstructorCollection (this);
-               }
-       }
-}
index e72957cb7243ba8ec3073a88ae3c600524928e22..af47d8b01712bf9b1fd204329ebb52cdcd7e4304 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System.Collections;
+       public struct CustomAttributeArgument {
+
+               readonly TypeReference type;
+               readonly object value;
+
+               public TypeReference Type {
+                       get { return type; }
+               }
+
+               public object Value {
+                       get { return value; }
+               }
+
+               public CustomAttributeArgument (TypeReference type, object value)
+               {
+                       Mixin.CheckType (type);
+                       this.type = type;
+                       this.value = value;
+               }
+       }
+
+       public struct CustomAttributeNamedArgument {
+
+               readonly string name;
+               readonly CustomAttributeArgument argument;
+
+               public string Name {
+                       get { return name; }
+               }
+
+               public CustomAttributeArgument Argument {
+                       get { return argument; }
+               }
+
+               public CustomAttributeNamedArgument (string name, CustomAttributeArgument argument)
+               {
+                       Mixin.CheckName (name);
+                       this.name = name;
+                       this.argument = argument;
+               }
+       }
+
+       public interface ICustomAttribute {
+
+               TypeReference AttributeType { get; }
 
-       public sealed class CustomAttribute : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+               bool HasFields { get; }
+               bool HasProperties { get; }
+               Collection<CustomAttributeNamedArgument> Fields { get; }
+               Collection<CustomAttributeNamedArgument> Properties { get; }
+       }
 
-               MethodReference m_ctor;
-               IList m_parameters;
-               IDictionary m_fields;
-               IDictionary m_properties;
-               IDictionary m_fieldTypes;
-               IDictionary m_propTypes;
-               IDictionary m_annotations;
+       public sealed class CustomAttribute : ICustomAttribute {
 
-               bool m_resolved;
-               byte [] m_blob;
+               readonly internal uint signature;
+               internal bool resolved;
+               MethodReference constructor;
+               byte [] blob;
+               internal Collection<CustomAttributeArgument> arguments;
+               internal Collection<CustomAttributeNamedArgument> fields;
+               internal Collection<CustomAttributeNamedArgument> properties;
 
                public MethodReference Constructor {
-                       get { return m_ctor; }
-                       set { m_ctor = value; }
+                       get { return constructor; }
+                       set { constructor = value; }
                }
 
-               public IList ConstructorParameters {
-                       get {
-                               if (m_parameters == null)
-                                       m_parameters = new ArrayList ();
-                               return m_parameters;
-                       }
+               public TypeReference AttributeType {
+                       get { return constructor.DeclaringType; }
                }
 
-               public IDictionary Fields {
+               public bool HasConstructorArguments {
                        get {
-                               if (m_fields == null)
-                                       m_fields = new Hashtable ();
+                               Resolve ();
 
-                               return m_fields;
+                               return !arguments.IsNullOrEmpty ();
                        }
                }
 
-               public IDictionary Properties {
+               public Collection<CustomAttributeArgument> ConstructorArguments {
                        get {
-                               if (m_properties == null)
-                                       m_properties = new Hashtable ();
+                               Resolve ();
 
-                               return m_properties;
+                               return arguments ?? (arguments = new Collection<CustomAttributeArgument> ());
                        }
                }
 
-               internal IDictionary FieldTypes {
+               public bool HasFields {
                        get {
-                               if (m_fieldTypes == null)
-                                       m_fieldTypes = new Hashtable ();
+                               Resolve ();
 
-                               return m_fieldTypes;
+                               return !fields.IsNullOrEmpty ();
                        }
                }
 
-               internal IDictionary PropertyTypes {
+               public Collection<CustomAttributeNamedArgument> Fields {
                        get {
-                               if (m_propTypes == null)
-                                       m_propTypes = new Hashtable ();
+                               Resolve ();
 
-                               return m_propTypes;
+                               return fields ?? (fields = new Collection<CustomAttributeNamedArgument> ());
                        }
                }
 
-               public bool Resolved {
-                       get { return m_resolved; }
-                       set { m_resolved = value; }
-               }
+               public bool HasProperties {
+                       get {
+                               Resolve ();
 
-               public byte [] Blob {
-                       get { return m_blob; }
-                       set { m_blob = value; }
+                               return !properties.IsNullOrEmpty ();
+                       }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
+               public Collection<CustomAttributeNamedArgument> Properties {
                        get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
+                               Resolve ();
+
+                               return properties ?? (properties = new Collection<CustomAttributeNamedArgument> ());
                        }
                }
 
-               public CustomAttribute (MethodReference ctor)
-               {
-                       m_ctor = ctor;
-                       m_resolved = true;
+               internal bool HasImage {
+                       get { return constructor != null && constructor.HasImage; }
                }
 
-               public CustomAttribute (MethodReference ctor, byte [] blob)
-               {
-                       m_ctor = ctor;
-                       m_blob = blob;
+               internal ModuleDefinition Module {
+                       get { return constructor.Module; }
                }
 
-               public TypeReference GetFieldType (string fieldName)
+               internal CustomAttribute (uint signature, MethodReference constructor)
                {
-                       return (TypeReference) FieldTypes [fieldName];
+                       this.signature = signature;
+                       this.constructor = constructor;
+                       this.resolved = false;
                }
 
-               public TypeReference GetPropertyType (string propertyName)
+               public CustomAttribute (MethodReference constructor)
                {
-                       return (TypeReference) PropertyTypes [propertyName];
+                       this.constructor = constructor;
+                       this.resolved = true;
                }
 
-               public void SetFieldType (string fieldName, TypeReference type)
+               public CustomAttribute (MethodReference constructor, byte [] blob)
                {
-                       FieldTypes [fieldName] = type;
+                       this.constructor = constructor;
+                       this.resolved = false;
+                       this.blob = blob;
                }
 
-               public void SetPropertyType (string propertyName, TypeReference type)
+               public byte [] GetBlob ()
                {
-                       PropertyTypes [propertyName] = type;
-               }
+                       if (blob != null)
+                               return blob;
 
-               public CustomAttribute Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance));
-               }
+                       if (!HasImage || signature == 0)
+                               throw new NotSupportedException ();
 
-               static void Clone (IDictionary original, IDictionary target)
-               {
-                       target.Clear ();
-                       foreach (DictionaryEntry entry in original)
-                               target.Add (entry.Key, entry.Value);
-               }
-
-               internal static CustomAttribute Clone (CustomAttribute custattr, ImportContext context)
-               {
-                       CustomAttribute ca = new CustomAttribute (context.Import (custattr.Constructor));
-                       custattr.CopyTo (ca);
-                       return ca;
+                       return blob = Module.Read (this, (attribute, reader) => reader.ReadCustomAttributeBlob (attribute.signature));
                }
 
-               void CopyTo (CustomAttribute target)
+               void Resolve ()
                {
-                       target.Resolved = Resolved;
-                       if (!Resolved) {
-                               target.Blob = Blob;
+                       if (resolved || !HasImage)
                                return;
-                       }
 
-                       foreach (object o in ConstructorParameters)
-                               target.ConstructorParameters.Add (o);
-                       Clone (Fields, target.Fields);
-                       Clone (FieldTypes, target.FieldTypes);
-                       Clone (Properties, target.Properties);
-                       Clone (PropertyTypes, target.PropertyTypes);
-               }
+                       Module.Read (this, (attribute, reader) => {
+                               reader.ReadCustomAttributeSignature (attribute);
+                               return this;
+                       });
 
-               public bool Resolve ()
-               {
-                       if (Resolved)
-                               return true;
-
-                       ReflectionReader r = m_ctor.DeclaringType.Module.Controller.Reader;
-                       CustomAttribute newCa = r.GetCustomAttribute (m_ctor, Blob, true);
-                       if (!newCa.Resolved)
-                               return false;
-
-                       newCa.CopyTo (this);
-                       return true;
+                       resolved = true;
                }
+       }
+
+       static partial class Mixin {
 
-               public void Accept (IReflectionVisitor visitor)
+               public static void CheckName (string name)
                {
-                       visitor.VisitCustomAttribute (this);
+                       if (name == null)
+                               throw new ArgumentNullException ("name");
+                       if (name.Length == 0)
+                               throw new ArgumentException ("Empty name");
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs
deleted file mode 100644 (file)
index 023b35a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// CustomAttributeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class CustomAttributeCollection : CollectionBase, IReflectionVisitable {
-
-               ICustomAttributeProvider m_container;
-
-               public CustomAttribute this [int index] {
-                       get { return List [index] as CustomAttribute; }
-                       set { List [index] = value; }
-               }
-
-               public ICustomAttributeProvider Container {
-                       get { return m_container; }
-               }
-
-               public CustomAttributeCollection (ICustomAttributeProvider container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (CustomAttribute value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (CustomAttribute value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (CustomAttribute value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, CustomAttribute value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (CustomAttribute value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is CustomAttribute))
-                               throw new ArgumentException ("Must be of type " + typeof (CustomAttribute).FullName);
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitCustomAttributeCollection (this);
-               }
-       }
-}
index 95b878966ca140330a33c482adb1fb6f751dc34d..cac7974f9e7dc32258dacb1febcfd0857522853f 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System.Collections;
+       public static class GlobalAssemblyResolver {
+
+               public static readonly IAssemblyResolver Instance = new DefaultAssemblyResolver ();
+       }
 
        public class DefaultAssemblyResolver : BaseAssemblyResolver {
 
-               IDictionary m_cache;
+               readonly IDictionary<string, AssemblyDefinition> cache;
 
                public DefaultAssemblyResolver ()
                {
-                       m_cache = new Hashtable ();
+                       cache = new Dictionary<string, AssemblyDefinition> ();
                }
 
                public override AssemblyDefinition Resolve (AssemblyNameReference name)
                {
-                       AssemblyDefinition asm = (AssemblyDefinition) m_cache [name.FullName];
-                       if (asm == null) {
-                               asm = base.Resolve (name);
-                               m_cache [name.FullName] = asm;
-                       }
+                       if (name == null)
+                               throw new ArgumentNullException ("name");
 
-                       return asm;
+                       AssemblyDefinition assembly;
+                       if (cache.TryGetValue (name.FullName, out assembly))
+                               return assembly;
+
+                       assembly = base.Resolve (name);
+                       cache [name.FullName] = assembly;
+
+                       return assembly;
                }
 
                protected void RegisterAssembly (AssemblyDefinition assembly)
                {
-                       string key = assembly.Name.FullName;
-                       if (m_cache.Contains (key))
+                       if (assembly == null)
+                               throw new ArgumentNullException ("assembly");
+
+                       var name = assembly.Name.FullName;
+                       if (cache.ContainsKey (name))
                                return;
 
-                       m_cache [key] = assembly;
+                       cache [name] = assembly;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs
deleted file mode 100644 (file)
index a4c2957..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-// DefaultReferenceImporter.cs
-//
-// Author:
-//   Jb Evain (jbevain@novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-
-       public class DefaultImporter : IImporter {
-
-               ModuleDefinition m_module;
-
-               public ModuleDefinition Module {
-                       get { return m_module; }
-               }
-
-               public DefaultImporter (ModuleDefinition module)
-               {
-                       m_module = module;
-               }
-
-               public AssemblyNameReference ImportAssembly (AssemblyNameReference asm)
-               {
-                       AssemblyNameReference asmRef = GetAssemblyNameReference (asm);
-                       if (asmRef != null)
-                               return asmRef;
-
-                       asmRef = new AssemblyNameReference (
-                               asm.Name, asm.Culture, asm.Version);
-                       asmRef.PublicKeyToken = asm.PublicKeyToken;
-                       asmRef.HashAlgorithm = asm.HashAlgorithm;
-                       m_module.AssemblyReferences.Add (asmRef);
-                       return asmRef;
-               }
-
-               AssemblyNameReference GetAssemblyNameReference (AssemblyNameReference asm)
-               {
-                       foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
-                               if (reference.FullName == asm.FullName)
-                                       return reference;
-
-                       return null;
-               }
-
-               TypeSpecification GetTypeSpec (TypeSpecification original, ImportContext context)
-               {
-                       TypeSpecification typeSpec;
-
-                       TypeReference elementType = ImportTypeReference (original.ElementType, context);
-                       if (original is PointerType) {
-                               typeSpec = new PointerType (elementType);
-                       } else if (original is ArrayType) { // deal with complex arrays
-                               typeSpec = new ArrayType (elementType);
-                       } else if (original is ReferenceType) {
-                               typeSpec = new ReferenceType (elementType);
-                       } else if (original is GenericInstanceType) {
-                               GenericInstanceType git = original as GenericInstanceType;
-                               GenericInstanceType genElemType = new GenericInstanceType (elementType);
-
-                               context.GenericContext.CheckProvider (genElemType.GetOriginalType (), git.GenericArguments.Count);
-                               foreach (TypeReference arg in git.GenericArguments)
-                                       genElemType.GenericArguments.Add (ImportTypeReference (arg, context));
-
-                               typeSpec = genElemType;
-                       } else if (original is ModifierOptional) {
-                               TypeReference mt = (original as ModifierOptional).ModifierType;
-                               typeSpec = new ModifierOptional (elementType, ImportTypeReference (mt, context));
-                       } else if (original is ModifierRequired) {
-                               TypeReference mt = (original as ModifierRequired).ModifierType;
-                               typeSpec = new ModifierRequired (elementType, ImportTypeReference (mt, context));
-                       } else if (original is SentinelType) {
-                               typeSpec = new SentinelType (elementType);
-                       } else if (original is FunctionPointerType) {
-                               FunctionPointerType ori = original as FunctionPointerType;
-
-                               FunctionPointerType fnptr = new FunctionPointerType (
-                                       ori.HasThis,
-                                       ori.ExplicitThis,
-                                       ori.CallingConvention,
-                                       new MethodReturnType (ImportTypeReference (ori.ReturnType.ReturnType, context)));
-
-                               foreach (ParameterDefinition parameter in ori.Parameters)
-                                       fnptr.Parameters.Add (new ParameterDefinition (ImportTypeReference (parameter.ParameterType, context)));
-
-                               typeSpec = fnptr;
-                       } else
-                               throw new ReflectionException ("Unknown element type: {0}", original.GetType ().Name);
-
-                       return typeSpec;
-               }
-
-               static GenericParameter GetGenericParameter (GenericParameter gp, ImportContext context)
-               {
-                       GenericParameter p;
-                       if (gp.Owner is TypeReference)
-                               p = context.GenericContext.Type.GenericParameters [gp.Position];
-                       else if (gp.Owner is MethodReference)
-                               p = context.GenericContext.Method.GenericParameters [gp.Position];
-                       else
-                               throw new NotSupportedException ();
-
-                       return p;
-               }
-
-               TypeReference AdjustReference (TypeReference type, TypeReference reference)
-               {
-                       if (type.IsValueType && !reference.IsValueType)
-                               reference.IsValueType = true;
-
-                       if (type.HasGenericParameters) {
-                               for (int i = reference.GenericParameters.Count; i < type.GenericParameters.Count; i++)
-                                       reference.GenericParameters.Add (new GenericParameter (i, reference));
-                       }
-
-                       return reference;
-               }
-
-               public virtual TypeReference ImportTypeReference (TypeReference t, ImportContext context)
-               {
-                       if (t.Module == m_module)
-                               return t;
-
-                       if (t is TypeSpecification)
-                               return GetTypeSpec (t as TypeSpecification, context);
-
-                       if (t is GenericParameter)
-                               return GetGenericParameter (t as GenericParameter, context);
-
-                       TypeReference type = m_module.TypeReferences [t.FullName];
-                       if (type != null)
-                               return AdjustReference (t, type);
-
-                       AssemblyNameReference asm;
-                       if (t.Scope is AssemblyNameReference)
-                               asm = ImportAssembly ((AssemblyNameReference) t.Scope);
-                       else if (t.Scope is ModuleDefinition)
-                               asm = ImportAssembly (((ModuleDefinition) t.Scope).Assembly.Name);
-                       else
-                               throw new NotImplementedException ();
-
-                       if (t.DeclaringType != null) {
-                               type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
-                               type.DeclaringType = ImportTypeReference (t.DeclaringType, context);
-                       } else
-                               type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
-
-                       TypeReference contextType = context.GenericContext.Type;
-
-                       context.GenericContext.Type = type;
-
-                       GenericParameter.CloneInto (t, type, context);
-
-                       context.GenericContext.Type = contextType;
-
-                       m_module.TypeReferences.Add (type);
-                       return type;
-               }
-
-               public virtual FieldReference ImportFieldReference (FieldReference fr, ImportContext context)
-               {
-                       if (fr.DeclaringType.Module == m_module)
-                               return fr;
-
-                       FieldReference field = (FieldReference) GetMemberReference (fr);
-                       if (field != null)
-                               return field;
-
-                       field = new FieldReference (
-                               fr.Name,
-                               ImportTypeReference (fr.DeclaringType, context),
-                               ImportTypeReference (fr.FieldType, context));
-
-                       m_module.MemberReferences.Add (field);
-                       return field;
-               }
-
-               MethodReference GetMethodSpec (MethodReference meth, ImportContext context)
-               {
-                       if (!(meth is GenericInstanceMethod))
-                               return null;
-
-                       GenericInstanceMethod gim = meth as GenericInstanceMethod;
-                       GenericInstanceMethod ngim = new GenericInstanceMethod (
-                               ImportMethodReference (gim.ElementMethod, context));
-
-                       context.GenericContext.CheckProvider (ngim.GetOriginalMethod (), gim.GenericArguments.Count);
-                       foreach (TypeReference arg in gim.GenericArguments)
-                               ngim.GenericArguments.Add (ImportTypeReference (arg, context));
-
-                       return ngim;
-               }
-
-               public virtual MethodReference ImportMethodReference (MethodReference mr, ImportContext context)
-               {
-                       if (mr.DeclaringType.Module == m_module)
-                               return mr;
-
-                       if (mr is MethodSpecification)
-                               return GetMethodSpec (mr, context);
-
-                       MethodReference meth = (MethodReference) GetMemberReference (mr);
-                       if (meth != null)
-                               return meth;
-
-                       meth = new MethodReference (
-                               mr.Name,
-                               mr.HasThis,
-                               mr.ExplicitThis,
-                               mr.CallingConvention);
-                       meth.DeclaringType = ImportTypeReference (mr.DeclaringType, context);
-
-                       TypeReference contextType = context.GenericContext.Type;
-                       MethodReference contextMethod = context.GenericContext.Method;
-
-                       context.GenericContext.Method = meth;
-                       context.GenericContext.Type = meth.DeclaringType.GetOriginalType();
-
-                       GenericParameter.CloneInto (mr, meth, context);
-
-                       meth.ReturnType.ReturnType = ImportTypeReference (mr.ReturnType.ReturnType, context);
-
-                       foreach (ParameterDefinition param in mr.Parameters)
-                               meth.Parameters.Add (new ParameterDefinition (
-                                       ImportTypeReference (param.ParameterType, context)));
-
-                       context.GenericContext.Type = contextType;
-                       context.GenericContext.Method = contextMethod;
-
-                       m_module.MemberReferences.Add (meth);
-                       return meth;
-               }
-
-               MemberReference GetMemberReference (MemberReference member)
-               {
-                       foreach (MemberReference reference in m_module.MemberReferences)
-                               if (reference.ToString () == member.ToString ())
-                                       return reference;
-
-                       return null;
-               }
-       }
-}
index 7bd67beb800dc4c2fe6f305d32e93255f6786e85..bb9f1f957852bd2bebd8aabc52f3c7b827872c30 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.IO;
+
 namespace Mono.Cecil {
 
        public sealed class EmbeddedResource : Resource {
 
-               byte [] m_data;
+               readonly MetadataReader reader;
+
+               uint? offset;
+               byte [] data;
+               Stream stream;
 
-               public byte [] Data {
-                       get { return m_data; }
-                       set { m_data = value; }
+               public override ResourceType ResourceType {
+                       get { return ResourceType.Embedded; }
+               }
+
+               public EmbeddedResource (string name, ManifestResourceAttributes attributes, byte [] data) :
+                       base (name, attributes)
+               {
+                       this.data = data;
                }
 
-               public EmbeddedResource (string name, ManifestResourceAttributes flags) :
-                       base (name, flags)
+               public EmbeddedResource (string name, ManifestResourceAttributes attributes, Stream stream) :
+                       base (name, attributes)
                {
+                       this.stream = stream;
                }
 
-               public EmbeddedResource (string name, ManifestResourceAttributes flags, byte [] data) :
-                       base (name, flags)
+               internal EmbeddedResource (string name, ManifestResourceAttributes attributes, uint offset, MetadataReader reader)
+                       : base (name, attributes)
                {
-                       m_data = data;
+                       this.offset = offset;
+                       this.reader = reader;
                }
 
-               public override void Accept (IReflectionStructureVisitor visitor)
+               public Stream GetResourceStream ()
                {
-                       visitor.VisitEmbeddedResource (this);
+                       if (stream != null)
+                               return stream;
+
+                       if (data != null)
+                               return new MemoryStream (data);
+
+                       if (offset.HasValue)
+                               return reader.GetManagedResourceStream (offset.Value);
+
+                       throw new InvalidOperationException ();
+               }
+
+               public byte [] GetResourceData ()
+               {
+                       if (stream != null)
+                               return ReadStream (stream);
+
+                       if (data != null)
+                               return data;
+
+                       if (offset.HasValue)
+                               return reader.GetManagedResourceStream (offset.Value).ToArray ();
+
+                       throw new InvalidOperationException ();
+               }
+
+               static byte [] ReadStream (Stream stream)
+               {
+                       var length = (int) stream.Length;
+                       var data = new byte [length];
+                       int offset = 0, read;
+
+                       while ((read = stream.Read (data, offset, length - offset)) > 0)
+                               offset += read;
+
+                       return data;
                }
        }
 }
index 2db3a3cdcbd1e3645fc0b175dd6137af2ba32a23..b5b097d4f57068df9b96829b3c545e4561e6c1d6 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum EventAttributes : ushort {
+               None                    = 0x0000,
                SpecialName             = 0x0200,       // Event is special
                RTSpecialName   = 0x0400         // CLI provides 'special' behavior, depending upon the name of the event
        }
index 9e837bd8879c37ff52e5b15dce41f808c6b09022..7a80aa06d822f27492d92930b1571bc1d88301e2 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       public sealed class EventDefinition : EventReference, IMemberDefinition, ICustomAttributeProvider {
+       public sealed class EventDefinition : EventReference, IMemberDefinition {
 
-               EventAttributes m_attributes;
+               ushort attributes;
 
-               CustomAttributeCollection m_customAttrs;
+               Collection<CustomAttribute> custom_attributes;
 
-               MethodDefinition m_addMeth;
-               MethodDefinition m_invMeth;
-               MethodDefinition m_remMeth;
+               internal MethodDefinition add_method;
+               internal MethodDefinition invoke_method;
+               internal MethodDefinition remove_method;
+               internal Collection<MethodDefinition> other_methods;
 
                public EventAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (EventAttributes) attributes; }
+                       set { attributes = (ushort) value; }
                }
 
                public MethodDefinition AddMethod {
-                       get { return m_addMeth; }
-                       set { m_addMeth = value; }
+                       get {
+                               if (add_method != null)
+                                       return add_method;
+
+                               InitializeMethods ();
+                               return add_method;
+                       }
+                       set { add_method = value; }
                }
 
                public MethodDefinition InvokeMethod {
-                       get { return m_invMeth; }
-                       set { m_invMeth = value; }
+                       get {
+                               if (invoke_method != null)
+                                       return invoke_method;
+
+                               InitializeMethods ();
+                               return invoke_method;
+                       }
+                       set { invoke_method = value; }
                }
 
                public MethodDefinition RemoveMethod {
-                       get { return m_remMeth; }
-                       set { m_remMeth = value; }
-               }
+                       get {
+                               if (remove_method != null)
+                                       return remove_method;
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+                               InitializeMethods ();
+                               return remove_method;
+                       }
+                       set { remove_method = value; }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasOtherMethods {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (other_methods != null)
+                                       return other_methods.Count > 0;
 
-                               return m_customAttrs;
+                               InitializeMethods ();
+                               return !other_methods.IsNullOrEmpty ();
                        }
                }
 
-               #region EventAttributes
+               public Collection<MethodDefinition> OtherMethods {
+                       get {
+                               if (other_methods != null)
+                                       return other_methods;
 
-               public bool IsSpecialName {
-                       get { return (m_attributes & EventAttributes.SpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= EventAttributes.SpecialName;
-                               else
-                                       m_attributes &= ~EventAttributes.SpecialName;
-                       }
-               }
+                               InitializeMethods ();
 
-               public bool IsRuntimeSpecialName {
-                       get { return (m_attributes & EventAttributes.RTSpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= EventAttributes.RTSpecialName;
-                               else
-                                       m_attributes &= ~EventAttributes.RTSpecialName;
+                               if (other_methods != null)
+                                       return other_methods;
+
+                               return other_methods = new Collection<MethodDefinition> ();
                        }
                }
 
-               #endregion
+               public bool HasCustomAttributes {
+                       get {
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-               public new TypeDefinition DeclaringType {
-                       get { return (TypeDefinition) base.DeclaringType; }
-                       set { base.DeclaringType = value; }
+                               return this.GetHasCustomAttributes (Module);
+                       }
                }
 
-               public EventDefinition (string name, TypeReference eventType,
-                       EventAttributes attrs) : base (name, eventType)
-               {
-                       m_attributes = attrs;
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
                }
 
-               public override EventDefinition Resolve ()
-               {
-                       return this;
-               }
+               #region EventAttributes
 
-               public static MethodDefinition CreateAddMethod (EventDefinition evt)
-               {
-                       MethodDefinition add = new MethodDefinition (
-                               string.Concat ("add_", evt.Name), (MethodAttributes) 0, evt.EventType);
-                       evt.AddMethod = add;
-                       return add;
+               public bool IsSpecialName {
+                       get { return attributes.GetAttributes ((ushort) EventAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) EventAttributes.SpecialName, value); }
                }
 
-               public static MethodDefinition CreateRemoveMethod (EventDefinition evt)
-               {
-                       MethodDefinition remove = new MethodDefinition (
-                               string.Concat ("remove_", evt.Name), (MethodAttributes) 0, evt.EventType);
-                       evt.RemoveMethod = remove;
-                       return remove;
+               public bool IsRuntimeSpecialName {
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.RTSpecialName, value); }
                }
 
-               public static MethodDefinition CreateInvokeMethod (EventDefinition evt)
-               {
-                       MethodDefinition raise = new MethodDefinition (
-                               string.Concat ("raise_", evt.Name), (MethodAttributes) 0, evt.EventType);
-                       evt.InvokeMethod = raise;
-                       return raise;
+               #endregion
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
                }
 
-               public EventDefinition Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+               public override bool IsDefinition {
+                       get { return true; }
                }
 
-               internal static EventDefinition Clone (EventDefinition evt, ImportContext context)
+               public EventDefinition (string name, EventAttributes attributes, TypeReference eventType)
+                       : base (name, eventType)
                {
-                       EventDefinition ne = new EventDefinition (
-                               evt.Name,
-                               context.Import (evt.EventType),
-                               evt.Attributes);
-
-                       if (context.GenericContext.Type is TypeDefinition) {
-                               TypeDefinition type = context.GenericContext.Type as TypeDefinition;
-                               if (evt.AddMethod != null)
-                                       ne.AddMethod = type.Methods.GetMethod (evt.AddMethod.Name) [0];
-                               if (evt.InvokeMethod != null)
-                                       ne.InvokeMethod = type.Methods.GetMethod (evt.InvokeMethod.Name) [0];
-                               if (evt.RemoveMethod != null)
-                                       ne.RemoveMethod = type.Methods.GetMethod (evt.RemoveMethod.Name) [0];
-                       }
-
-                       foreach (CustomAttribute ca in evt.CustomAttributes)
-                               ne.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-                       return ne;
+                       this.attributes = (ushort) attributes;
+                       this.token = new MetadataToken (TokenType.Event);
                }
 
-               public override void Accept (IReflectionVisitor visitor)
+               void InitializeMethods ()
                {
-                       visitor.VisitEventDefinition (this);
+                       if (add_method != null
+                               || invoke_method != null
+                               || remove_method != null)
+                               return;
+
+                       var module = this.Module;
+                       if (!module.HasImage ())
+                               return;
 
-                       this.CustomAttributes.Accept (visitor);
+                       module.Read (this, (@event, reader) => reader.ReadMethods (@event));
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs
deleted file mode 100644 (file)
index f646dfb..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// EventDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class EventDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public EventDefinition this [int index] {
-                       get { return List [index] as EventDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public EventDefinitionCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (EventDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (EventDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (EventDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (EventDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, EventDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (EventDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       EventDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is EventDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (EventDefinition).FullName);
-               }
-
-               public EventDefinition GetEvent (string name)
-               {
-                       foreach (EventDefinition evt in this)
-                               if (evt.Name == name)
-                                       return evt;
-
-                       return null;
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitEventDefinitionCollection (this);
-               }
-       }
-}
index 05ee21e932a4114044e30f81c5357711d8b494a9..e1435dac9cb8703b073592e5a9860ca4a4cbc865 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil {
 
        public abstract class EventReference : MemberReference {
 
-               TypeReference m_eventType;
+               TypeReference event_type;
 
                public TypeReference EventType {
-                       get { return m_eventType; }
-                       set { m_eventType = value; }
+                       get { return event_type; }
+                       set { event_type = value; }
                }
 
-               public EventReference (string name, TypeReference eventType) : base (name)
-               {
-                       m_eventType = eventType;
+               public override string FullName {
+                       get { return event_type.FullName + " " + MemberFullName (); }
                }
 
-               public abstract EventDefinition Resolve ();
-
-               public override string ToString ()
+               protected EventReference (string name, TypeReference eventType)
+                       : base (name)
                {
-                       return string.Concat (m_eventType.FullName, " ", base.ToString ());
+                       if (eventType == null)
+                               throw new ArgumentNullException ("eventType");
+
+                       event_type = eventType;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs
new file mode 100644 (file)
index 0000000..a1e793a
--- /dev/null
@@ -0,0 +1,235 @@
+//
+// ExportedType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+       public class ExportedType : IMetadataTokenProvider {
+
+               string @namespace;
+               string name;
+               uint attributes;
+               IMetadataScope scope;
+               int identifier;
+               ExportedType declaring_type;
+               internal MetadataToken token;
+
+               public string Namespace {
+                       get { return @namespace; }
+                       set { @namespace = value; }
+               }
+
+               public string Name {
+                       get { return name; }
+                       set { name = value; }
+               }
+
+               public TypeAttributes Attributes {
+                       get { return (TypeAttributes) attributes; }
+                       set { attributes = (uint) value; }
+               }
+
+               public IMetadataScope Scope {
+                       get {
+                               if (declaring_type != null)
+                                       return declaring_type.Scope;
+
+                               return scope;
+                       }
+               }
+
+               public ExportedType DeclaringType {
+                       get { return declaring_type; }
+                       set { declaring_type = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return token; }
+                       set { token = value; }
+               }
+
+               public int Identifier {
+                       get { return identifier; }
+                       set { identifier = value; }
+               }
+
+               #region TypeAttributes
+
+               public bool IsNotPublic {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic, value); }
+               }
+
+               public bool IsPublic {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public, value); }
+               }
+
+               public bool IsNestedPublic {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic, value); }
+               }
+
+               public bool IsNestedPrivate {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate, value); }
+               }
+
+               public bool IsNestedFamily {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily, value); }
+               }
+
+               public bool IsNestedAssembly {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly, value); }
+               }
+
+               public bool IsNestedFamilyAndAssembly {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem, value); }
+               }
+
+               public bool IsNestedFamilyOrAssembly {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem, value); }
+               }
+
+               public bool IsAutoLayout {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout, value); }
+               }
+
+               public bool IsSequentialLayout {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout, value); }
+               }
+
+               public bool IsExplicitLayout {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout, value); }
+               }
+
+               public bool IsClass {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class, value); }
+               }
+
+               public bool IsInterface {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface, value); }
+               }
+
+               public bool IsAbstract {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Abstract); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Abstract, value); }
+               }
+
+               public bool IsSealed {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Sealed); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Sealed, value); }
+               }
+
+               public bool IsSpecialName {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.SpecialName, value); }
+               }
+
+               public bool IsImport {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Import); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Import, value); }
+               }
+
+               public bool IsSerializable {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Serializable); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Serializable, value); }
+               }
+
+               public bool IsAnsiClass {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass, value); }
+               }
+
+               public bool IsUnicodeClass {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass, value); }
+               }
+
+               public bool IsAutoClass {
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass, value); }
+               }
+
+               public bool IsBeforeFieldInit {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.BeforeFieldInit); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.BeforeFieldInit, value); }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.RTSpecialName, value); }
+               }
+
+               public bool HasSecurity {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.HasSecurity); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.HasSecurity, value); }
+               }
+
+               #endregion
+
+               public bool IsForwarder {
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Forwarder); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Forwarder, value); }
+               }
+
+               public string FullName {
+                       get {
+                               if (declaring_type != null)
+                                       return declaring_type.FullName + "/" + name;
+
+                               if (string.IsNullOrEmpty (@namespace))
+                                       return name;
+
+                               return @namespace + "." + name;
+                       }
+               }
+
+               public ExportedType (string @namespace, string name, IMetadataScope scope)
+               {
+                       this.@namespace = @namespace;
+                       this.name = name;
+                       this.scope = scope;
+               }
+
+               public override string ToString ()
+               {
+                       return FullName;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs
deleted file mode 100644 (file)
index dfad548..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// ExternTypeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-       using System.Collections.Specialized;
-
-       using Mono.Cecil.Cil;
-
-       using Hcp = Mono.Cecil.HashCodeProvider;
-       using Cmp = System.Collections.Comparer;
-
-       public sealed class ExternTypeCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-               ModuleDefinition m_container;
-
-               public TypeReference this [int index] {
-                       get { return this.BaseGet (index) as TypeReference; }
-                       set { this.BaseSet (index, value); }
-               }
-
-               public TypeReference this [string fullName] {
-                       get { return this.BaseGet (fullName) as TypeReference; }
-                       set { this.BaseSet (fullName, value); }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               bool IList.IsReadOnly {
-                       get { return false; }
-               }
-
-               bool IList.IsFixedSize {
-                       get { return false; }
-               }
-
-               object IList.this [int index] {
-                       get { return BaseGet (index); }
-                       set {
-                               Check (value);
-                               BaseSet (index, value);
-                       }
-               }
-
-               public ExternTypeCollection (ModuleDefinition container) :
-                       base (Hcp.Instance, Cmp.Default)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeReference value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       this.BaseAdd (value.FullName, value);
-               }
-
-               public void Clear ()
-               {
-                       this.BaseClear ();
-               }
-
-               public bool Contains (TypeReference value)
-               {
-                       return Contains (value.FullName);
-               }
-
-               public bool Contains (string fullName)
-               {
-                       return this.BaseGet (fullName) != null;
-               }
-
-               public int IndexOf (TypeReference value)
-               {
-                       string [] keys = this.BaseGetAllKeys ();
-                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
-               }
-
-               public void Remove (TypeReference value)
-               {
-                       this.BaseRemove (value.FullName);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       TypeReference item = this [index];
-                       Remove (item);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       this.BaseGetAllValues ().CopyTo (ary, index);
-               }
-
-               public new IEnumerator GetEnumerator ()
-               {
-                       return this.BaseGetAllValues ().GetEnumerator ();
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitExternTypeCollection (this);
-               }
-
-#if CF_1_0 || CF_2_0
-               internal object [] BaseGetAllValues ()
-               {
-                       object [] values = new object [this.Count];
-                       for (int i=0; i < values.Length; ++i) {
-                               values [i] = this.BaseGet (i);
-                       }
-                       return values;
-               }
-#endif
-
-               void Check (object value)
-               {
-                       if (!(value is TypeReference))
-                               throw new ArgumentException ();
-               }
-
-               int IList.Add (object value)
-               {
-                       Check (value);
-                       Add (value as TypeReference);
-                       return 0;
-               }
-
-               bool IList.Contains (object value)
-               {
-                       Check (value);
-                       return Contains (value as TypeReference);
-               }
-
-               int IList.IndexOf (object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Insert (int index, object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Remove (object value)
-               {
-                       Check (value);
-                       Remove (value as TypeReference);
-               }
-       }
-}
index b7e90f0b545de553374c6dcd53232d34444bc7b3..947a8770af07fedbe7d473ba8ebb2ff00866e1cc 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum FieldAttributes : ushort {
                FieldAccessMask         = 0x0007,
-               Compilercontrolled      = 0x0000,       // Member not referenceable
+               CompilerControlled      = 0x0000,       // Member not referenceable
                Private                         = 0x0001,       // Accessible only by the parent type
                FamANDAssem                     = 0x0002,       // Accessible by sub-types only in this assembly
                Assembly                        = 0x0003,       // Accessible by anyone in the Assembly
index d25380ab0d0ea660788df4dafb899f1f7ab00975..c60a940051c83107a8f14fa6deffe58d7cc5cb5e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using Mono.Cecil;
-       using Mono.Cecil.Binary;
+       public sealed class FieldDefinition : FieldReference, IMemberDefinition, IConstantProvider, IMarshalInfoProvider {
 
-       public sealed class FieldDefinition : FieldReference, IMemberDefinition,
-               ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+               ushort attributes;
+               Collection<CustomAttribute> custom_attributes;
 
-               FieldAttributes m_attributes;
+               int offset = Mixin.NotResolvedMarker;
 
-               CustomAttributeCollection m_customAttrs;
+               internal int rva = Mixin.NotResolvedMarker;
+               byte [] initial_value;
 
-               bool m_hasInfo;
-               uint m_offset;
+               object constant = Mixin.NotResolved;
 
-               RVA m_rva;
-               byte [] m_initVal;
+               MarshalInfo marshal_info;
 
-               bool m_hasConstant;
-               object m_const;
+               void ResolveLayout ()
+               {
+                       if (offset != Mixin.NotResolvedMarker)
+                               return;
 
-               MarshalSpec m_marshalDesc;
+                       if (!HasImage) {
+                               offset = Mixin.NoDataMarker;
+                               return;
+                       }
+
+                       offset = Module.Read (this, (field, reader) => reader.ReadFieldLayout (field));
+               }
 
                public bool HasLayoutInfo {
-                       get { return m_hasInfo; }
+                       get {
+                               if (offset >= 0)
+                                       return true;
+
+                               ResolveLayout ();
+
+                               return offset >= 0;
+                       }
                }
 
-               public uint Offset {
-                       get { return m_offset; }
-                       set {
-                               m_hasInfo = true;
-                               m_offset = value;
+               public int Offset {
+                       get {
+                               if (offset >= 0)
+                                       return offset;
+
+                               ResolveLayout ();
+
+                               return offset >= 0 ? offset : -1;
                        }
+                       set { offset = value; }
                }
 
-               public RVA RVA {
-                       get { return m_rva; }
-                       set { m_rva = value; }
+               void ResolveRVA ()
+               {
+                       if (rva != Mixin.NotResolvedMarker)
+                               return;
+
+                       if (!HasImage)
+                               return;
+
+                       rva = Module.Read (this, (field, reader) => reader.ReadFieldRVA (field));
+               }
+
+               public int RVA {
+                       get {
+                               if (rva > 0)
+                                       return rva;
+
+                               ResolveRVA ();
+
+                               return rva > 0 ? rva : 0;
+                       }
                }
 
                public byte [] InitialValue {
-                       get { return m_initVal; }
-                       set { m_initVal = value; }
+                       get {
+                               if (initial_value != null)
+                                       return initial_value;
+
+                               ResolveRVA ();
+
+                               if (initial_value == null)
+                                       initial_value = Empty<byte>.Array;
+
+                               return initial_value;
+                       }
+                       set { initial_value = value; }
                }
 
                public FieldAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (FieldAttributes) attributes; }
+                       set { attributes = (ushort) value; }
                }
 
                public bool HasConstant {
-                       get { return m_hasConstant; }
+                       get {
+                               ResolveConstant ();
+
+                               return constant != Mixin.NoValue;
+                       }
+                       set { if (!value) constant = Mixin.NoValue; }
                }
 
                public object Constant {
-                       get { return m_const; }
-                       set {
-                               m_hasConstant = true;
-                               m_const = value;
-                       }
+                       get { return HasConstant ? constant : null;     }
+                       set { constant = value; }
                }
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               void ResolveConstant ()
+               {
+                       if (constant != Mixin.NotResolved)
+                               return;
+
+                       this.ResolveConstant (ref constant, Module);
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasCustomAttributes {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-                               return m_customAttrs;
+                               return this.GetHasCustomAttributes (Module);
                        }
                }
 
-               public MarshalSpec MarshalSpec {
-                       get { return m_marshalDesc; }
-                       set {
-                               m_marshalDesc = value;
-                               if (value != null)
-                                       m_attributes |= FieldAttributes.HasFieldMarshal;
-                               else
-                                       m_attributes &= FieldAttributes.HasFieldMarshal;
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+               }
+
+               public bool HasMarshalInfo {
+                       get {
+                               if (marshal_info != null)
+                                       return true;
+
+                               return this.GetHasMarshalInfo (Module);
                        }
                }
 
+               public MarshalInfo MarshalInfo {
+                       get { return marshal_info ?? (marshal_info = this.GetMarshalInfo (Module)); }
+                       set { marshal_info = value; }
+               }
+
                #region FieldAttributes
 
                public bool IsCompilerControlled {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Compilercontrolled; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.Compilercontrolled;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Compilercontrolled);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.CompilerControlled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.CompilerControlled, value); }
                }
 
                public bool IsPrivate {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.Private;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Private);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Private); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Private, value); }
                }
 
                public bool IsFamilyAndAssembly {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.FamANDAssem;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamANDAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamANDAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamANDAssem, value); }
                }
 
                public bool IsAssembly {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.Assembly;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Assembly);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Assembly); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Assembly, value); }
                }
 
                public bool IsFamily {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.Family;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Family);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Family); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Family, value); }
                }
 
                public bool IsFamilyOrAssembly {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.FamORAssem;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamORAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamORAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamORAssem, value); }
                }
 
                public bool IsPublic {
-                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
-                                       m_attributes |= FieldAttributes.Public;
-                               } else
-                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Public);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Public); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Public, value); }
                }
 
                public bool IsStatic {
-                       get { return (m_attributes & FieldAttributes.Static) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.Static;
-                               else
-                                       m_attributes &= ~FieldAttributes.Static;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.Static); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.Static, value); }
                }
 
                public bool IsInitOnly {
-                       get { return (m_attributes & FieldAttributes.InitOnly) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.InitOnly;
-                               else
-                                       m_attributes &= ~FieldAttributes.InitOnly;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.InitOnly); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.InitOnly, value); }
                }
 
                public bool IsLiteral {
-                       get { return (m_attributes & FieldAttributes.Literal) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.Literal;
-                               else
-                                       m_attributes &= ~FieldAttributes.Literal;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.Literal); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.Literal, value); }
                }
 
                public bool IsNotSerialized {
-                       get { return (m_attributes & FieldAttributes.NotSerialized) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.NotSerialized;
-                               else
-                                       m_attributes &= ~FieldAttributes.NotSerialized;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.NotSerialized); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.NotSerialized, value); }
                }
 
                public bool IsSpecialName {
-                       get { return (m_attributes & FieldAttributes.SpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.SpecialName;
-                               else
-                                       m_attributes &= ~FieldAttributes.SpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.SpecialName, value); }
                }
 
                public bool IsPInvokeImpl {
-                       get { return (m_attributes & FieldAttributes.PInvokeImpl) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.PInvokeImpl;
-                               else
-                                       m_attributes &= ~FieldAttributes.PInvokeImpl;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.PInvokeImpl); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.PInvokeImpl, value); }
                }
 
                public bool IsRuntimeSpecialName {
-                       get { return (m_attributes & FieldAttributes.RTSpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.RTSpecialName;
-                               else
-                                       m_attributes &= ~FieldAttributes.RTSpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.RTSpecialName, value); }
                }
 
                public bool HasDefault {
-                       get { return (m_attributes & FieldAttributes.HasDefault) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= FieldAttributes.HasDefault;
-                               else
-                                       m_attributes &= ~FieldAttributes.HasDefault;
-                       }
+                       get { return attributes.GetAttributes ((ushort) FieldAttributes.HasDefault); }
+                       set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.HasDefault, value); }
                }
 
                #endregion
 
+               public override bool IsDefinition {
+                       get { return true; }
+               }
+
                public new TypeDefinition DeclaringType {
                        get { return (TypeDefinition) base.DeclaringType; }
                        set { base.DeclaringType = value; }
                }
 
-               public FieldDefinition (string name, TypeReference fieldType,
-                       FieldAttributes attrs) : base (name, fieldType)
+               public FieldDefinition (string name, FieldAttributes attributes, TypeReference fieldType)
+                       : base (name, fieldType)
                {
-                       m_attributes = attrs;
+                       this.attributes = (ushort) attributes;
                }
 
                public override FieldDefinition Resolve ()
                {
                        return this;
                }
+       }
 
-               public FieldDefinition Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
-               }
-
-               internal static FieldDefinition Clone (FieldDefinition field, ImportContext context)
-               {
-                       FieldDefinition nf = new FieldDefinition (
-                               field.Name,
-                               context.Import (field.FieldType),
-                               field.Attributes);
-
-                       if (field.HasConstant)
-                               nf.Constant = field.Constant;
-                       if (field.MarshalSpec != null)
-                               nf.MarshalSpec = field.MarshalSpec.CloneInto (nf);
-                       if (field.RVA != RVA.Zero)
-                               nf.InitialValue = field.InitialValue;
-                       else
-                               nf.InitialValue = new byte [0];
-                       if (field.HasLayoutInfo)
-                               nf.Offset = field.Offset;
-
-                       foreach (CustomAttribute ca in field.CustomAttributes)
-                               nf.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-                       return nf;
-               }
-
-               public override void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitFieldDefinition (this);
-
-                       if (this.MarshalSpec != null)
-                               this.MarshalSpec.Accept (visitor);
+       static partial class Mixin {
 
-                       this.CustomAttributes.Accept (visitor);
-               }
+               public const int NotResolvedMarker = -2;
+               public const int NoDataMarker = -1;
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs
deleted file mode 100644 (file)
index 366ec3d..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// FieldDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class FieldDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public FieldDefinition this [int index] {
-                       get { return List [index] as FieldDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public FieldDefinitionCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (FieldDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (FieldDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (FieldDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (FieldDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, FieldDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (FieldDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       FieldDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is FieldDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (FieldDefinition).FullName);
-               }
-
-               public FieldDefinition GetField (string name)
-               {
-                       foreach (FieldDefinition field in this)
-                               if (field.Name == name)
-                                       return field;
-
-                       return null;
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitFieldDefinitionCollection (this);
-               }
-       }
-}
index 191338434509922adf0742e1c0b4d51f522c9186..1c812bb90eff23188c3c2da8779fd33cb4057f35 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using Mono.Cecil;
+namespace Mono.Cecil {
 
        public class FieldReference : MemberReference {
 
-               TypeReference m_fieldType;
+               TypeReference field_type;
 
                public TypeReference FieldType {
-                       get { return m_fieldType; }
-                       set { m_fieldType = value; }
+                       get { return field_type; }
+                       set { field_type = value; }
+               }
+
+               public override string FullName {
+                       get { return field_type.FullName + " " + MemberFullName (); }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return field_type.ContainsGenericParameter || base.ContainsGenericParameter; }
                }
 
-               internal FieldReference (string name, TypeReference fieldType) : base (name)
+               internal FieldReference ()
                {
-                       m_fieldType = fieldType;
+                       this.token = new MetadataToken (TokenType.MemberRef);
                }
 
-               public FieldReference (string name, TypeReference declaringType, TypeReference fieldType) :
-                       this (name, fieldType)
+               public FieldReference (string name, TypeReference fieldType)
+                       : base (name)
                {
-                       this.DeclaringType = declaringType;
+                       if (fieldType == null)
+                               throw new ArgumentNullException ("fieldType");
+
+                       this.field_type = fieldType;
+                       this.token = new MetadataToken (TokenType.MemberRef);
                }
 
-               public virtual FieldDefinition Resolve ()
+               public FieldReference (string name, TypeReference fieldType, TypeReference declaringType)
+                       : this (name, fieldType)
                {
-                       TypeReference declaringType = DeclaringType;
                        if (declaringType == null)
-                               return null;
+                               throw new ArgumentNullException("declaringType");
 
-                       return declaringType.Module.Resolver.Resolve (this);
+                       this.DeclaringType = declaringType;
                }
 
-               public override string ToString ()
+               public virtual FieldDefinition Resolve ()
                {
-                       return string.Concat (m_fieldType.FullName, " ", base.ToString ());
+                       var module = this.Module;
+                       if (module == null)
+                               throw new NotSupportedException ();
+
+                       return module.Resolve (this);
                }
        }
 }
index 1379a8696d31a927e593ced5204f3ee90a7bb1ae..6c2781c624469b20d5951018591120eebb26693f 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@
 
 namespace Mono.Cecil {
 
-       public enum FileAttributes : uint {
+       enum FileAttributes : uint {
                ContainsMetaData        = 0x0000,       // This is not a resource file
                ContainsNoMetaData  = 0x0001,   // This is a resource file or other non-metadata-containing file
        }
index 247f26c9df2eec813b68acd21a36373329a5959d..4c1f1baccda998ee8887bea0bb9acc76f8368828 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Text;
+using Mono.Collections.Generic;
+using MD = Mono.Cecil.Metadata;
 
-       using System;
-       using System.Text;
+namespace Mono.Cecil {
 
        public sealed class FunctionPointerType : TypeSpecification, IMethodSignature {
 
-               MethodReference m_function;
+               readonly MethodReference function;
 
                public bool HasThis {
-                       get { return m_function.HasThis; }
-                       set { m_function.HasThis = value; }
+                       get { return function.HasThis; }
+                       set { function.HasThis = value; }
                }
 
                public bool ExplicitThis {
-                       get { return m_function.ExplicitThis; }
-                       set { m_function.ExplicitThis = value; }
+                       get { return function.ExplicitThis; }
+                       set { function.ExplicitThis = value; }
                }
 
                public MethodCallingConvention CallingConvention {
-                       get { return m_function.CallingConvention; }
-                       set { m_function.CallingConvention = value; }
+                       get { return function.CallingConvention; }
+                       set { function.CallingConvention = value; }
                }
 
                public bool HasParameters {
-                       get { return m_function.HasParameters; }
+                       get { return function.HasParameters; }
+               }
+
+               public Collection<ParameterDefinition> Parameters {
+                       get { return function.Parameters; }
                }
 
-               public ParameterDefinitionCollection Parameters {
-                       get { return m_function.Parameters; }
+               public TypeReference ReturnType {
+                       get { return function.MethodReturnType.ReturnType; }
+                       set { function.MethodReturnType.ReturnType = value; }
                }
 
-               public MethodReturnType ReturnType {
-                       get { return m_function.ReturnType; }
-                       set { m_function.ReturnType = value; }
+               public MethodReturnType MethodReturnType {
+                       get { return function.MethodReturnType; }
                }
 
                public override string Name {
-                       get { return m_function.Name; }
+                       get { return function.Name; }
                        set { throw new InvalidOperationException (); }
                }
 
@@ -73,44 +79,40 @@ namespace Mono.Cecil {
                        set { throw new InvalidOperationException (); }
                }
 
+               public override ModuleDefinition Module {
+                       get { return ReturnType.Module; }
+               }
+
                public override IMetadataScope Scope {
-                       get { return m_function.DeclaringType.Scope; }
+                       get { return function.ReturnType.Scope; }
+               }
+
+               public override bool IsFunctionPointer {
+                       get { return true; }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return function.ContainsGenericParameter; }
                }
 
                public override string FullName {
                        get {
-                               int sentinel = GetSentinel ();
-                               StringBuilder sb = new StringBuilder ();
-                               sb.Append (m_function.Name);
-                               sb.Append (" ");
-                               sb.Append (m_function.ReturnType.ReturnType.FullName);
-                               sb.Append (" *(");
-                               if (m_function.HasParameters) {
-                                       for (int i = 0; i < m_function.Parameters.Count; i++) {
-                                               if (i > 0)
-                                                       sb.Append (",");
-
-                                               if (i == sentinel)
-                                                       sb.Append ("...,");
-
-                                               sb.Append (m_function.Parameters [i].ParameterType.FullName);
-                                       }
-                               }
-                               sb.Append (")");
-                               return sb.ToString ();
+                               var signature = new StringBuilder ();
+                               signature.Append (function.Name);
+                               signature.Append (" ");
+                               signature.Append (function.ReturnType.FullName);
+                               signature.Append (" *");
+                               this.MethodSignatureFullName (signature);
+                               return signature.ToString ();
                        }
                }
 
-               public FunctionPointerType (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType) :
-                       base (retType.ReturnType)
-               {
-                       m_function = new MethodReference ("method", hasThis, explicitThis, callConv);
-                       m_function.ReturnType = retType;
-               }
-
-               public int GetSentinel ()
+               public FunctionPointerType ()
+                       : base (null)
                {
-                       return m_function.GetSentinel ();
+                       this.function = new MethodReference ();
+                       this.function.Name = "method";
+                       this.etype = MD.ElementType.FnPtr;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs
deleted file mode 100644 (file)
index cdb82e9..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// GenericArgumentCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class GenericArgumentCollection : CollectionBase {
-
-               IGenericInstance m_container;
-
-               public TypeReference this [int index] {
-                       get { return List [index] as TypeReference; }
-                       set { List [index] = value; }
-               }
-
-               public IGenericInstance Container {
-                       get { return m_container; }
-               }
-
-               public GenericArgumentCollection (IGenericInstance container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (TypeReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (TypeReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, TypeReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (TypeReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is TypeReference))
-                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs
deleted file mode 100644 (file)
index b3c198d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// GenericContext.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public class GenericContext {
-
-               TypeReference m_type;
-               MethodReference m_method;
-
-               public TypeReference Type {
-                       get { return m_type; }
-                       set { m_type = value; }
-               }
-
-               public MethodReference Method {
-                       get { return m_method; }
-                       set { m_method = value; }
-               }
-
-               public bool AllowCreation {
-                       get { return m_type != null && m_type.GetType () == typeof (TypeReference); }
-               }
-
-               public bool Null {
-                       get { return m_type == null && m_method == null; }
-               }
-
-               public GenericContext ()
-               {
-               }
-
-               public GenericContext (TypeReference type, MethodReference meth)
-               {
-                       m_type = type;
-                       m_method = meth;
-               }
-
-               public GenericContext (IGenericParameterProvider provider)
-               {
-                       if (provider is TypeReference)
-                               m_type = provider as TypeReference;
-                       else if (provider is MethodReference) {
-                               MethodReference meth = provider as MethodReference;
-                               m_method = meth;
-                               m_type = meth.DeclaringType;
-                       }
-               }
-
-               internal void CheckProvider (IGenericParameterProvider provider, int count)
-               {
-                       if (!AllowCreation)
-                               return;
-
-                       for (int i = provider.GenericParameters.Count; i < count; i++)
-                               provider.GenericParameters.Add (new GenericParameter (i, provider));
-               }
-
-               public GenericContext Clone ()
-               {
-                       GenericContext ctx = new GenericContext ();
-                       ctx.Type = m_type;
-                       ctx.Method = m_method;
-                       return ctx;
-               }
-       }
-}
index b88873e7c01dd4e9641116179a1aa50347b74c80..d4871c34ea43a99c759bbde807cc94c6d2cdc15c 100644 (file)
@@ -1,10 +1,10 @@
 //
-// IGenericInstanceMethod.cs
+// GenericInstanceMethod.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System.Text;
+       public sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance, IGenericContext {
 
-       public sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance {
+               Collection<TypeReference> arguments;
 
-               private GenericArgumentCollection m_genArgs;
+               public bool HasGenericArguments {
+                       get { return !arguments.IsNullOrEmpty (); }
+               }
 
-               public GenericArgumentCollection GenericArguments {
+               public Collection<TypeReference> GenericArguments {
                        get {
-                               if (m_genArgs == null)
-                                       m_genArgs = new GenericArgumentCollection (this);
-                               return m_genArgs;
+                               if (arguments == null)
+                                       arguments = new Collection<TypeReference> ();
+
+                               return arguments;
                        }
                }
 
-               public bool HasGenericArguments {
-                       get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+               public override bool IsGenericInstance {
+                       get { return true; }
                }
 
-               public GenericInstanceMethod (MethodReference elemMethod) : base (elemMethod)
-               {
+               IGenericParameterProvider IGenericContext.Method {
+                       get { return ElementMethod; }
                }
 
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       MethodReference meth = this.ElementMethod;
-                       sb.Append (meth.ReturnType.ReturnType.FullName);
-                       sb.Append (" ");
-                       sb.Append (meth.DeclaringType.FullName);
-                       sb.Append ("::");
-                       sb.Append (meth.Name);
-                       sb.Append ("<");
-                       for (int i = 0; i < this.GenericArguments.Count; i++) {
-                               if (i > 0)
-                                       sb.Append (",");
-                               sb.Append (this.GenericArguments [i].FullName);
-                       }
-                       sb.Append (">");
-                       sb.Append ("(");
-                       if (meth.HasParameters) {
-                               for (int i = 0; i < meth.Parameters.Count; i++) {
-                                       sb.Append (meth.Parameters [i].ParameterType.FullName);
-                                       if (i < meth.Parameters.Count - 1)
-                                               sb.Append (",");
-                               }
+               IGenericParameterProvider IGenericContext.Type {
+                       get { return ElementMethod.DeclaringType; }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return this.ContainsGenericParameter () || base.ContainsGenericParameter; }
+               }
+
+               public override string FullName {
+                       get {
+                               var signature = new StringBuilder ();
+                               var method = this.ElementMethod;
+                               signature.Append (method.ReturnType.FullName);
+                               signature.Append (" ");
+                               signature.Append (method.DeclaringType.FullName);
+                               signature.Append ("::");
+                               signature.Append (method.Name);
+                               this.GenericInstanceFullName (signature);
+                               this.MethodSignatureFullName (signature);
+                               return signature.ToString ();
+
                        }
-                       sb.Append (")");
-                       return sb.ToString ();
+               }
+
+               public GenericInstanceMethod (MethodReference method)
+                       : base (method)
+               {
                }
        }
 }
index e20ad67483cc89dba681add8356346bb54c13ba3..46c048bcd3ece6e55025363cf66f860821912cab 100644 (file)
@@ -2,10 +2,9 @@
 // GenericInstanceType.cs
 //
 // Author:
-//     Martin Baulig  <martin@ximian.com>
-//  Jb Evain  <jbevain@gmail.com>
+//   Jb Evain (jbevain@gmail.com)
 //
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-       using System.Text;
+       public sealed class GenericInstanceType : TypeSpecification, IGenericInstance, IGenericContext {
 
-       public sealed class GenericInstanceType : TypeSpecification, IGenericInstance {
+               Collection<TypeReference> arguments;
 
-               private GenericArgumentCollection m_genArgs;
+               public bool HasGenericArguments {
+                       get { return !arguments.IsNullOrEmpty (); }
+               }
 
-               public GenericArgumentCollection GenericArguments {
+               public Collection<TypeReference> GenericArguments {
                        get {
-                               if (m_genArgs == null)
-                                       m_genArgs = new GenericArgumentCollection (this);
-                               return m_genArgs;
-                       }
-               }
+                               if (arguments == null)
+                                       arguments = new Collection<TypeReference> ();
 
-               public bool HasGenericArguments {
-                       get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+                               return arguments;
+                       }
                }
 
-               public override bool IsValueType {
-                       get { return m_isValueType; }
-                       set { m_isValueType = value; }
+               public override TypeReference DeclaringType {
+                       get { return ElementType.DeclaringType; }
+                       set { throw new NotSupportedException (); }
                }
 
                public override string FullName {
                        get {
-                               StringBuilder sb = new StringBuilder ();
-                               sb.Append (base.FullName);
-                               sb.Append ("<");
-                               for (int i = 0; i < this.GenericArguments.Count; i++) {
-                                       if (i > 0)
-                                               sb.Append (",");
-                                       sb.Append (this.GenericArguments [i].FullName);
-                               }
-                               sb.Append (">");
-                               return sb.ToString ();
+                               var name = new StringBuilder ();
+                               name.Append (base.FullName);
+                               this.GenericInstanceFullName (name);
+                               return name.ToString ();
                        }
                }
 
-               public GenericInstanceType (TypeReference elementType) : base (elementType)
+               public override bool IsGenericInstance {
+                       get { return true; }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return this.ContainsGenericParameter () || base.ContainsGenericParameter; }
+               }
+
+               IGenericParameterProvider IGenericContext.Type {
+                       get { return ElementType; }
+               }
+
+               public GenericInstanceType (TypeReference type)
+                       : base (type)
                {
-                       m_isValueType = elementType.IsValueType;
+                       base.IsValueType = type.IsValueType;
+                       this.etype = MD.ElementType.GenericInst;
                }
        }
 }
index 88a58509dee73fc9f74e2dcfecc4d592fbb4f1a6..d9efb5ebca507972e337ecd134bd0b3e449d2d31 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
+using Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-       using System;
+       public sealed class GenericParameter : TypeReference, ICustomAttributeProvider {
 
-       public sealed class GenericParameter : TypeReference {
+               readonly IGenericParameterProvider owner;
 
-               int m_position;
-               string m_name;
-               GenericParameterAttributes m_attributes;
-               IGenericParameterProvider m_owner;
-               ConstraintCollection m_constraints;
+               ushort attributes;
+               Collection<TypeReference> constraints;
+               Collection<CustomAttribute> custom_attributes;
 
-               public int Position {
-                       get { return m_position; }
-                       set { m_position = value; }
+               public GenericParameterAttributes Attributes {
+                       get { return (GenericParameterAttributes) attributes; }
+                       set { attributes = (ushort) value; }
                }
 
-               public GenericParameterAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+               public int Position {
+                       get {
+                               if (owner == null)
+                                       return -1;
+
+                               return owner.GenericParameters.IndexOf (this);
+                       }
                }
 
                public IGenericParameterProvider Owner {
-                       get { return m_owner; }
+                       get { return owner; }
                }
 
                public bool HasConstraints {
-                       get { return (m_constraints == null) ? false : (m_constraints.Count > 0); }
+                       get {
+                               if (constraints != null)
+                                       return constraints.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (generic_parameter, reader) => reader.HasGenericConstraints (generic_parameter));
+
+                               return false;
+                       }
                }
 
-               public ConstraintCollection Constraints {
+               public Collection<TypeReference> Constraints {
                        get {
-                               if (m_constraints == null)
-                                       m_constraints = new ConstraintCollection (this);
+                               if (constraints != null)
+                                       return constraints;
 
-                               return m_constraints;
+                               if (HasImage)
+                                       return constraints = Module.Read (this, (generic_parameter, reader) => reader.ReadGenericConstraints (generic_parameter));
+
+                               return constraints = new Collection<TypeReference> ();
                        }
                }
 
-               public override IMetadataScope Scope {
+               public bool HasCustomAttributes {
                        get {
-                               if (m_owner is TypeReference)
-                                       return ((TypeReference) m_owner).Scope;
-                               if (m_owner is MethodReference)
-                                       return ((MethodReference) m_owner).DeclaringType.Scope;
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-                               throw new InvalidOperationException ();
+                               return this.GetHasCustomAttributes (Module);
                        }
                }
 
-               public override ModuleDefinition Module {
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+               }
+
+               internal new bool HasImage {
+                       get { return Module != null && Module.HasImage; }
+               }
+
+               public override IMetadataScope Scope {
                        get {
-                               if (m_owner is TypeReference)
-                                       return ((TypeReference) m_owner).Module;
-                               if (m_owner is MethodReference)
-                                       return ((MethodReference) m_owner).DeclaringType.Module;
+                               if (owner.GenericParameterType == GenericParameterType.Method)
+                                       return ((MethodReference) owner).DeclaringType.Scope;
 
-                               throw new InvalidOperationException ();
+                               return ((TypeReference) owner).Scope;
                        }
                }
 
+               public override ModuleDefinition Module {
+                       get { return ((MemberReference) owner).Module; }
+               }
+
                public override string Name {
                        get {
-                               if (m_name != null)
-                                       return m_name;
-
-                               if (m_owner is TypeReference)
-                                       return string.Concat ("!", m_position.ToString ());
-                               else if (m_owner is MethodReference)
-                                       return string.Concat ("!!", m_position.ToString ());
-                               else
-                                       throw new InvalidOperationException ();
+                               if (!string.IsNullOrEmpty (base.Name))
+                                       return base.Name;
+
+                               return base.Name = (owner.GenericParameterType == GenericParameterType.Type ? "!" : "!!") + Position;
                        }
-                       set { m_name = value; }
                }
 
                public override string Namespace {
@@ -111,128 +132,65 @@ namespace Mono.Cecil {
                        get { return Name; }
                }
 
+               public override bool IsGenericParameter {
+                       get { return true; }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return true; }
+               }
+
+               public override MetadataType MetadataType {
+                       get { return (MetadataType) etype; }
+               }
+
                #region GenericParameterAttributes
 
                public bool IsNonVariant {
-                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.NonVariant; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
-                                       m_attributes |= GenericParameterAttributes.NonVariant;
-                               } else
-                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.NonVariant);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.NonVariant); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.NonVariant, value); }
                }
 
                public bool IsCovariant {
-                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Covariant; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
-                                       m_attributes |= GenericParameterAttributes.Covariant;
-                               } else
-                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Covariant);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Covariant); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Covariant, value); }
                }
 
                public bool IsContravariant {
-                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Contravariant; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
-                                       m_attributes |= GenericParameterAttributes.Contravariant;
-                               } else
-                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Contravariant);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Contravariant); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Contravariant, value); }
                }
 
                public bool HasReferenceTypeConstraint {
-                       get { return (m_attributes & GenericParameterAttributes.ReferenceTypeConstraint) != 0; }
-                       set {
-                               if (value) {
-                                       m_attributes |= GenericParameterAttributes.ReferenceTypeConstraint;
-                               } else
-                                       m_attributes &= ~GenericParameterAttributes.ReferenceTypeConstraint;
-                       }
+                       get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.ReferenceTypeConstraint); }
+                       set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.ReferenceTypeConstraint, value); }
                }
 
                public bool HasNotNullableValueTypeConstraint {
-                       get { return (m_attributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
-                       set {
-                               if (value) {
-                                       m_attributes |= GenericParameterAttributes.NotNullableValueTypeConstraint;
-                               } else
-                                       m_attributes &= ~GenericParameterAttributes.NotNullableValueTypeConstraint;
-                       }
+                       get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.NotNullableValueTypeConstraint); }
+                       set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.NotNullableValueTypeConstraint, value); }
                }
 
                public bool HasDefaultConstructorConstraint {
-                       get { return (m_attributes & GenericParameterAttributes.DefaultConstructorConstraint) != 0; }
-                       set {
-                               if (value) {
-                                       m_attributes |= GenericParameterAttributes.DefaultConstructorConstraint;
-                               } else
-                                       m_attributes &= ~GenericParameterAttributes.DefaultConstructorConstraint;
-                       }
+                       get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.DefaultConstructorConstraint); }
+                       set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.DefaultConstructorConstraint, value); }
                }
 
                #endregion
 
-               internal GenericParameter (int pos, IGenericParameterProvider owner) :
-                       base (string.Empty, string.Empty)
-               {
-                       m_position = pos;
-                       m_owner = owner;
-               }
-
-               public GenericParameter (string name, IGenericParameterProvider owner) :
-                       base (string.Empty, string.Empty)
+               public GenericParameter (IGenericParameterProvider owner)
+                       : this (string.Empty, owner)
                {
-                       m_name = name;
-                       m_owner = owner;
                }
 
-               public override TypeDefinition Resolve ()
+               public GenericParameter (string name, IGenericParameterProvider owner)
+                       : base (string.Empty, name)
                {
-                       return null;
-               }
+                       if (owner == null)
+                               throw new ArgumentNullException ();
 
-               internal static void CloneInto (IGenericParameterProvider old, IGenericParameterProvider np, ImportContext context)
-               {
-                       foreach (GenericParameter gp in old.GenericParameters) {
-                               GenericParameter ngp = Clone (gp, context);
-                               np.GenericParameters.Add (ngp);
-                               CloneConstraints (gp, ngp, context);
-                       }
-               }
-
-               internal static GenericParameter Clone (GenericParameter gp, ImportContext context)
-               {
-                       GenericParameter ngp;
-                       if (gp.Owner is TypeReference)
-                               ngp = new GenericParameter (gp.m_name, context.GenericContext.Type);
-                       else if (gp.Owner is MethodReference)
-                               ngp = new GenericParameter (gp.m_name, context.GenericContext.Method);
-                       else
-                               throw new NotSupportedException ();
-
-                       ngp.Position = gp.Owner.GenericParameters.IndexOf (gp);
-                       ngp.Attributes = gp.Attributes;
-
-                       if (gp.HasCustomAttributes) {
-                               foreach (CustomAttribute ca in gp.CustomAttributes)
-                                       ngp.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-                       }
-
-                       return ngp;
-               }
-
-               static void CloneConstraints (GenericParameter gp, GenericParameter ngp, ImportContext context)
-               {
-                       if (gp.HasConstraints) {
-                               foreach (TypeReference constraint in gp.Constraints)
-                                       ngp.Constraints.Add (context.Import (constraint));
-                       }
+                       this.owner = owner;
+                       this.etype = owner.GenericParameterType == GenericParameterType.Type ? ElementType.Var : ElementType.MVar;
                }
        }
 }
index d7d65c708df9a687d4583828f9d9cf88f93a688e..89996140e724f8c5a0f313b6f1a32f1c606c6fb4 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum GenericParameterAttributes : ushort {
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs
deleted file mode 100644 (file)
index fc00972..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// GenericParameterCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class GenericParameterCollection : CollectionBase, IReflectionVisitable {
-
-               IGenericParameterProvider m_container;
-
-               public GenericParameter this [int index] {
-                       get { return List [index] as GenericParameter; }
-                       set { List [index] = value; }
-               }
-
-               public IGenericParameterProvider Container {
-                       get { return m_container; }
-               }
-
-               public GenericParameterCollection (IGenericParameterProvider container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (GenericParameter value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (GenericParameter value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (GenericParameter value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, GenericParameter value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (GenericParameter value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is GenericParameter))
-                               throw new ArgumentException ("Must be of type " + typeof (GenericParameter).FullName);
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitGenericParameterCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/HashCodeProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/HashCodeProvider.cs
deleted file mode 100644 (file)
index 6b7b80c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// HashCodeProvider.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System.Collections;
-
-       internal sealed class HashCodeProvider : IHashCodeProvider {
-
-               public static readonly HashCodeProvider Instance = new HashCodeProvider ();
-
-               HashCodeProvider ()
-               {
-               }
-
-               public int GetHashCode (object o)
-               {
-                       return o.GetHashCode ();
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs
deleted file mode 100644 (file)
index bf5e249..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// AssemblyDefinition.cs
-//
-// Author:
-//   Jb Evain (jbevain@novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System.Collections;
-
-       public interface IAnnotationProvider {
-
-               IDictionary Annotations { get; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs
deleted file mode 100644 (file)
index 3619d4e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IAssemblyResolver.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IAssemblyResolver {
-
-               AssemblyDefinition Resolve (string fullName);
-               AssemblyDefinition Resolve (AssemblyNameReference name);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs
new file mode 100644 (file)
index 0000000..361fbe4
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// IConstantProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       public interface IConstantProvider : IMetadataTokenProvider {
+
+               bool HasConstant { get; }
+               object Constant { get; set; }
+       }
+
+       static partial class Mixin {
+
+               internal static object NoValue = new object ();
+               internal static object NotResolved = new object ();
+
+               public static void ResolveConstant (
+                       this IConstantProvider self,
+                       ref object constant,
+                       ModuleDefinition module)
+               {
+                       constant = module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.ReadConstant (provider))
+                               : Mixin.NoValue;
+               }
+       }
+}
index ae379a4e3bdd5d39bfffa7ce21df69ac61d0a659..08e5f925abb9248bf7d3e35b185b529082216d81 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Collections.Generic;
 
-       using System.Reflection;
+namespace Mono.Cecil {
 
-       public interface ICustomAttributeProvider {
+       public interface ICustomAttributeProvider : IMetadataTokenProvider {
 
-               CustomAttributeCollection CustomAttributes { get; }
+               Collection<CustomAttribute> CustomAttributes { get; }
 
                bool HasCustomAttributes { get; }
        }
+
+       static partial class Mixin {
+
+               public static bool GetHasCustomAttributes (
+                       this ICustomAttributeProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.HasCustomAttributes (provider))
+                               : false;
+               }
+
+               public static Collection<CustomAttribute> GetCustomAttributes (
+                       this ICustomAttributeProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.ReadCustomAttributes (provider))
+                               : new Collection<CustomAttribute> ();
+               }
+       }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IDetailReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IDetailReader.cs
deleted file mode 100644 (file)
index ca70132..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// IDetailReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       internal interface IDetailReader {
-
-               void ReadSemantic (EventDefinition evt);
-               void ReadSemantic (PropertyDefinition prop);
-
-               void ReadMarshalSpec (ParameterDefinition param);
-               void ReadMarshalSpec (FieldDefinition field);
-
-               void ReadLayout (TypeDefinition type);
-               void ReadLayout (FieldDefinition field);
-
-               void ReadConstant (FieldDefinition field);
-               void ReadConstant (PropertyDefinition prop);
-               void ReadConstant (ParameterDefinition param);
-
-               void ReadInitialValue (FieldDefinition field);
-       }
-}
index d1cd10f24b5df63e33b6f867267c51cbe5946766..2750ad0a696b4bbc0425cdecd7f923fe33c38613 100644 (file)
@@ -1,10 +1,10 @@
 //
-// IGenericInstanceMethod.cs
+// IGenericInstance.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
        public interface IGenericInstance : IMetadataTokenProvider {
 
-               GenericArgumentCollection GenericArguments { get; }
-
                bool HasGenericArguments { get; }
+               Collection<TypeReference> GenericArguments { get; }
+       }
+
+       static partial class Mixin {
+
+               public static bool ContainsGenericParameter (this IGenericInstance self)
+               {
+                       var arguments = self.GenericArguments;
+
+                       for (int i = 0; i < arguments.Count; i++)
+                               if (arguments [i].ContainsGenericParameter)
+                                       return true;
+
+                       return false;
+               }
+
+               public static void GenericInstanceFullName (this IGenericInstance self, StringBuilder builder)
+               {
+                       builder.Append ("<");
+                       var arguments = self.GenericArguments;
+                       for (int i = 0; i < arguments.Count; i++) {
+                               if (i > 0)
+                                       builder.Append (",");
+                               builder.Append (arguments [i].FullName);
+                       }
+                       builder.Append (">");
+               }
        }
 }
index b58f6026a714d10d0e43c6ae8c36249f91dd0bc0..27d1669fcd8ffec71c822c62f09f78322303bdf5 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
        public interface IGenericParameterProvider : IMetadataTokenProvider {
 
-               GenericParameterCollection GenericParameters { get; }
-
                bool HasGenericParameters { get; }
+               bool IsDefinition { get; }
+               ModuleDefinition Module { get; }
+               Collection<GenericParameter> GenericParameters { get; }
+               GenericParameterType GenericParameterType { get; }
+       }
+
+       public enum GenericParameterType {
+               Type,
+               Method
+       }
+
+       interface IGenericContext {
+
+               bool IsDefinition { get; }
+               IGenericParameterProvider Type { get; }
+               IGenericParameterProvider Method { get; }
+       }
+
+       static partial class Mixin {
+
+               public static bool GetHasGenericParameters (
+                       this IGenericParameterProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.HasGenericParameters (provider))
+                               : false;
+               }
+
+               public static Collection<GenericParameter> GetGenericParameters (
+                       this IGenericParameterProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.ReadGenericParameters (provider))
+                               : new Collection<GenericParameter> ();
+               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs
deleted file mode 100644 (file)
index e2126b4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IHasConstant.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IHasConstant : IMetadataTokenProvider {
-
-               bool HasConstant { get; }
-               object Constant { get; set; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs
deleted file mode 100644 (file)
index 69f69d6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IHasMarshalSpec.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IHasMarshalSpec : IMetadataTokenProvider {
-
-               MarshalSpec MarshalSpec { get; set; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs
deleted file mode 100644 (file)
index 39466c3..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IHasSecurity.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IHasSecurity : IMetadataTokenProvider {
-
-               SecurityDeclarationCollection SecurityDeclarations { get; }
-
-               bool HasSecurityDeclarations { get; }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs
deleted file mode 100644 (file)
index b9ee8b0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IImporter.cs
-//
-// Author:
-//   Jb Evain (jbevain@novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IImporter {
-
-               TypeReference ImportTypeReference (TypeReference type, ImportContext context);
-               FieldReference ImportFieldReference (FieldReference field, ImportContext context);
-               MethodReference ImportMethodReference (MethodReference method, ImportContext context);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs
new file mode 100644 (file)
index 0000000..a3bba6d
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// IMarshalInfoProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       public interface IMarshalInfoProvider : IMetadataTokenProvider {
+
+               bool HasMarshalInfo { get; }
+               MarshalInfo MarshalInfo { get; set; }
+       }
+
+       static partial class Mixin {
+
+               public static bool GetHasMarshalInfo (
+                       this IMarshalInfoProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.HasMarshalInfo (provider))
+                               : false;
+               }
+
+               public static MarshalInfo GetMarshalInfo (
+                       this IMarshalInfoProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.ReadMarshalInfo (provider))
+                               : null;
+               }
+       }
+}
index e0ba5176bcf8f8c3bd42d077de5e71e45231edb3..09878f78f99e5472cd92af51340ef2e201ee2db2 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
-       public interface IMemberDefinition : IMemberReference, ICustomAttributeProvider {
+       public interface IMemberDefinition : ICustomAttributeProvider {
+
+               string Name { get; set; }
+               string FullName { get; }
 
-               new TypeDefinition DeclaringType { get; set; }
                bool IsSpecialName { get; set; }
                bool IsRuntimeSpecialName { get; set; }
+
+               TypeDefinition DeclaringType { get; set; }
+       }
+
+       static partial class Mixin {
+
+               public static bool GetAttributes (this uint self, uint attributes)
+               {
+                       return (self & attributes) != 0;
+               }
+
+               public static uint SetAttributes (this uint self, uint attributes, bool value)
+               {
+                       if (value)
+                               return self | attributes;
+
+                       return self & ~attributes;
+               }
+
+               public static bool GetMaskedAttributes (this uint self, uint mask, uint attributes)
+               {
+                       return (self & mask) == attributes;
+               }
+
+               public static uint SetMaskedAttributes (this uint self, uint mask, uint attributes, bool value)
+               {
+                       if (value) {
+                               self &= ~mask;
+                               return self | attributes;
+                       }
+
+                       return self & ~(mask & attributes);
+               }
+
+               public static bool GetAttributes (this ushort self, ushort attributes)
+               {
+                       return (self & attributes) != 0;
+               }
+
+               public static ushort SetAttributes (this ushort self, ushort attributes, bool value)
+               {
+                       if (value)
+                               return (ushort) (self | attributes);
+
+                       return (ushort) (self & ~attributes);
+               }
+
+               public static bool GetMaskedAttributes (this ushort self, ushort mask, uint attributes)
+               {
+                       return (self & mask) == attributes;
+               }
+
+               public static ushort SetMaskedAttributes (this ushort self, ushort mask, uint attributes, bool value)
+               {
+                       if (value) {
+                               self = (ushort) (self & ~mask);
+                               return (ushort) (self | attributes);
+                       }
+
+                       return (ushort) (self & ~(mask & attributes));
+               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs
deleted file mode 100644 (file)
index 016565f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IMemberReference.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IMemberReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
-
-               string Name { get; set; }
-               TypeReference DeclaringType { get; }
-       }
-}
index d0a0eacc3114dd43a979543d8d0f3c63b3fc2a7d..f0ab506e5476973a171e5e55f758f8c295db9d8e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
+       public enum MetadataScopeType {
+               AssemblyNameReference,
+               ModuleReference,
+               ModuleDefinition,
+       }
+
        public interface IMetadataScope : IMetadataTokenProvider {
+               MetadataScopeType MetadataScopeType { get; }
                string Name { get; set; }
        }
 }
index 332f1af5715e7b7813cd62a62503661a719374f1..ff777248189afbf638ce1eb15d2e5dc689a76068 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,8 +28,6 @@
 
 namespace Mono.Cecil {
 
-       using Mono.Cecil.Metadata;
-
        public interface IMetadataTokenProvider {
 
                MetadataToken MetadataToken { get; set; }
index 4acb7e2a7f4cee855e4b545528b444e91436f5ad..6bae56adca0030e91df04169455d0c4260e5aac3 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       public interface IMethodSignature {
+       public interface IMethodSignature : IMetadataTokenProvider {
 
-               bool HasParameters { get; }
                bool HasThis { get; set; }
                bool ExplicitThis { get; set; }
                MethodCallingConvention CallingConvention { get; set; }
 
-               ParameterDefinitionCollection Parameters { get; }
-               MethodReturnType ReturnType { get; }
+               bool HasParameters { get; }
+               Collection<ParameterDefinition> Parameters { get; }
+               TypeReference ReturnType { get; set; }
+               MethodReturnType MethodReturnType { get; }
+       }
+
+       static partial class Mixin {
+
+               public static void MethodSignatureFullName (this IMethodSignature self, StringBuilder builder)
+               {
+                       builder.Append ("(");
+
+                       if (self.HasParameters) {
+                               var parameters = self.Parameters;
+                               for (int i = 0; i < parameters.Count; i++) {
+                                       var parameter = parameters [i];
+                                       if (i > 0)
+                                               builder.Append (",");
+
+                                       if (parameter.ParameterType.IsSentinel)
+                                               builder.Append ("...,");
+
+                                       builder.Append (parameter.ParameterType.FullName);
+                               }
+                       }
 
-               int GetSentinel ();
+                       builder.Append (")");
+               }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs
deleted file mode 100644 (file)
index f522cf1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IReflectionStructureVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IReflectionStructureVisitable {
-
-               void Accept (IReflectionStructureVisitor visitor);
-       }
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs
deleted file mode 100644 (file)
index 81a6e3b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// IReflectionStructureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IReflectionStructureVisitor {
-
-               void VisitAssemblyDefinition (AssemblyDefinition asm);
-               void VisitAssemblyNameDefinition (AssemblyNameDefinition name);
-               void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names);
-               void VisitAssemblyNameReference (AssemblyNameReference name);
-               void VisitResourceCollection (ResourceCollection resources);
-               void VisitEmbeddedResource (EmbeddedResource res);
-               void VisitLinkedResource (LinkedResource res);
-               void VisitAssemblyLinkedResource (AssemblyLinkedResource res);
-               void VisitModuleDefinition (ModuleDefinition module);
-               void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules);
-               void VisitModuleReference (ModuleReference module);
-               void VisitModuleReferenceCollection (ModuleReferenceCollection modules);
-
-               void TerminateAssemblyDefinition (AssemblyDefinition asm);
-       }
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs
deleted file mode 100644 (file)
index ac4f706..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IReflectionVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IReflectionVisitable {
-
-               void Accept (IReflectionVisitor visitor);
-       }
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs
deleted file mode 100644 (file)
index c85633b..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// IReflectionVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IReflectionVisitor {
-
-               void VisitModuleDefinition (ModuleDefinition module);
-               void VisitTypeDefinitionCollection (TypeDefinitionCollection types);
-               void VisitTypeDefinition (TypeDefinition type);
-               void VisitTypeReferenceCollection (TypeReferenceCollection refs);
-               void VisitTypeReference (TypeReference type);
-               void VisitMemberReferenceCollection (MemberReferenceCollection members);
-               void VisitMemberReference (MemberReference member);
-               void VisitInterfaceCollection (InterfaceCollection interfaces);
-               void VisitInterface (TypeReference interf);
-               void VisitExternTypeCollection (ExternTypeCollection externs);
-               void VisitExternType (TypeReference externType);
-               void VisitOverrideCollection (OverrideCollection meth);
-               void VisitOverride (MethodReference ov);
-               void VisitNestedTypeCollection (NestedTypeCollection nestedTypes);
-               void VisitNestedType (TypeDefinition nestedType);
-               void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters);
-               void VisitParameterDefinition (ParameterDefinition parameter);
-               void VisitMethodDefinitionCollection (MethodDefinitionCollection methods);
-               void VisitMethodDefinition (MethodDefinition method);
-               void VisitConstructorCollection (ConstructorCollection ctors);
-               void VisitConstructor (MethodDefinition ctor);
-               void VisitPInvokeInfo (PInvokeInfo pinvk);
-               void VisitEventDefinitionCollection (EventDefinitionCollection events);
-               void VisitEventDefinition (EventDefinition evt);
-               void VisitFieldDefinitionCollection (FieldDefinitionCollection fields);
-               void VisitFieldDefinition (FieldDefinition field);
-               void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties);
-               void VisitPropertyDefinition (PropertyDefinition property);
-               void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls);
-               void VisitSecurityDeclaration (SecurityDeclaration secDecl);
-               void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs);
-               void VisitCustomAttribute (CustomAttribute customAttr);
-               void VisitGenericParameterCollection (GenericParameterCollection genparams);
-               void VisitGenericParameter (GenericParameter genparam);
-               void VisitMarshalSpec (MarshalSpec marshalSpec);
-
-               void TerminateModuleDefinition (ModuleDefinition module);
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs
deleted file mode 100644 (file)
index 92eac83..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IRequireResolving.cs
-//
-// Author:
-//     Jb Evain <jbevain@gmail.com>
-//
-// Copyright (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public interface IRequireResolving {
-
-               byte [] Blob { get; }
-               bool Resolved { get; }
-               bool Resolve ();
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Import.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Import.cs
new file mode 100644 (file)
index 0000000..93e700e
--- /dev/null
@@ -0,0 +1,566 @@
+//
+// Import.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using SR = System.Reflection;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+       enum ImportGenericKind {
+               Definition,
+               Open,
+       }
+
+       class MetadataImporter {
+
+               readonly ModuleDefinition module;
+
+               public MetadataImporter (ModuleDefinition module)
+               {
+                       this.module = module;
+               }
+
+#if !CF
+               static readonly Dictionary<Type, ElementType> type_etype_mapping = new Dictionary<Type, ElementType> (18) {
+                       { typeof (void), ElementType.Void },
+                       { typeof (bool), ElementType.Boolean },
+                       { typeof (char), ElementType.Char },
+                       { typeof (sbyte), ElementType.I1 },
+                       { typeof (byte), ElementType.U1 },
+                       { typeof (short), ElementType.I2 },
+                       { typeof (ushort), ElementType.U2 },
+                       { typeof (int), ElementType.I4 },
+                       { typeof (uint), ElementType.U4 },
+                       { typeof (long), ElementType.I8 },
+                       { typeof (ulong), ElementType.U8 },
+                       { typeof (float), ElementType.R4 },
+                       { typeof (double), ElementType.R8 },
+                       { typeof (string), ElementType.String },
+                       { typeof (TypedReference), ElementType.TypedByRef },
+                       { typeof (IntPtr), ElementType.I },
+                       { typeof (UIntPtr), ElementType.U },
+                       { typeof (object), ElementType.Object },
+               };
+
+               public TypeReference ImportType (Type type, IGenericContext context)
+               {
+                       return ImportType (type, context, ImportGenericKind.Open);
+               }
+
+               public TypeReference ImportType (Type type, IGenericContext context, ImportGenericKind import_kind)
+               {
+                       if (IsTypeSpecification (type) || ImportOpenGenericType (type, import_kind))
+                               return ImportTypeSpecification (type, context);
+
+                       var reference = new TypeReference (
+                               string.Empty,
+                               type.Name,
+                               module,
+                               ImportScope (type.Assembly),
+                               type.IsValueType);
+
+                       reference.etype = ImportElementType (type);
+
+                       if (IsNestedType (type))
+                               reference.DeclaringType = ImportType (type.DeclaringType, context, import_kind);
+                       else
+                               reference.Namespace = type.Namespace;
+
+                       if (type.IsGenericType)
+                               ImportGenericParameters (reference, type.GetGenericArguments ());
+
+                       return reference;
+               }
+
+               static bool ImportOpenGenericType (Type type, ImportGenericKind import_kind)
+               {
+                       return type.IsGenericType && type.IsGenericTypeDefinition && import_kind == ImportGenericKind.Open;
+               }
+
+               static bool ImportOpenGenericMethod (SR.MethodBase method, ImportGenericKind import_kind)
+               {
+                       return method.IsGenericMethod && method.IsGenericMethodDefinition && import_kind == ImportGenericKind.Open;
+               }
+
+               static bool IsNestedType (Type type)
+               {
+#if !SILVERLIGHT
+                       return type.IsNested;
+#else
+                       return type.DeclaringType != null;
+#endif
+               }
+
+               TypeReference ImportTypeSpecification (Type type, IGenericContext context)
+               {
+                       if (type.IsByRef)
+                               return new ByReferenceType (ImportType (type.GetElementType (), context));
+
+                       if (type.IsPointer)
+                               return new PointerType (ImportType (type.GetElementType (), context));
+
+                       if (type.IsArray)
+                               return new ArrayType (ImportType (type.GetElementType (), context), type.GetArrayRank ());
+
+                       if (type.IsGenericType)
+                               return ImportGenericInstance (type, context);
+
+                       if (type.IsGenericParameter)
+                               return ImportGenericParameter (type, context);
+
+                       throw new NotSupportedException (type.FullName);
+               }
+
+               static TypeReference ImportGenericParameter (Type type, IGenericContext context)
+               {
+                       if (context == null)
+                               throw new InvalidOperationException ();
+
+                       var owner = type.DeclaringMethod != null
+                               ? context.Method
+                               : context.Type;
+
+                       if (owner == null)
+                               throw new InvalidOperationException ();
+
+                       return owner.GenericParameters [type.GenericParameterPosition];
+               }
+
+               TypeReference ImportGenericInstance (Type type, IGenericContext context)
+               {
+                       var element_type = ImportType (type.GetGenericTypeDefinition (), context, ImportGenericKind.Definition);
+                       var instance = new GenericInstanceType (element_type);
+                       var arguments = type.GetGenericArguments ();
+                       var instance_arguments = instance.GenericArguments;
+
+                       for (int i = 0; i < arguments.Length; i++)
+                               instance_arguments.Add (ImportType (arguments [i], context ?? element_type));
+
+                       return instance;
+               }
+
+               static bool IsTypeSpecification (Type type)
+               {
+                       return type.HasElementType
+                               || IsGenericInstance (type)
+                               || type.IsGenericParameter;
+               }
+
+               static bool IsGenericInstance (Type type)
+               {
+                       return type.IsGenericType && !type.IsGenericTypeDefinition;
+               }
+
+               static ElementType ImportElementType (Type type)
+               {
+                       ElementType etype;
+                       if (!type_etype_mapping.TryGetValue (type, out etype))
+                               return ElementType.None;
+
+                       return etype;
+               }
+
+               AssemblyNameReference ImportScope (SR.Assembly assembly)
+               {
+                       AssemblyNameReference scope;
+#if !SILVERLIGHT
+                       var name = assembly.GetName ();
+
+                       if (TryGetAssemblyNameReference (name, out scope))
+                               return scope;
+
+                       scope = new AssemblyNameReference (name.Name, name.Version) {
+                               Culture = name.CultureInfo.Name,
+                               PublicKeyToken = name.GetPublicKeyToken (),
+                               HashAlgorithm = (AssemblyHashAlgorithm) name.HashAlgorithm,
+                       };
+
+                       module.AssemblyReferences.Add (scope);
+
+                       return scope;
+#else
+                       var name = AssemblyNameReference.Parse (assembly.FullName);
+
+                       if (TryGetAssemblyNameReference (name, out scope))
+                               return scope;
+
+                       module.AssemblyReferences.Add (name);
+
+                       return name;
+#endif
+               }
+
+#if !SILVERLIGHT
+               bool TryGetAssemblyNameReference (SR.AssemblyName name, out AssemblyNameReference assembly_reference)
+               {
+                       var references = module.AssemblyReferences;
+
+                       for (int i = 0; i < references.Count; i++) {
+                               var reference = references [i];
+                               if (name.FullName != reference.FullName) // TODO compare field by field
+                                       continue;
+
+                               assembly_reference = reference;
+                               return true;
+                       }
+
+                       assembly_reference = null;
+                       return false;
+               }
+#endif
+
+               public FieldReference ImportField (SR.FieldInfo field, IGenericContext context)
+               {
+                       var declaring_type = ImportType (field.DeclaringType, context);
+
+                       if (IsGenericInstance (field.DeclaringType))
+                               field = ResolveFieldDefinition (field);
+
+                       return new FieldReference {
+                               Name = field.Name,
+                               DeclaringType = declaring_type,
+                               FieldType = ImportType (field.FieldType, context ?? declaring_type),
+                       };
+               }
+
+               static SR.FieldInfo ResolveFieldDefinition (SR.FieldInfo field)
+               {
+#if !SILVERLIGHT
+                       return field.Module.ResolveField (field.MetadataToken);
+#else
+                       return field.DeclaringType.GetGenericTypeDefinition ().GetField (field.Name,
+                               SR.BindingFlags.Public
+                               | SR.BindingFlags.NonPublic
+                               | (field.IsStatic ? SR.BindingFlags.Static : SR.BindingFlags.Instance));
+#endif
+               }
+
+               public MethodReference ImportMethod (SR.MethodBase method, IGenericContext context, ImportGenericKind import_kind)
+               {
+                       if (IsMethodSpecification (method) || ImportOpenGenericMethod (method, import_kind))
+                               return ImportMethodSpecification (method, context);
+
+                       var declaring_type = ImportType (method.DeclaringType, context);
+
+                       if (IsGenericInstance (method.DeclaringType))
+                               method = method.Module.ResolveMethod (method.MetadataToken);
+
+                       var reference = new MethodReference {
+                               Name = method.Name,
+                               HasThis = HasCallingConvention (method, SR.CallingConventions.HasThis),
+                               ExplicitThis = HasCallingConvention (method, SR.CallingConventions.ExplicitThis),
+                               DeclaringType = ImportType (method.DeclaringType, context, ImportGenericKind.Definition),
+                       };
+
+                       if (HasCallingConvention (method, SR.CallingConventions.VarArgs))
+                               reference.CallingConvention &= MethodCallingConvention.VarArg;
+
+                       if (method.IsGenericMethod)
+                               ImportGenericParameters (reference, method.GetGenericArguments ());
+
+                       var method_info = method as SR.MethodInfo;
+                       reference.ReturnType = method_info != null
+                               ? ImportType (method_info.ReturnType, context ?? reference)
+                               : ImportType (typeof (void), null);
+
+                       var parameters = method.GetParameters ();
+                       var reference_parameters = reference.Parameters;
+
+                       for (int i = 0; i < parameters.Length; i++)
+                               reference_parameters.Add (
+                                       new ParameterDefinition (ImportType (parameters [i].ParameterType, context ?? reference)));
+
+                       reference.DeclaringType = declaring_type;
+
+                       return reference;
+               }
+
+               static void ImportGenericParameters (IGenericParameterProvider provider, Type [] arguments)
+               {
+                       var provider_parameters = provider.GenericParameters;
+
+                       for (int i = 0; i < arguments.Length; i++)
+                               provider_parameters.Add (new GenericParameter (arguments [i].Name, provider));
+               }
+
+               static bool IsMethodSpecification (SR.MethodBase method)
+               {
+                       return method.IsGenericMethod && !method.IsGenericMethodDefinition;
+               }
+
+               MethodReference ImportMethodSpecification (SR.MethodBase method, IGenericContext context)
+               {
+                       var method_info = method as SR.MethodInfo;
+                       if (method_info == null)
+                               throw new InvalidOperationException ();
+
+                       var element_method = ImportMethod (method_info.GetGenericMethodDefinition (), context, ImportGenericKind.Definition);
+                       var instance = new GenericInstanceMethod (element_method);
+                       var arguments = method.GetGenericArguments ();
+                       var instance_arguments = instance.GenericArguments;
+
+                       for (int i = 0; i < arguments.Length; i++)
+                               instance_arguments.Add (ImportType (arguments [i], context ?? element_method));
+
+                       return instance;
+               }
+
+               static bool HasCallingConvention (SR.MethodBase method, SR.CallingConventions conventions)
+               {
+                       return (method.CallingConvention & conventions) != 0;
+               }
+#endif
+
+               public TypeReference ImportType (TypeReference type, IGenericContext context)
+               {
+                       if (type.IsTypeSpecification ())
+                               return ImportTypeSpecification (type, context);
+
+                       var reference = new TypeReference (
+                               type.Namespace,
+                               type.Name,
+                               module,
+                               ImportScope (type.Scope),
+                               type.IsValueType);
+
+                       MetadataSystem.TryProcessPrimitiveType (reference);
+
+                       if (type.IsNested)
+                               reference.DeclaringType = ImportType (type.DeclaringType, context);
+
+                       if (type.HasGenericParameters)
+                               ImportGenericParameters (reference, type);
+
+                       return reference;
+               }
+
+               IMetadataScope ImportScope (IMetadataScope scope)
+               {
+                       switch (scope.MetadataScopeType) {
+                       case MetadataScopeType.AssemblyNameReference:
+                               return ImportAssemblyName ((AssemblyNameReference) scope);
+                       case MetadataScopeType.ModuleDefinition:
+                               return ImportAssemblyName (((ModuleDefinition) scope).Assembly.Name);
+                       case MetadataScopeType.ModuleReference:
+                               throw new NotImplementedException ();
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               AssemblyNameReference ImportAssemblyName (AssemblyNameReference name)
+               {
+                       AssemblyNameReference reference;
+                       if (TryGetAssemblyNameReference (name, out reference))
+                               return reference;
+
+                       reference = new AssemblyNameReference (name.Name, name.Version) {
+                               Culture = name.Culture,
+                               HashAlgorithm = name.HashAlgorithm,
+                       };
+
+                       var pk_token = !name.PublicKeyToken.IsNullOrEmpty ()
+                               ? new byte [name.PublicKeyToken.Length]
+                               : Empty<byte>.Array;
+
+                       if (pk_token.Length > 0)
+                               Buffer.BlockCopy (name.PublicKeyToken, 0, pk_token, 0, pk_token.Length);
+
+                       reference.PublicKeyToken = pk_token;
+
+                       module.AssemblyReferences.Add (reference);
+
+                       return reference;
+               }
+
+               bool TryGetAssemblyNameReference (AssemblyNameReference name_reference, out AssemblyNameReference assembly_reference)
+               {
+                       var references = module.AssemblyReferences;
+
+                       for (int i = 0; i < references.Count; i++) {
+                               var reference = references [i];
+                               if (name_reference.FullName != reference.FullName) // TODO compare field by field
+                                       continue;
+
+                               assembly_reference = reference;
+                               return true;
+                       }
+
+                       assembly_reference = null;
+                       return false;
+               }
+
+               static void ImportGenericParameters (IGenericParameterProvider imported, IGenericParameterProvider original)
+               {
+                       var parameters = original.GenericParameters;
+                       var imported_parameters = imported.GenericParameters;
+
+                       for (int i = 0; i < parameters.Count; i++)
+                               imported_parameters.Add (new GenericParameter (parameters [i].Name, imported));
+               }
+
+               TypeReference ImportTypeSpecification (TypeReference type, IGenericContext context)
+               {
+                       switch (type.etype) {
+                       case ElementType.SzArray:
+                               var vector = (ArrayType) type;
+                               return new ArrayType (ImportType (vector.ElementType, context));
+                       case ElementType.Ptr:
+                               var pointer = (PointerType) type;
+                               return new PointerType (ImportType (pointer.ElementType, context));
+                       case ElementType.ByRef:
+                               var byref = (ByReferenceType) type;
+                               return new ByReferenceType (ImportType (byref.ElementType, context));
+                       case ElementType.Pinned:
+                               var pinned = (PinnedType) type;
+                               return new PinnedType (ImportType (pinned.ElementType, context));
+                       case ElementType.Sentinel:
+                               var sentinel = (SentinelType) type;
+                               return new SentinelType (ImportType (sentinel.ElementType, context));
+                       case ElementType.CModOpt:
+                               var modopt = (OptionalModifierType) type;
+                               return new OptionalModifierType (
+                                       ImportType (modopt.ModifierType, context),
+                                       ImportType (modopt.ElementType, context));
+                       case ElementType.CModReqD:
+                               var modreq = (RequiredModifierType) type;
+                               return new RequiredModifierType (
+                                       ImportType (modreq.ModifierType, context),
+                                       ImportType (modreq.ElementType, context));
+                       case ElementType.Array:
+                               var array = (ArrayType) type;
+                               var imported_array = new ArrayType (ImportType (array.ElementType, context));
+                               if (array.IsVector)
+                                       return imported_array;
+
+                               var dimensions = array.Dimensions;
+                               var imported_dimensions = imported_array.Dimensions;
+
+                               imported_dimensions.Clear ();
+
+                               for (int i = 0; i < dimensions.Count; i++) {
+                                       var dimension = dimensions [i];
+
+                                       imported_dimensions.Add (new ArrayDimension (dimension.LowerBound, dimension.UpperBound));
+                               }
+
+                               return imported_array;
+                       case ElementType.GenericInst:
+                               var instance = (GenericInstanceType) type;
+                               var element_type = ImportType (instance.ElementType, context);
+                               var imported_instance = new GenericInstanceType (element_type);
+
+                               var arguments = instance.GenericArguments;
+                               var imported_arguments = imported_instance.GenericArguments;
+
+                               for (int i = 0; i < arguments.Count; i++)
+                                       imported_arguments.Add (ImportType (arguments [i], context));
+
+                               return imported_instance;
+                       case ElementType.Var:
+                               if (context == null || context.Type == null)
+                                       throw new InvalidOperationException ();
+
+                               return ((TypeReference) context.Type).GetElementType ().GenericParameters [((GenericParameter) type).Position];
+                       case ElementType.MVar:
+                               if (context == null || context.Method == null)
+                                       throw new InvalidOperationException ();
+
+                               return context.Method.GenericParameters [((GenericParameter) type).Position];
+                       }
+
+                       throw new NotSupportedException (type.etype.ToString ());
+               }
+
+               public FieldReference ImportField (FieldReference field, IGenericContext context)
+               {
+                       var declaring_type = ImportType (field.DeclaringType, context);
+
+                       return new FieldReference {
+                               Name = field.Name,
+                               DeclaringType = declaring_type,
+                               FieldType = ImportType (field.FieldType, context ?? declaring_type),
+                       };
+               }
+
+               public MethodReference ImportMethod (MethodReference method, IGenericContext context)
+               {
+                       if (method.IsGenericInstance)
+                               return ImportMethodSpecification (method, context);
+
+                       var declaring_type = ImportType (method.DeclaringType, context);
+
+                       var reference = new MethodReference {
+                               Name = method.Name,
+                               HasThis = method.HasThis,
+                               ExplicitThis = method.ExplicitThis,
+                               DeclaringType = declaring_type,
+                       };
+
+                       reference.CallingConvention = method.CallingConvention;
+
+                       if (method.HasGenericParameters)
+                               ImportGenericParameters (reference, method);
+
+                       reference.ReturnType = ImportType (method.ReturnType, context ?? reference);
+
+                       if (!method.HasParameters)
+                               return reference;
+
+                       var reference_parameters = reference.Parameters;
+
+                       var parameters = method.Parameters;
+                       for (int i = 0; i < parameters.Count; i++)
+                               reference_parameters.Add (
+                                       new ParameterDefinition (ImportType (parameters [i].ParameterType, context ?? reference)));
+
+                       return reference;
+               }
+
+               MethodSpecification ImportMethodSpecification (MethodReference method, IGenericContext context)
+               {
+                       if (!method.IsGenericInstance)
+                               throw new NotSupportedException ();
+
+                       var instance = (GenericInstanceMethod) method;
+                       var element_method = ImportMethod (instance.ElementMethod, context);
+                       var imported_instance = new GenericInstanceMethod (element_method);
+
+                       var arguments = instance.GenericArguments;
+                       var imported_arguments = imported_instance.GenericArguments;
+
+                       for (int i = 0; i < arguments.Count; i++)
+                               imported_arguments.Add (ImportType (arguments [i], context));
+
+                       return imported_instance;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs
deleted file mode 100644 (file)
index 1bec14d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ImportContext.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2006 Evaluant RC S.A.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public class ImportContext {
-
-               GenericContext m_genContext;
-               IImporter m_importer;
-
-               public GenericContext GenericContext {
-                       get { return m_genContext; }
-                       set { m_genContext = value; }
-               }
-
-               public ImportContext (IImporter importer)
-               {
-                       m_genContext = new GenericContext ();
-                       m_importer = importer;
-               }
-
-               public ImportContext (IImporter importer, IGenericParameterProvider provider)
-               {
-                       m_importer = importer;
-                       m_genContext = new GenericContext (provider);
-               }
-
-               public TypeReference Import (TypeReference type)
-               {
-                       return m_importer.ImportTypeReference (type, this);
-               }
-
-               public MethodReference Import (MethodReference meth)
-               {
-                       return m_importer.ImportMethodReference (meth, this);
-               }
-
-               public FieldReference Import (FieldReference field)
-               {
-                       return m_importer.ImportFieldReference (field, this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs
deleted file mode 100644 (file)
index 9999680..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// InterfaceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class InterfaceCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public TypeReference this [int index] {
-                       get { return List [index] as TypeReference; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public InterfaceCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (TypeReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (TypeReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, TypeReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (TypeReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is TypeReference))
-                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitInterfaceCollection (this);
-               }
-       }
-}
index 09d45880fa12cb46e0a43bbb30c2f483e7a1f643..a5530fc13c8912af767c10d42e2529e76f1bcfa2 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,28 +30,31 @@ namespace Mono.Cecil {
 
        public sealed class LinkedResource : Resource {
 
-               byte [] m_hash;
-               string m_file;
+               internal byte [] hash;
+               string file;
 
                public byte [] Hash {
-                       get { return m_hash; }
-                       set { m_hash = value; }
+                       get { return hash; }
                }
 
                public string File {
-                       get { return m_file; }
-                       set { m_file = value; }
+                       get { return file; }
+                       set { file = value; }
                }
 
-               public LinkedResource (string name, ManifestResourceAttributes flags, string file) :
-                       base (name, flags)
+               public override ResourceType ResourceType {
+                       get { return ResourceType.Linked; }
+               }
+
+               public LinkedResource (string name, ManifestResourceAttributes flags)
+                       : base (name, flags)
                {
-                       m_file = file;
                }
 
-               public override void Accept (IReflectionStructureVisitor visitor)
+               public LinkedResource (string name, ManifestResourceAttributes flags, string file)
+                       : base (name, flags)
                {
-                       visitor.VisitLinkedResource (this);
+                       this.file = file;
                }
        }
 }
index 1d77f9f10c85fae1423c3a4499848c64e0184d25..d72d1d0c74192492d2b46d72adc24dc54c516677 100644 (file)
@@ -1,10 +1,10 @@
 //
-// ManigestResourceAttributes.cs
+// ManifestResourceAttributes.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
-       public enum ManifestResourceAttributes {
+       public enum ManifestResourceAttributes : uint {
                VisibilityMask  = 0x0007,
                Public                  = 0x0001,       // The resource is exported from the Assembly
                Private                 = 0x0002         // The resource is private to the Assembly
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs
new file mode 100644 (file)
index 0000000..1fce23a
--- /dev/null
@@ -0,0 +1,171 @@
+//
+// MarshalInfo.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+       public class MarshalInfo {
+
+               internal NativeType native;
+
+               public NativeType NativeType {
+                       get { return native; }
+                       set { native = value; }
+               }
+
+               public MarshalInfo (NativeType native)
+               {
+                       this.native = native;
+               }
+       }
+
+       public sealed class ArrayMarshalInfo : MarshalInfo {
+
+               internal NativeType element_type;
+               internal int size_parameter_index;
+               internal int size;
+               internal int size_parameter_multiplier;
+
+               public NativeType ElementType {
+                       get { return element_type; }
+                       set { element_type = value; }
+               }
+
+               public int SizeParameterIndex {
+                       get { return size_parameter_index; }
+                       set { size_parameter_index = value; }
+               }
+
+               public int Size {
+                       get { return size; }
+                       set { size = value; }
+               }
+
+               public int SizeParameterMultiplier {
+                       get { return size_parameter_multiplier; }
+                       set { size_parameter_multiplier = value; }
+               }
+
+               public ArrayMarshalInfo ()
+                       : base (NativeType.Array)
+               {
+                       element_type = NativeType.None;
+                       size_parameter_index = -1;
+                       size = -1;
+                       size_parameter_multiplier = -1;
+               }
+       }
+
+       public sealed class CustomMarshalInfo : MarshalInfo {
+
+               internal Guid guid;
+               internal string unmanaged_type;
+               internal TypeReference managed_type;
+               internal string cookie;
+
+               public Guid Guid {
+                       get { return guid; }
+                       set { guid = value; }
+               }
+
+               public string UnmanagedType {
+                       get { return unmanaged_type; }
+                       set { unmanaged_type = value; }
+               }
+
+               public TypeReference ManagedType {
+                       get { return managed_type; }
+                       set { managed_type = value; }
+               }
+
+               public string Cookie {
+                       get { return cookie; }
+                       set { cookie = value; }
+               }
+
+               public CustomMarshalInfo ()
+                       : base (NativeType.CustomMarshaler)
+               {
+               }
+       }
+
+       public sealed class SafeArrayMarshalInfo : MarshalInfo {
+
+               internal VariantType element_type;
+
+               public VariantType ElementType {
+                       get { return element_type; }
+                       set { element_type = value; }
+               }
+
+               public SafeArrayMarshalInfo ()
+                       : base (NativeType.SafeArray)
+               {
+                       element_type = VariantType.None;
+               }
+       }
+
+       public sealed class FixedArrayMarshalInfo : MarshalInfo {
+
+               internal NativeType element_type;
+               internal int size;
+
+               public NativeType ElementType {
+                       get { return element_type; }
+                       set { element_type = value; }
+               }
+
+               public int Size {
+                       get { return size; }
+                       set { size = value; }
+               }
+
+               public FixedArrayMarshalInfo ()
+                       : base (NativeType.FixedArray)
+               {
+                       element_type = NativeType.None;
+               }
+       }
+
+       public sealed class FixedSysStringMarshalInfo : MarshalInfo {
+
+               internal int size;
+
+               public int Size {
+                       get { return size; }
+                       set { size = value; }
+               }
+
+               public FixedSysStringMarshalInfo ()
+                       : base (NativeType.FixedSysString)
+               {
+                       size = -1;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs
deleted file mode 100644 (file)
index 0929446..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// MarshalDesc.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-
-       public class MarshalSpec {
-
-               NativeType m_natIntr;
-               IHasMarshalSpec m_container;
-
-               public NativeType NativeIntrinsic {
-                       get { return m_natIntr; }
-                       set { m_natIntr = value; }
-               }
-
-               public IHasMarshalSpec Container {
-                       get { return m_container; }
-                       set { m_container = value; }
-               }
-
-               public MarshalSpec (NativeType natIntr, IHasMarshalSpec container)
-               {
-                       m_natIntr = natIntr;
-                       m_container = container;
-               }
-
-               public virtual void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitMarshalSpec (this);
-               }
-
-               public virtual MarshalSpec CloneInto (IHasMarshalSpec container)
-               {
-                       return new MarshalSpec (m_natIntr, container);
-               }
-       }
-
-       public sealed class ArrayMarshalSpec : MarshalSpec {
-
-               NativeType m_elemType;
-               int m_paramNum;
-               int m_elemMult;
-               int m_numElem;
-
-               public NativeType ElemType {
-                       get { return m_elemType; }
-                       set { m_elemType = value; }
-               }
-
-               public int ParamNum {
-                       get { return m_paramNum; }
-                       set { m_paramNum = value; }
-               }
-
-               public int ElemMult {
-                       get { return m_elemMult; }
-                       set { m_elemMult = value; }
-               }
-
-               public int NumElem {
-                       get { return m_numElem; }
-                       set { m_numElem = value; }
-               }
-
-               public ArrayMarshalSpec (IHasMarshalSpec container) : base (NativeType.ARRAY, container)
-               {
-               }
-
-               public override MarshalSpec CloneInto (IHasMarshalSpec container)
-               {
-                       ArrayMarshalSpec spec = new ArrayMarshalSpec (container);
-                       spec.m_elemType = m_elemType;
-                       spec.m_paramNum = m_paramNum;
-                       spec.m_elemMult = m_elemMult;
-                       spec.m_numElem = m_numElem;
-                       return spec;
-               }
-       }
-
-       public sealed class CustomMarshalerSpec : MarshalSpec {
-
-               Guid m_guid;
-               string m_unmanagedType;
-               string m_managedType;
-               string m_cookie;
-
-               public Guid Guid {
-                       get { return m_guid; }
-                       set { m_guid = value; }
-               }
-
-               public String UnmanagedType {
-                       get { return m_unmanagedType; }
-                       set { m_unmanagedType = value; }
-               }
-
-               public string ManagedType {
-                       get { return m_managedType; }
-                       set { m_managedType = value; }
-               }
-
-               public string Cookie {
-                       get { return m_cookie; }
-                       set { m_cookie = value; }
-               }
-
-               public CustomMarshalerSpec (IHasMarshalSpec container) : base (NativeType.CUSTOMMARSHALER, container)
-               {
-               }
-
-               public override MarshalSpec CloneInto (IHasMarshalSpec container)
-               {
-                       CustomMarshalerSpec spec = new CustomMarshalerSpec (container);
-                       spec.m_guid = m_guid;
-                       spec.m_unmanagedType = m_unmanagedType;
-                       spec.m_managedType = m_managedType;
-                       spec.m_cookie = m_cookie;
-                       return spec;
-               }
-       }
-
-       public sealed class SafeArraySpec : MarshalSpec {
-
-               private VariantType m_elemType;
-
-               public VariantType ElemType {
-                       get { return m_elemType; }
-                       set { m_elemType = value; }
-               }
-
-               public SafeArraySpec (IHasMarshalSpec container) : base (NativeType.SAFEARRAY, container)
-               {
-               }
-
-               public override MarshalSpec CloneInto(IHasMarshalSpec container)
-               {
-                       SafeArraySpec spec = new SafeArraySpec  (container);
-                       spec.m_elemType = m_elemType;
-                       return spec;
-               }
-       }
-
-       public sealed class FixedArraySpec : MarshalSpec {
-
-               private int m_numElem;
-               private NativeType m_elemType;
-
-               public int NumElem {
-                       get { return m_numElem; }
-                       set { m_numElem = value; }
-               }
-
-               public NativeType ElemType {
-                       get { return m_elemType; }
-                       set { m_elemType = value; }
-               }
-
-               public FixedArraySpec (IHasMarshalSpec container) : base (NativeType.FIXEDARRAY, container)
-               {
-               }
-
-               public override MarshalSpec CloneInto (IHasMarshalSpec container)
-               {
-                       FixedArraySpec spec = new FixedArraySpec (container);
-                       spec.m_numElem = m_numElem;
-                       spec.m_elemType = m_elemType;
-                       return spec;
-               }
-       }
-
-       public sealed class FixedSysStringSpec : MarshalSpec {
-
-               private int m_size;
-
-               public int Size {
-                       get { return m_size; }
-                       set { m_size = value; }
-               }
-
-               public FixedSysStringSpec (IHasMarshalSpec container) : base (NativeType.FIXEDSYSSTRING, container)
-               {
-               }
-
-               public override MarshalSpec CloneInto (IHasMarshalSpec container)
-               {
-                       FixedSysStringSpec spec = new FixedSysStringSpec (container);
-                       spec.m_size = m_size;
-                       return spec;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..1e70302
--- /dev/null
@@ -0,0 +1,92 @@
+//
+// MemberDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil {
+
+       class MemberDefinitionCollection<T> : Collection<T> where T : IMemberDefinition {
+
+               TypeDefinition container;
+
+               internal MemberDefinitionCollection (TypeDefinition container)
+               {
+                       this.container = container;
+               }
+
+               internal MemberDefinitionCollection (TypeDefinition container, int capacity)
+                       : base (capacity)
+               {
+                       this.container = container;
+               }
+
+               protected override void OnAdd (T item, int index)
+               {
+                       Attach (item);
+               }
+
+               protected sealed override void OnSet (T item, int index)
+               {
+                       Attach (item);
+               }
+
+               protected sealed override void OnInsert (T item, int index)
+               {
+                       Attach (item);
+               }
+
+               protected sealed override void OnRemove (T item, int index)
+               {
+                       Detach (item);
+               }
+
+               protected sealed override void OnClear ()
+               {
+                       foreach (var definition in this)
+                               Detach (definition);
+               }
+
+               void Attach (T element)
+               {
+                       if (element.DeclaringType == container)
+                               return;
+
+                       if (element.DeclaringType != null)
+                               throw new ArgumentException ("Member already attached");
+
+                       element.DeclaringType = this.container;
+               }
+
+               static void Detach (T element)
+               {
+                       element.DeclaringType = null;
+               }
+       }
+}
index 95fcb69772698759d93020baaebc3953b30271cf..b3edf39972c755b6d5f1e13578f1b891ef5a4ce0 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
-       using System.Collections;
+       public abstract class MemberReference : IMetadataTokenProvider {
 
-       using Mono.Cecil.Metadata;
+               string name;
+               TypeReference declaring_type;
 
-       public abstract class MemberReference : IMemberReference {
-
-               string m_name;
-               TypeReference m_decType;
-               MetadataToken m_token;
-               IDictionary m_annotations;
+               internal MetadataToken token;
 
                public virtual string Name {
-                       get { return m_name; }
-                       set { m_name = value; }
+                       get { return name; }
+                       set { name = value; }
+               }
+
+               public abstract string FullName {
+                       get;
                }
 
                public virtual TypeReference DeclaringType {
-                       get { return m_decType; }
-                       set { m_decType = value; }
+                       get { return declaring_type; }
+                       set { declaring_type = value; }
                }
 
                public MetadataToken MetadataToken {
-                       get { return m_token; }
-                       set { m_token = value; }
+                       get { return token; }
+                       set { token = value; }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
+               internal bool HasImage {
                        get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
+                               var module = Module;
+                               if (module == null)
+                                       return false;
+
+                               return module.HasImage;
                        }
                }
 
-               public MemberReference (string name)
+               public virtual ModuleDefinition Module {
+                       get { return declaring_type != null ? declaring_type.Module : null; }
+               }
+
+               public virtual bool IsDefinition {
+                       get { return false; }
+               }
+
+               internal virtual bool ContainsGenericParameter {
+                       get { return declaring_type != null && declaring_type.ContainsGenericParameter; }
+               }
+
+               internal MemberReference ()
                {
-                       m_name = name;
                }
 
-               public override string ToString ()
+               internal MemberReference (string name)
                {
-                       if (m_decType == null)
-                               return m_name;
+                       this.name = name ?? string.Empty;
+               }
 
-                       return string.Concat (m_decType.FullName, "::", m_name);
+               internal string MemberFullName ()
+               {
+                       if (declaring_type == null)
+                               return name;
+
+                       return declaring_type.FullName + "::" + name;
                }
 
-               public virtual void Accept (IReflectionVisitor visitor)
+               public override string ToString ()
                {
+                       return FullName;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs
deleted file mode 100644 (file)
index fd69d6c..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// MemberReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class MemberReferenceCollection : CollectionBase, IReflectionVisitable {
-
-               ModuleDefinition m_container;
-
-               public MemberReference this [int index] {
-                       get { return List [index] as MemberReference; }
-                       set { List [index] = value; }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public MemberReferenceCollection (ModuleDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (MemberReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (MemberReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (MemberReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, MemberReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (MemberReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is MemberReference))
-                               throw new ArgumentException ("Must be of type " + typeof (MemberReference).FullName);
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitMemberReferenceCollection (this);
-               }
-       }
-}
index af014bc60838a614a748108319e82b889efd20ed..1cfddb98952ff072963c8414d133aa0fcbe909ca 100644 (file)
@@ -1,11 +1,10 @@
-//
+//
 // MetadataResolver.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2008 Jb Evain (http://evain.net)
-// (C) 2008 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 //
 
 using System;
-using System.Collections;
-
-namespace Mono.Cecil {
+using System.Collections.Generic;
 
-       class MetadataResolver {
+using Mono.Collections.Generic;
 
-               AssemblyDefinition assembly;
+namespace Mono.Cecil {
 
-               public IAssemblyResolver AssemblyResolver {
-                       get { return assembly.Resolver; }
-               }
+       public interface IAssemblyResolver {
+               AssemblyDefinition Resolve (AssemblyNameReference name);
+               AssemblyDefinition Resolve (string fullName);
+       }
 
-               public MetadataResolver (AssemblyDefinition assembly)
-               {
-                       this.assembly = assembly;
-               }
+       static class MetadataResolver {
 
-               public TypeDefinition Resolve (TypeReference type)
+               public static TypeDefinition Resolve (IAssemblyResolver resolver, TypeReference type)
                {
-                       type = type.GetOriginalType ();
-
-                       if (type is TypeDefinition)
-                               return (TypeDefinition) type;
+                       type = type.GetElementType ();
 
-                       AssemblyNameReference reference = type.Scope as AssemblyNameReference;
-                       if (reference != null) {
-                               AssemblyDefinition assembly = AssemblyResolver.Resolve (reference);
+                       var scope = type.Scope;
+                       switch (scope.MetadataScopeType) {
+                       case MetadataScopeType.AssemblyNameReference:
+                               var assembly = resolver.Resolve ((AssemblyNameReference) scope);
                                if (assembly == null)
                                        return null;
 
-                               return assembly.MainModule.Types [type.FullName];
+                               return GetType (assembly.MainModule, type);
+                       case MetadataScopeType.ModuleDefinition:
+                               return GetType ((ModuleDefinition) scope, type);
+                       case MetadataScopeType.ModuleReference:
+                               var modules = type.Module.Assembly.Modules;
+                               var module_ref = (ModuleReference) scope;
+                               for (int i = 0; i < modules.Count; i++) {
+                                       var netmodule = modules [i];
+                                       if (netmodule.Name == module_ref.Name)
+                                               return GetType (netmodule, type);
+                               }
+                               break;
                        }
 
-                       ModuleDefinition module = type.Scope as ModuleDefinition;
-                       if (module != null)
-                               return module.Types [type.FullName];
+                       throw new NotSupportedException ();
+               }
 
-                       ModuleReference mod_reference = type.Scope as ModuleReference;
-                       if (mod_reference != null) {
-                               foreach (ModuleDefinition netmodule in type.Module.Assembly.Modules)
-                                       if (netmodule.Name == mod_reference.Name)
-                                               return netmodule.Types [type.FullName];
-                       }
+               static TypeDefinition GetType (ModuleDefinition module, TypeReference type)
+               {
+                       if (!type.IsNested)
+                               return module.GetType (type.Namespace, type.Name);
+
+                       var declaring_type = type.DeclaringType.Resolve ();
+                       if (declaring_type == null)
+                               return null;
 
-                       throw new NotImplementedException ();
+                       return declaring_type.GetNestedType (type.Name);
                }
 
-               public FieldDefinition Resolve (FieldReference field)
+               public static FieldDefinition Resolve (IAssemblyResolver resolver, FieldReference field)
                {
-                       TypeDefinition type = Resolve (field.DeclaringType);
+                       var type = Resolve (resolver, field.DeclaringType);
                        if (type == null)
                                return null;
 
-                       return type.HasFields ? GetField (type.Fields, field) : null;
+                       if (!type.HasFields)
+                               return null;
+
+                       return GetField (resolver, type, field);
                }
 
-               static FieldDefinition GetField (ICollection collection, FieldReference reference)
+               static FieldDefinition GetField (IAssemblyResolver resolver, TypeDefinition type, FieldReference reference)
                {
-                       foreach (FieldDefinition field in collection) {
+                       while (type != null) {
+                               var field = GetField (type.Fields, reference);
+                               if (field != null)
+                                       return field;
+
+                               if (type.BaseType == null)
+                                       return null;
+
+                               type = Resolve (resolver, type.BaseType);
+                       }
+
+                       return null;
+               }
+
+               static FieldDefinition GetField (IList<FieldDefinition> fields, FieldReference reference)
+               {
+                       for (int i = 0; i < fields.Count; i++) {
+                               var field = fields [i];
+
                                if (field.Name != reference.Name)
                                        continue;
 
@@ -99,104 +125,122 @@ namespace Mono.Cecil {
                        return null;
                }
 
-               public MethodDefinition Resolve (MethodReference method)
+               public static MethodDefinition Resolve (IAssemblyResolver resolver, MethodReference method)
                {
-                       TypeDefinition type = Resolve (method.DeclaringType);
+                       var type = Resolve (resolver, method.DeclaringType);
                        if (type == null)
                                return null;
 
-                       method = method.GetOriginalMethod ();
-                       if (method.Name == MethodDefinition.Cctor || method.Name == MethodDefinition.Ctor)
-                               return type.HasConstructors ? GetMethod (type.Constructors, method) : null;
-                       else
-                               return type.HasMethods ? GetMethod (type, method) : null;
+                       method = method.GetElementMethod ();
+
+                       if (!type.HasMethods)
+                               return null;
+
+                       return GetMethod (resolver, type, method);
                }
 
-               MethodDefinition GetMethod (TypeDefinition type, MethodReference reference)
+               static MethodDefinition GetMethod (IAssemblyResolver resolver, TypeDefinition type, MethodReference reference)
                {
                        while (type != null) {
-                               MethodDefinition method = GetMethod (type.Methods, reference);
-                               if (method == null) {
-                                       if (type.BaseType == null)
-                                               return null;
-
-                                       type = Resolve (type.BaseType);
-                               } else
+                               var method = GetMethod (type.Methods, reference);
+                               if (method != null)
                                        return method;
+
+                               if (type.BaseType == null)
+                                       return null;
+
+                               type = Resolve (resolver, type.BaseType);
                        }
 
                        return null;
                }
 
-               static MethodDefinition GetMethod (ICollection collection, MethodReference reference)
+               public static MethodDefinition GetMethod (IList<MethodDefinition> methods, MethodReference reference)
                {
-                       foreach (MethodDefinition meth in collection) {
-                               if (meth.Name != reference.Name)
+                       for (int i = 0; i < methods.Count; i++) {
+                               var method = methods [i];
+
+                               if (method.Name != reference.Name)
                                        continue;
 
-                               if (!AreSame (meth.ReturnType.ReturnType, reference.ReturnType.ReturnType))
+                               if (!AreSame (method.ReturnType, reference.ReturnType))
                                        continue;
 
-                               if (meth.HasParameters != reference.HasParameters)
+                               if (method.HasParameters != reference.HasParameters)
                                        continue;
 
-                               if (!meth.HasParameters && !reference.HasParameters)
-                                       return meth; //both have no parameters hence meth is the good one
+                               if (!method.HasParameters && !reference.HasParameters)
+                                       return method;
 
-                               if (!AreSame (meth.Parameters, reference.Parameters))
+                               if (!AreSame (method.Parameters, reference.Parameters))
                                        continue;
 
-                               return meth;
+                               return method;
                        }
 
                        return null;
                }
 
-               static bool AreSame (ParameterDefinitionCollection a, ParameterDefinitionCollection b)
+               static bool AreSame (Collection<ParameterDefinition> a, Collection<ParameterDefinition> b)
                {
-                       if (a.Count != b.Count)
+                       var count = a.Count;
+
+                       if (count != b.Count)
                                return false;
 
-                       if (a.Count == 0)
+                       if (count == 0)
                                return true;
 
-                       for (int i = 0; i < a.Count; i++)
+                       for (int i = 0; i < count; i++)
                                if (!AreSame (a [i].ParameterType, b [i].ParameterType))
                                        return false;
 
                        return true;
                }
 
-               static bool AreSame (ModType a, ModType b)
+               static bool AreSame (TypeSpecification a, TypeSpecification b)
                {
-                       if (!AreSame (a.ModifierType, b.ModifierType))
+                       if (!AreSame (a.ElementType, b.ElementType))
                                return false;
 
-                       return AreSame (a.ElementType, b.ElementType);
+                       if (a.IsGenericInstance)
+                               return AreSame ((GenericInstanceType) a, (GenericInstanceType) b);
+
+                       if (a.IsRequiredModifier || a.IsOptionalModifier)
+                               return AreSame ((IModifierType) a, (IModifierType) b);
+
+                       if (a.IsArray)
+                               return AreSame ((ArrayType) a, (ArrayType) b);
+
+                       return true;
                }
 
-               static bool AreSame (TypeSpecification a, TypeSpecification b)
+               static bool AreSame (ArrayType a, ArrayType b)
                {
-                       if (a is GenericInstanceType)
-                               return AreSame ((GenericInstanceType) a, (GenericInstanceType) b);
+                       if (a.Rank != b.Rank)
+                               return false;
 
-                       if (a is ModType)
-                               return AreSame ((ModType) a, (ModType) b);
+                       // TODO: dimensions
+
+                       return true;
+               }
 
-                       return AreSame (a.ElementType, b.ElementType);
+               static bool AreSame (IModifierType a, IModifierType b)
+               {
+                       return AreSame (a.ModifierType, b.ModifierType);
                }
 
                static bool AreSame (GenericInstanceType a, GenericInstanceType b)
                {
-                       if (!AreSame (a.ElementType, b.ElementType))
+                       if (!a.HasGenericArguments)
+                               return !b.HasGenericArguments;
+
+                       if (!b.HasGenericArguments)
                                return false;
 
                        if (a.GenericArguments.Count != b.GenericArguments.Count)
                                return false;
 
-                       if (a.GenericArguments.Count == 0)
-                               return true;
-
                        for (int i = 0; i < a.GenericArguments.Count; i++)
                                if (!AreSame (a.GenericArguments [i], b.GenericArguments [i]))
                                        return false;
@@ -211,19 +255,14 @@ namespace Mono.Cecil {
 
                static bool AreSame (TypeReference a, TypeReference b)
                {
-                       if (a is TypeSpecification || b is TypeSpecification) {
-                               if (a.GetType () != b.GetType ())
-                                       return false;
-
-                               return AreSame ((TypeSpecification) a, (TypeSpecification) b);
-                       }
-
-                       if (a is GenericParameter || b is GenericParameter) {
-                               if (a.GetType () != b.GetType ())
-                                       return false;
+                       if (a.etype != b.etype)
+                               return false;
 
+                       if (a.IsGenericParameter)
                                return AreSame ((GenericParameter) a, (GenericParameter) b);
-                       }
+
+                       if (a.IsTypeSpecification ())
+                               return AreSame ((TypeSpecification) a, (TypeSpecification) b);
 
                        return a.FullName == b.FullName;
                }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs
new file mode 100644 (file)
index 0000000..a114707
--- /dev/null
@@ -0,0 +1,374 @@
+//
+// MetadataSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+       struct Range {
+               public uint Start;
+               public uint Length;
+
+               public Range (uint index, uint length)
+               {
+                       this.Start = index;
+                       this.Length = length;
+               }
+       }
+
+       sealed class MetadataSystem {
+
+               internal TypeDefinition [] Types;
+               internal TypeReference [] TypeReferences;
+
+               internal FieldDefinition [] Fields;
+               internal MethodDefinition [] Methods;
+               internal MemberReference [] MemberReferences;
+
+               internal Dictionary<uint, uint []> NestedTypes;
+               internal Dictionary<uint, uint> ReverseNestedTypes;
+               internal Dictionary<uint, MetadataToken []> Interfaces;
+               internal Dictionary<uint, Row<ushort, uint>> ClassLayouts;
+               internal Dictionary<uint, uint> FieldLayouts;
+               internal Dictionary<uint, uint> FieldRVAs;
+               internal Dictionary<MetadataToken, uint> FieldMarshals;
+               internal Dictionary<MetadataToken, Row<ElementType, uint>> Constants;
+               internal Dictionary<uint, MetadataToken []> Overrides;
+               internal Dictionary<MetadataToken, Range> CustomAttributes;
+               internal Dictionary<MetadataToken, Range> SecurityDeclarations;
+               internal Dictionary<uint, Range> Events;
+               internal Dictionary<uint, Range> Properties;
+               internal Dictionary<uint, Row<MethodSemanticsAttributes, MetadataToken>> Semantics;
+               internal Dictionary<uint, Row<PInvokeAttributes, uint, uint>> PInvokes;
+               internal Dictionary<MetadataToken, Range> GenericParameters;
+               internal Dictionary<uint, MetadataToken []> GenericConstraints;
+
+               static Dictionary<string, Row<ElementType, bool>> primitive_value_types;
+
+               static void InitializePrimitives ()
+               {
+                       primitive_value_types = new Dictionary<string, Row<ElementType, bool>> (18) {
+                               { "Void", new Row<ElementType, bool> (ElementType.Void, false) },
+                               { "Boolean", new Row<ElementType, bool> (ElementType.Boolean, true) },
+                               { "Char", new Row<ElementType, bool> (ElementType.Char, true) },
+                               { "SByte", new Row<ElementType, bool> (ElementType.I1, true) },
+                               { "Byte", new Row<ElementType, bool> (ElementType.U1, true) },
+                               { "Int16", new Row<ElementType, bool> (ElementType.I2, true) },
+                               { "UInt16", new Row<ElementType, bool> (ElementType.U2, true) },
+                               { "Int32", new Row<ElementType, bool> (ElementType.I4, true) },
+                               { "UInt32", new Row<ElementType, bool> (ElementType.U4, true) },
+                               { "Int64", new Row<ElementType, bool> (ElementType.I8, true) },
+                               { "UInt64", new Row<ElementType, bool> (ElementType.U8, true) },
+                               { "Single", new Row<ElementType, bool> (ElementType.R4, true) },
+                               { "Double", new Row<ElementType, bool> (ElementType.R8, true) },
+                               { "String", new Row<ElementType, bool> (ElementType.String, false) },
+                               { "TypedReference", new Row<ElementType, bool> (ElementType.TypedByRef, false) },
+                               { "IntPtr", new Row<ElementType, bool> (ElementType.I, true) },
+                               { "UIntPtr", new Row<ElementType, bool> (ElementType.U, true) },
+                               { "Object", new Row<ElementType, bool> (ElementType.Object, false) },
+                       };
+               }
+
+               public static void TryProcessPrimitiveType (TypeReference type)
+               {
+                       var scope = type.scope;
+                       if (scope.MetadataScopeType != MetadataScopeType.AssemblyNameReference)
+                               return;
+
+                       if (scope.Name != "mscorlib")
+                               return;
+
+                       if (type.Namespace != "System")
+                               return;
+
+                       if (primitive_value_types == null)
+                               InitializePrimitives ();
+
+                       Row<ElementType, bool> primitive_data;
+                       if (!primitive_value_types.TryGetValue (type.Name, out primitive_data))
+                               return;
+
+                       type.etype = primitive_data.Col1;
+                       type.IsValueType = primitive_data.Col2;
+               }
+
+               public void Clear ()
+               {
+                       if (NestedTypes != null) NestedTypes.Clear ();
+                       if (ReverseNestedTypes != null) ReverseNestedTypes.Clear ();
+                       if (Interfaces != null) Interfaces.Clear ();
+                       if (ClassLayouts != null) ClassLayouts.Clear ();
+                       if (FieldLayouts != null) FieldLayouts.Clear ();
+                       if (FieldRVAs != null) FieldRVAs.Clear ();
+                       if (FieldMarshals != null) FieldMarshals.Clear ();
+                       if (Constants != null) Constants.Clear ();
+                       if (Overrides != null) Overrides.Clear ();
+                       if (CustomAttributes != null) CustomAttributes.Clear ();
+                       if (SecurityDeclarations != null) SecurityDeclarations.Clear ();
+                       if (Events != null) Events.Clear ();
+                       if (Properties != null) Properties.Clear ();
+                       if (Semantics != null) Semantics.Clear ();
+                       if (PInvokes != null) PInvokes.Clear ();
+                       if (GenericParameters != null) GenericParameters.Clear ();
+                       if (GenericConstraints != null) GenericConstraints.Clear ();
+               }
+
+               public TypeDefinition GetTypeDefinition (uint rid)
+               {
+                       if (rid < 1 || rid > Types.Length)
+                               return null;
+
+                       return Types [rid - 1];
+               }
+
+               public void AddTypeDefinition (TypeDefinition type)
+               {
+                       Types [type.token.RID - 1] = type;
+               }
+
+               public TypeReference GetTypeReference (uint rid)
+               {
+                       if (rid < 1 || rid > TypeReferences.Length)
+                               return null;
+
+                       return TypeReferences [rid - 1];
+               }
+
+               public void AddTypeReference (TypeReference type)
+               {
+                       TypeReferences [type.token.RID - 1] = type;
+               }
+
+               public FieldDefinition GetFieldDefinition (uint rid)
+               {
+                       if (rid < 1 || rid > Fields.Length)
+                               return null;
+
+                       return Fields [rid - 1];
+               }
+
+               public void AddFieldDefinition (FieldDefinition field)
+               {
+                       Fields [field.token.RID - 1] = field;
+               }
+
+               public MethodDefinition GetMethodDefinition (uint rid)
+               {
+                       if (rid < 1 || rid > Methods.Length)
+                               return null;
+
+                       return Methods [rid - 1];
+               }
+
+               public void AddMethodDefinition (MethodDefinition method)
+               {
+                       Methods [method.token.RID - 1] = method;
+               }
+
+               public MemberReference GetMemberReference (uint rid)
+               {
+                       if (rid < 1 || rid > MemberReferences.Length)
+                               return null;
+
+                       return MemberReferences [rid - 1];
+               }
+
+               public void AddMemberReference (MemberReference member)
+               {
+                       MemberReferences [member.token.RID - 1] = member;
+               }
+
+               public bool TryGetNestedTypeMapping (TypeDefinition type, out uint [] mapping)
+               {
+                       return NestedTypes.TryGetValue (type.token.RID, out mapping);
+               }
+
+               public void SetNestedTypeMapping (uint type_rid, uint [] mapping)
+               {
+                       NestedTypes [type_rid] = mapping;
+               }
+
+               public void RemoveNestedTypeMapping (TypeDefinition type)
+               {
+                       NestedTypes.Remove (type.token.RID);
+               }
+
+               public bool TryGetReverseNestedTypeMapping (TypeDefinition type, out uint declaring)
+               {
+                       return ReverseNestedTypes.TryGetValue (type.token.RID, out declaring);
+               }
+
+               public void SetReverseNestedTypeMapping (uint nested, uint declaring)
+               {
+                       ReverseNestedTypes.Add (nested, declaring);
+               }
+
+               public void RemoveReverseNestedTypeMapping (TypeDefinition type)
+               {
+                       ReverseNestedTypes.Remove (type.token.RID);
+               }
+
+               public bool TryGetInterfaceMapping (TypeDefinition type, out MetadataToken [] mapping)
+               {
+                       return Interfaces.TryGetValue (type.token.RID, out mapping);
+               }
+
+               public void SetInterfaceMapping (uint type_rid, MetadataToken [] mapping)
+               {
+                       Interfaces [type_rid] = mapping;
+               }
+
+               public void RemoveInterfaceMapping (TypeDefinition type)
+               {
+                       Interfaces.Remove (type.token.RID);
+               }
+
+               public void AddPropertiesRange (uint type_rid, Range range)
+               {
+                       Properties.Add (type_rid, range);
+               }
+
+               public bool TryGetPropertiesRange (TypeDefinition type, out Range range)
+               {
+                       return Properties.TryGetValue (type.token.RID, out range);
+               }
+
+               public void RemovePropertiesRange (TypeDefinition type)
+               {
+                       Properties.Remove (type.token.RID);
+               }
+
+               public void AddEventsRange (uint type_rid, Range range)
+               {
+                       Events.Add (type_rid, range);
+               }
+
+               public bool TryGetEventsRange (TypeDefinition type, out Range range)
+               {
+                       return Events.TryGetValue (type.token.RID, out range);
+               }
+
+               public void RemoveEventsRange (TypeDefinition type)
+               {
+                       Events.Remove (type.token.RID);
+               }
+
+               public bool TryGetGenericParameterRange (IGenericParameterProvider owner, out Range range)
+               {
+                       return GenericParameters.TryGetValue (owner.MetadataToken, out range);
+               }
+
+               public void RemoveGenericParameterRange (IGenericParameterProvider owner)
+               {
+                       GenericParameters.Remove (owner.MetadataToken);
+               }
+
+               public bool TryGetCustomAttributeRange (ICustomAttributeProvider owner, out Range range)
+               {
+                       return CustomAttributes.TryGetValue (owner.MetadataToken, out range);
+               }
+
+               public void RemoveCustomAttributeRange (ICustomAttributeProvider owner)
+               {
+                       CustomAttributes.Remove (owner.MetadataToken);
+               }
+
+               public bool TryGetSecurityDeclarationRange (ISecurityDeclarationProvider owner, out Range range)
+               {
+                       return SecurityDeclarations.TryGetValue (owner.MetadataToken, out range);
+               }
+
+               public void RemoveSecurityDeclarationRange (ISecurityDeclarationProvider owner)
+               {
+                       SecurityDeclarations.Remove (owner.MetadataToken);
+               }
+
+               public bool TryGetGenericConstraintMapping (GenericParameter generic_parameter, out MetadataToken [] mapping)
+               {
+                       return GenericConstraints.TryGetValue (generic_parameter.token.RID, out mapping);
+               }
+
+               public void SetGenericConstraintMapping (uint gp_rid, MetadataToken [] mapping)
+               {
+                       GenericConstraints [gp_rid] = mapping;
+               }
+
+               public void RemoveGenericConstraintMapping (GenericParameter generic_parameter)
+               {
+                       GenericConstraints.Remove (generic_parameter.token.RID);
+               }
+
+               public bool TryGetOverrideMapping (MethodDefinition method, out MetadataToken [] mapping)
+               {
+                       return Overrides.TryGetValue (method.token.RID, out mapping);
+               }
+
+               public void SetOverrideMapping (uint rid, MetadataToken [] mapping)
+               {
+                       Overrides [rid] = mapping;
+               }
+
+               public void RemoveOverrideMapping (MethodDefinition method)
+               {
+                       Overrides.Remove (method.token.RID);
+               }
+
+               public TypeDefinition GetFieldDeclaringType (uint field_rid)
+               {
+                       return BinaryRangeSearch (Types, field_rid, true);
+               }
+
+               public TypeDefinition GetMethodDeclaringType (uint method_rid)
+               {
+                       return BinaryRangeSearch (Types, method_rid, false);
+               }
+
+               static TypeDefinition BinaryRangeSearch (TypeDefinition [] types, uint rid, bool field)
+               {
+                       int min = 0;
+                       int max = types.Length - 1;
+                       while (min <= max) {
+                               int mid = min + ((max - min) / 2);
+                               var type = types [mid];
+                               var range = field ? type.fields_range : type.methods_range;
+
+                               if (rid < range.Start)
+                                       max = mid - 1;
+                               else if (rid >= range.Start + range.Length)
+                                       min = mid + 1;
+                               else
+                                       return type;
+                       }
+
+                       throw new ArgumentException ();
+               }
+       }
+}
index b04cbda86d83cda7703b5365289eda1cbdea479c..3446702b5a4757a0855662f48599143c9ba54f59 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum MethodAttributes : ushort {
                MemberAccessMask        = 0x0007,
-               Compilercontrolled      = 0x0000,       // Member not referenceable
+               CompilerControlled      = 0x0000,       // Member not referenceable
                Private                         = 0x0001,       // Accessible only by the parent type
                FamANDAssem                     = 0x0002,       // Accessible by sub-types only in this Assembly
-               Assem                           = 0x0003,       // Accessibly by anyone in the Assembly
+               Assembly                                = 0x0003,       // Accessibly by anyone in the Assembly
                Family                          = 0x0004,       // Accessible only by type and sub-types
                FamORAssem                      = 0x0005,       // Accessibly by sub-types anywhere, plus anyone in assembly
                Public                          = 0x0006,       // Accessibly by anyone who has visibility to this scope
@@ -50,7 +50,7 @@ namespace Mono.Cecil {
                ReuseSlot                       = 0x0000,       // Method reuses existing slot in vtable
                NewSlot                         = 0x0100,       // Method always gets a new slot in the vtable
 
-               Strict                          = 0x0200,   // Method can only be overriden if also accessible
+               CheckAccessOnOverride = 0x0200,   // Method can only be overriden if also accessible
                Abstract                        = 0x0400,       // Method does not provide an implementation
                SpecialName                     = 0x0800,       // Method is special
 
index 0eb60887b82402bb5e12376ece223a519c3daa58..c96dc1cf25fb624c9cc205a12d527861ab7eae22 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,6 +35,6 @@ namespace Mono.Cecil {
                ThisCall        = 0x3,
                FastCall        = 0x4,
                VarArg          = 0x5,
-               Generic         = 0x10
+               Generic         = 0x10,
        }
 }
index 9b0f152c965f8792c942f0ff98a47488484466ae..fff1fb9665f797a226a7311e4cc9bf1126903bb4 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+
+using RVA = System.UInt32;
 
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Cil;
+namespace Mono.Cecil {
 
-       public sealed class MethodDefinition : MethodReference, IMemberDefinition,
-               IHasSecurity, ICustomAttributeProvider {
+       public sealed class MethodDefinition : MethodReference, IMemberDefinition, ISecurityDeclarationProvider {
 
-               public const string Cctor = ".cctor";
-               public const string Ctor = ".ctor";
+               ushort attributes;
+               ushort impl_attributes;
+               MethodSemanticsAttributes? sem_attrs;
+               Collection<CustomAttribute> custom_attributes;
+               Collection<SecurityDeclaration> security_declarations;
 
-               MethodAttributes m_attributes;
-               MethodImplAttributes m_implAttrs;
-               MethodSemanticsAttributes m_semAttrs;
-               SecurityDeclarationCollection m_secDecls;
-               CustomAttributeCollection m_customAttrs;
+               internal RVA rva;
+               internal PInvokeInfo pinvoke;
+               Collection<MethodReference> overrides;
 
-               MethodBody m_body;
-               RVA m_rva;
-               OverrideCollection m_overrides;
-               PInvokeInfo m_pinvoke;
-               readonly ParameterDefinition m_this;
+               internal MethodBody body;
 
                public MethodAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (MethodAttributes) attributes; }
+                       set { attributes = (ushort) value; }
                }
 
                public MethodImplAttributes ImplAttributes {
-                       get { return m_implAttrs; }
-                       set { m_implAttrs = value; }
+                       get { return (MethodImplAttributes) impl_attributes; }
+                       set { impl_attributes = (ushort) value; }
                }
 
                public MethodSemanticsAttributes SemanticsAttributes {
-                       get { return m_semAttrs; }
-                       set { m_semAttrs = value; }
+                       get {
+                               if (sem_attrs.HasValue)
+                                       return sem_attrs.Value;
+
+                               if (HasImage) {
+                                       ReadSemantics ();
+                                       return sem_attrs.Value;
+                               }
+
+                               sem_attrs = MethodSemanticsAttributes.None;
+                               return sem_attrs.Value;
+                       }
+                       set { sem_attrs = value; }
                }
 
-               public bool HasSecurityDeclarations {
-                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+               internal void ReadSemantics ()
+               {
+                       if (sem_attrs.HasValue)
+                               return;
+
+                       var type = DeclaringType;
+                       if (type == null)
+                               return;
+
+                       var module = type.Module;
+                       if (module == null)
+                               return;
+
+                       if (!module.HasImage)
+                               return;
+
+                       sem_attrs = module.Read (this, (method, reader) => reader.ReadMethodSemantics (method));
                }
 
-               public SecurityDeclarationCollection SecurityDeclarations {
+               public bool HasSecurityDeclarations {
                        get {
-                               if (m_secDecls == null)
-                                       m_secDecls = new SecurityDeclarationCollection (this);
+                               if (security_declarations != null)
+                                       return security_declarations.Count > 0;
 
-                               return m_secDecls;
+                               return this.GetHasSecurityDeclarations (Module);
                        }
                }
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               public Collection<SecurityDeclaration> SecurityDeclarations {
+                       get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (Module)); }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasCustomAttributes {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-                               return m_customAttrs;
+                               return this.GetHasCustomAttributes (Module);
                        }
                }
 
-               public RVA RVA {
-                       get { return m_rva; }
-                       set { m_rva = value; }
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+               }
+
+               public int RVA {
+                       get { return (int) rva; }
+               }
+
+               public bool HasBody {
+                       get {
+                               return (attributes & (ushort) MethodAttributes.Abstract) == 0 &&
+                                       (attributes & (ushort) MethodAttributes.PInvokeImpl) == 0 &&
+                                       (impl_attributes & (ushort) MethodImplAttributes.InternalCall) == 0 &&
+                                       (impl_attributes & (ushort) MethodImplAttributes.Native) == 0 &&
+                                       (impl_attributes & (ushort) MethodImplAttributes.Unmanaged) == 0 &&
+                                       (impl_attributes & (ushort) MethodImplAttributes.Runtime) == 0;
+                       }
                }
 
                public MethodBody Body {
                        get {
-                               LoadBody ();
-                               return m_body;
+                               if (body != null)
+                                       return body;
+
+                               if (!HasBody)
+                                       return null;
+
+                               if (HasImage && rva != 0)
+                                       return body = Module.Read (this, (method, reader) => reader.ReadMethodBody (method));
+
+                               return body = new MethodBody (this);
+                       }
+                       set { body = value; }
+               }
+
+               public bool HasPInvokeInfo {
+                       get {
+                               if (pinvoke != null)
+                                       return true;
+
+                               return IsPInvokeImpl;
                        }
-                       set { m_body = value; }
                }
 
                public PInvokeInfo PInvokeInfo {
-                       get { return m_pinvoke; }
-                       set { m_pinvoke = value; }
+                       get {
+                               if (pinvoke != null)
+                                       return pinvoke;
+
+                               if (HasImage && IsPInvokeImpl)
+                                       return pinvoke = Module.Read (this, (method, reader) => reader.ReadPInvokeInfo (method));
+
+                               return null;
+                       }
+                       set {
+                               IsPInvokeImpl = true;
+                               pinvoke = value;
+                       }
                }
 
                public bool HasOverrides {
-                       get { return (m_overrides == null) ? false : (m_overrides.Count > 0); }
+                       get {
+                               if (overrides != null)
+                                       return overrides.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (method, reader) => reader.HasOverrides (method));
+
+                               return false;
+                       }
                }
 
-               public OverrideCollection Overrides {
+               public Collection<MethodReference> Overrides {
                        get {
-                               if (m_overrides == null)
-                                       m_overrides = new OverrideCollection (this);
+                               if (overrides != null)
+                                       return overrides;
 
-                               return m_overrides;
+                               if (HasImage)
+                                       return overrides = Module.Read (this, (method, reader) => reader.ReadOverrides (method));
+
+                               return overrides = new Collection<MethodReference> ();
+                       }
+               }
+
+               public override bool HasGenericParameters {
+                       get {
+                               if (generic_parameters != null)
+                                       return generic_parameters.Count > 0;
+
+                               return this.GetHasGenericParameters (Module);
                        }
                }
 
-               public ParameterDefinition This {
-                       get { return m_this; }
+               public override Collection<GenericParameter> GenericParameters {
+                       get { return generic_parameters ?? (generic_parameters = this.GetGenericParameters (Module)); }
                }
 
                #region MethodAttributes
 
                public bool IsCompilerControlled {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Compilercontrolled; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.Compilercontrolled;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Compilercontrolled);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.CompilerControlled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.CompilerControlled, value); }
                }
 
                public bool IsPrivate {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.Private;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Private);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Private); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Private, value); }
                }
 
                public bool IsFamilyAndAssembly {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.FamANDAssem;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamANDAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamANDAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamANDAssem, value); }
                }
 
                public bool IsAssembly {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.Assem;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Assem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Assembly); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Assembly, value); }
                }
 
                public bool IsFamily {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.Family;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Family);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Family); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Family, value); }
                }
 
                public bool IsFamilyOrAssembly {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.FamORAssem;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamORAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamORAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamORAssem, value); }
                }
 
                public bool IsPublic {
-                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
-                                       m_attributes |= MethodAttributes.Public;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Public);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Public); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Public, value); }
                }
 
                public bool IsStatic {
-                       get { return (m_attributes & MethodAttributes.Static) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.Static;
-                               else
-                                       m_attributes &= ~MethodAttributes.Static;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.Static); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Static, value); }
                }
 
                public bool IsFinal {
-                       get { return (m_attributes & MethodAttributes.Final) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.Final;
-                               else
-                                       m_attributes &= ~MethodAttributes.Final;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.Final); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Final, value); }
                }
 
                public bool IsVirtual {
-                       get { return (m_attributes & MethodAttributes.Virtual) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.Virtual;
-                               else
-                                       m_attributes &= ~MethodAttributes.Virtual;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.Virtual); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Virtual, value); }
                }
 
                public bool IsHideBySig {
-                       get { return (m_attributes & MethodAttributes.HideBySig) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.HideBySig;
-                               else
-                                       m_attributes &= ~MethodAttributes.HideBySig;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.HideBySig); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.HideBySig, value); }
                }
 
                public bool IsReuseSlot {
-                       get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.ReuseSlot; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.VtableLayoutMask;
-                                       m_attributes |= MethodAttributes.ReuseSlot;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.ReuseSlot);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.ReuseSlot); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.ReuseSlot, value); }
                }
 
                public bool IsNewSlot {
-                       get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.NewSlot; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~MethodAttributes.VtableLayoutMask;
-                                       m_attributes |= MethodAttributes.NewSlot;
-                               } else
-                                       m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.NewSlot);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.NewSlot); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.NewSlot, value); }
                }
 
-               public bool IsStrict {
-                       get { return (m_attributes & MethodAttributes.Strict) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.Strict;
-                               else
-                                       m_attributes &= ~MethodAttributes.Strict;
-                       }
+               public bool IsCheckAccessOnOverride {
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.CheckAccessOnOverride); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.CheckAccessOnOverride, value); }
                }
 
                public bool IsAbstract {
-                       get { return (m_attributes & MethodAttributes.Abstract) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.Abstract;
-                               else
-                                       m_attributes &= ~MethodAttributes.Abstract;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.Abstract); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Abstract, value); }
                }
 
                public bool IsSpecialName {
-                       get { return (m_attributes & MethodAttributes.SpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.SpecialName;
-                               else
-                                       m_attributes &= ~MethodAttributes.SpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.SpecialName, value); }
                }
 
                public bool IsPInvokeImpl {
-                       get { return (m_attributes & MethodAttributes.PInvokeImpl) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.PInvokeImpl;
-                               else
-                                       m_attributes &= ~MethodAttributes.PInvokeImpl;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.PInvokeImpl); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.PInvokeImpl, value); }
                }
 
                public bool IsUnmanagedExport {
-                       get { return (m_attributes & MethodAttributes.UnmanagedExport) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.UnmanagedExport;
-                               else
-                                       m_attributes &= ~MethodAttributes.UnmanagedExport;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.UnmanagedExport); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.UnmanagedExport, value); }
                }
 
                public bool IsRuntimeSpecialName {
-                       get { return (m_attributes & MethodAttributes.RTSpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.RTSpecialName;
-                               else
-                                       m_attributes &= ~MethodAttributes.RTSpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.RTSpecialName, value); }
                }
 
                public bool HasSecurity {
-                       get { return (m_attributes & MethodAttributes.HasSecurity) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= MethodAttributes.HasSecurity;
-                               else
-                                       m_attributes &= ~MethodAttributes.HasSecurity;
-                       }
+                       get { return attributes.GetAttributes ((ushort) MethodAttributes.HasSecurity); }
+                       set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.HasSecurity, value); }
                }
 
                #endregion
@@ -341,313 +318,159 @@ namespace Mono.Cecil {
                #region MethodImplAttributes
 
                public bool IsIL {
-                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.IL; }
-                       set {
-                               if (value) {
-                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-                                       m_implAttrs |= MethodImplAttributes.IL;
-                               } else
-                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.IL);
-                       }
+                       get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.IL); }
+                       set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.IL, value); }
                }
 
                public bool IsNative {
-                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Native; }
-                       set {
-                               if (value) {
-                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-                                       m_implAttrs |= MethodImplAttributes.Native;
-                               } else
-                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Native);
-                       }
+                       get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Native); }
+                       set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Native, value); }
                }
 
                public bool IsRuntime {
-                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Runtime; }
-                       set {
-                               if (value) {
-                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-                                       m_implAttrs |= MethodImplAttributes.Runtime;
-                               } else
-                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Runtime);
-                       }
+                       get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Runtime); }
+                       set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Runtime, value); }
                }
 
                public bool IsUnmanaged {
-                       get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Unmanaged; }
-                       set {
-                               if (value) {
-                                       m_implAttrs &= ~MethodImplAttributes.ManagedMask;
-                                       m_implAttrs |= MethodImplAttributes.Unmanaged;
-                               } else
-                                       m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Unmanaged);
-                       }
+                       get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Unmanaged); }
+                       set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Unmanaged, value); }
                }
 
                public bool IsManaged {
-                       get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Managed; }
-                       set {
-                               if (value) {
-                                       m_implAttrs &= ~MethodImplAttributes.ManagedMask;
-                                       m_implAttrs |= MethodImplAttributes.Managed;
-                               } else
-                                       m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Managed);
-                       }
+                       get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Managed); }
+                       set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Managed, value); }
                }
 
                public bool IsForwardRef {
-                       get { return (m_implAttrs & MethodImplAttributes.ForwardRef) != 0; }
-                       set {
-                               if (value)
-                                       m_implAttrs |= MethodImplAttributes.ForwardRef;
-                               else
-                                       m_implAttrs &= ~MethodImplAttributes.ForwardRef;
-                       }
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.ForwardRef); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.ForwardRef, value); }
                }
 
                public bool IsPreserveSig {
-                       get { return (m_implAttrs & MethodImplAttributes.PreserveSig) != 0; }
-                       set {
-                               if (value)
-                                       m_implAttrs |= MethodImplAttributes.PreserveSig;
-                               else
-                                       m_implAttrs &= ~MethodImplAttributes.PreserveSig;
-                       }
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.PreserveSig); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.PreserveSig, value); }
                }
 
                public bool IsInternalCall {
-                       get { return (m_implAttrs & MethodImplAttributes.InternalCall) != 0; }
-                       set {
-                               if (value)
-                                       m_implAttrs |= MethodImplAttributes.InternalCall;
-                               else
-                                       m_implAttrs &= ~MethodImplAttributes.InternalCall;
-                       }
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.InternalCall); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.InternalCall, value); }
                }
 
                public bool IsSynchronized {
-                       get { return (m_implAttrs & MethodImplAttributes.Synchronized) != 0; }
-                       set {
-                               if (value)
-                                       m_implAttrs |= MethodImplAttributes.Synchronized;
-                               else
-                                       m_implAttrs &= ~MethodImplAttributes.Synchronized;
-                       }
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.Synchronized); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.Synchronized, value); }
                }
 
                public bool NoInlining {
-                       get { return (m_implAttrs & MethodImplAttributes.NoInlining) != 0; }
-                       set {
-                               if (value)
-                                       m_implAttrs |= MethodImplAttributes.NoInlining;
-                               else
-                                       m_implAttrs &= ~MethodImplAttributes.NoInlining;
-                       }
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.NoInlining); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.NoInlining, value); }
+               }
+
+               public bool NoOptimization {
+                       get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.NoOptimization); }
+                       set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.NoOptimization, value); }
                }
 
                #endregion
 
                #region MethodSemanticsAttributes
+
                public bool IsSetter {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.Setter) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.Setter;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.Setter;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.Setter); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.Setter, value); }
                }
 
                public bool IsGetter {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.Getter) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.Getter;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.Getter;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.Getter); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.Getter, value); }
                }
 
                public bool IsOther {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.Other) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.Other;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.Other;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.Other); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.Other, value); }
                }
 
                public bool IsAddOn {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.AddOn) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.AddOn;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.AddOn;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.AddOn); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.AddOn, value); }
                }
 
                public bool IsRemoveOn {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.RemoveOn) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.RemoveOn;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.RemoveOn;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.RemoveOn); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.RemoveOn, value); }
                }
 
                public bool IsFire {
-                       get { return (m_semAttrs & MethodSemanticsAttributes.Fire) != 0; }
-                       set {
-                               if (value)
-                                       m_semAttrs |= MethodSemanticsAttributes.Fire;
-                               else
-                                       m_semAttrs &= ~MethodSemanticsAttributes.Fire;
-                       }
+                       get { return this.GetSemantics (MethodSemanticsAttributes.Fire); }
+                       set { this.SetSemantics (MethodSemanticsAttributes.Fire, value); }
                }
 
                #endregion
 
-               public bool IsConstructor {
-                       get {
-                               return this.IsRuntimeSpecialName && this.IsSpecialName &&
-                                       (this.Name == Cctor || this.Name == Ctor);
-                       }
-               }
-
-               public bool HasBody {
-                       get {
-                               return (m_attributes & MethodAttributes.Abstract) == 0 &&
-                                       (m_attributes & MethodAttributes.PInvokeImpl) == 0 &&
-                                       (m_implAttrs & MethodImplAttributes.InternalCall) == 0 &&
-                                       (m_implAttrs & MethodImplAttributes.Native) == 0 &&
-                                       (m_implAttrs & MethodImplAttributes.Unmanaged) == 0 &&
-                                       (m_implAttrs & MethodImplAttributes.Runtime) == 0;
-                       }
-               }
-
                public new TypeDefinition DeclaringType {
                        get { return (TypeDefinition) base.DeclaringType; }
                        set { base.DeclaringType = value; }
                }
 
-               public MethodDefinition (string name, RVA rva,
-                       MethodAttributes attrs, MethodImplAttributes implAttrs,
-                       bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
-                       base (name, hasThis, explicitThis, callConv)
-               {
-                       m_rva = rva;
-                       m_attributes = attrs;
-                       m_implAttrs = implAttrs;
-
-                       if (!IsStatic)
-                               m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+               public bool IsConstructor {
+                       get {
+                               return this.IsRuntimeSpecialName
+                                       && this.IsSpecialName
+                                       && (this.Name == ".cctor" || this.Name == ".ctor");
+                       }
                }
 
-               internal MethodDefinition (string name, MethodAttributes attrs) : base (name)
-               {
-                       m_attributes = attrs;
-
-                       this.HasThis = !this.IsStatic;
-                       if (!IsStatic)
-                               m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+               public override bool IsDefinition {
+                       get { return true; }
                }
 
-               public MethodDefinition (string name, MethodAttributes attrs, TypeReference returnType) :
-                       this (name, attrs)
+               internal MethodDefinition ()
                {
-                       this.ReturnType.ReturnType = returnType;
+                       this.token = new MetadataToken (TokenType.Method);
                }
 
-               internal void LoadBody ()
+               public MethodDefinition (string name, MethodAttributes attributes, TypeReference returnType)
+                       : base (name, returnType)
                {
-                       if (m_body == null && this.HasBody) {
-                               m_body = new MethodBody (this);
-
-                               ModuleDefinition module = DeclaringType != null ? DeclaringType.Module : null;
-
-                               if (module != null && m_rva != RVA.Zero)
-                                       module.Controller.Reader.Code.VisitMethodBody (m_body);
-                       }
+                       this.attributes = (ushort) attributes;
+                       this.HasThis = !this.IsStatic;
+                       this.token = new MetadataToken (TokenType.Method);
                }
 
                public override MethodDefinition Resolve ()
                {
                        return this;
                }
+       }
 
-               public MethodDefinition Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
-               }
+       static partial class Mixin {
 
-               internal static MethodDefinition Clone (MethodDefinition meth, ImportContext context)
+               public static ParameterDefinition GetParameter (this MethodBody self, int index)
                {
-                       MethodDefinition nm = new MethodDefinition (
-                               meth.Name,
-                               RVA.Zero,
-                               meth.Attributes,
-                               meth.ImplAttributes,
-                               meth.HasThis,
-                               meth.ExplicitThis,
-                               meth.CallingConvention);
-
-                       MethodReference contextMethod = context.GenericContext.Method;
-
-                       context.GenericContext.Method = nm;
-
-                       GenericParameter.CloneInto (meth, nm, context);
-
-                       nm.ReturnType.ReturnType = context.Import (meth.ReturnType.ReturnType);
-
-                       if (meth.ReturnType.Parameter != null) {
-                               nm.ReturnType.Parameter = ParameterDefinition.Clone (meth.ReturnType.Parameter, context);
-                               nm.ReturnType.Parameter.Method = nm;
-                       }
+                       var method = self.method;
 
-                       if (meth.PInvokeInfo != null)
-                               nm.PInvokeInfo = meth.PInvokeInfo; // TODO: import module ?
+                       if (method.HasThis) {
+                               if (index == 0)
+                                       return self.ThisParameter;
 
-                       if (meth.HasParameters) {
-                               foreach (ParameterDefinition param in meth.Parameters)
-                                       nm.Parameters.Add (ParameterDefinition.Clone (param, context));
-                       }
-                       if (meth.HasOverrides) {
-                               foreach (MethodReference ov in meth.Overrides)
-                                       nm.Overrides.Add (context.Import (ov));
-                       }
-                       if (meth.HasCustomAttributes) {
-                               foreach (CustomAttribute ca in meth.CustomAttributes)
-                                       nm.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+                               index--;
                        }
-                       if (meth.HasSecurityDeclarations) {
-                               foreach (SecurityDeclaration sec in meth.SecurityDeclarations)
-                                       nm.SecurityDeclarations.Add (SecurityDeclaration.Clone (sec));
-                       }
-
-                       if (meth.Body != null)
-                               nm.Body = MethodBody.Clone (meth.Body, nm, context);
 
-                       context.GenericContext.Method = contextMethod;
-
-                       return nm;
+                       return method.Parameters [index];
                }
 
-               public override void Accept (IReflectionVisitor visitor)
+               public static bool GetSemantics (this MethodDefinition self, MethodSemanticsAttributes semantics)
                {
-                       visitor.VisitMethodDefinition (this);
-
-                       this.GenericParameters.Accept (visitor);
-                       this.Parameters.Accept (visitor);
-
-                       if (this.PInvokeInfo != null)
-                               this.PInvokeInfo.Accept (visitor);
+                       return (self.SemanticsAttributes & semantics) != 0;
+               }
 
-                       this.SecurityDeclarations.Accept (visitor);
-                       this.Overrides.Accept (visitor);
-                       this.CustomAttributes.Accept (visitor);
+               public static void SetSemantics (this MethodDefinition self, MethodSemanticsAttributes semantics, bool value)
+               {
+                       if (value)
+                               self.SemanticsAttributes |= semantics;
+                       else
+                               self.SemanticsAttributes &= ~semantics;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs
deleted file mode 100644 (file)
index ec0b1de..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// MethodDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class MethodDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public MethodDefinition this [int index] {
-                       get { return List [index] as MethodDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public MethodDefinitionCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (MethodDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (MethodDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (MethodDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (MethodDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, MethodDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (MethodDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       MethodDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is MethodDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
-               }
-
-               public MethodDefinition [] GetMethod (string name)
-               {
-                       ArrayList ret = new ArrayList ();
-                       foreach (MethodDefinition meth in this)
-                               if (meth.Name == name)
-                                       ret.Add (meth);
-
-                       return ret.ToArray (typeof (MethodDefinition)) as MethodDefinition [];
-               }
-
-               internal MethodDefinition GetMethodInternal (string name, IList parameters)
-               {
-                       foreach (MethodDefinition meth in this) {
-                               if (meth.Name != name || meth.Parameters.Count != parameters.Count)
-                                       continue;
-
-                               bool match = true;
-                               for (int i = 0; i < parameters.Count; i++) {
-                                       string pname;
-                                       object param = parameters [i];
-                                       if (param is Type)
-                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
-                                       else if (param is TypeReference)
-                                               pname = (param as TypeReference).FullName;
-                                       else if (param is ParameterDefinition)
-                                               pname = (param as ParameterDefinition).ParameterType.FullName;
-                                       else
-                                               throw new NotSupportedException ();
-
-                                       if (meth.Parameters [i].ParameterType.FullName != pname) {
-                                               match = false;
-                                               break;
-                                       }
-                               }
-
-                               if (match)
-                                       return meth;
-                       }
-
-                       return null;
-               }
-
-               public MethodDefinition GetMethod (string name, Type [] parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-
-               public MethodDefinition GetMethod (string name, TypeReference [] parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-
-               public MethodDefinition GetMethod (string name, ParameterDefinitionCollection parameters)
-               {
-                       return GetMethodInternal (name, parameters);
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitMethodDefinitionCollection (this);
-               }
-       }
-}
index ed701186bd7adb7a86039260656226f6eca2a11d..8a2b422cc7b8035938378eb9d5fe87f056daeb34 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum MethodImplAttributes : ushort {
@@ -47,6 +47,7 @@ namespace Mono.Cecil {
                PreserveSig                     = 0x0080,       // Reserved: conforming implementations may ignore
                InternalCall            = 0x1000,       // Reserved: shall be zero in conforming implementations
                Synchronized            = 0x0020,       // Method is single threaded through the body
+               NoOptimization          = 0x0040,       // Method is not optimized by the JIT.
                NoInlining                      = 0x0008,       // Method may not be inlined
                MaxMethodImplVal        = 0xffff         // Range check value
        }
index 1e713bc631b66e6d598e0e240060e18edb9a2dfa..1ea47a090745cd2d745ac01cf149947f54399706 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
 
-       using System.Text;
+namespace Mono.Cecil {
 
-       public class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider {
+       public class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider, IGenericContext {
 
-               ParameterDefinitionCollection m_parameters;
-               MethodReturnType m_returnType;
+               internal ParameterDefinitionCollection parameters;
+               MethodReturnType return_type;
 
-               bool m_hasThis;
-               bool m_explicitThis;
-               MethodCallingConvention m_callConv;
-               GenericParameterCollection m_genparams;
+               bool has_this;
+               bool explicit_this;
+               MethodCallingConvention calling_convention;
+               internal Collection<GenericParameter> generic_parameters;
 
                public virtual bool HasThis {
-                       get { return m_hasThis; }
-                       set { m_hasThis = value; }
+                       get { return has_this; }
+                       set { has_this = value; }
                }
 
                public virtual bool ExplicitThis {
-                       get { return m_explicitThis; }
-                       set { m_explicitThis = value; }
+                       get { return explicit_this; }
+                       set { explicit_this = value; }
                }
 
                public virtual MethodCallingConvention CallingConvention {
-                       get { return m_callConv; }
-                       set { m_callConv = value; }
+                       get { return calling_convention; }
+                       set { calling_convention = value; }
                }
 
                public virtual bool HasParameters {
-                       get { return (m_parameters == null) ? false : (m_parameters.Count > 0); }
+                       get { return !parameters.IsNullOrEmpty (); }
+               }
+
+               public virtual Collection<ParameterDefinition> Parameters {
+                       get {
+                               if (parameters == null)
+                                       parameters = new ParameterDefinitionCollection (this);
+
+                               return parameters;
+                       }
                }
 
-               public virtual ParameterDefinitionCollection Parameters {
+               IGenericParameterProvider IGenericContext.Type {
                        get {
-                               if (m_parameters == null)
-                                       m_parameters = new ParameterDefinitionCollection (this);
-                               return m_parameters;
+                               var declaring_type = this.DeclaringType;
+                               var instance = declaring_type as GenericInstanceType;
+                               if (instance != null)
+                                       return instance.ElementType;
+
+                               return declaring_type;
                        }
                }
 
-               public bool HasGenericParameters {
-                       get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+               IGenericParameterProvider IGenericContext.Method {
+                       get { return this; }
+               }
+
+               GenericParameterType IGenericParameterProvider.GenericParameterType {
+                       get { return GenericParameterType.Method; }
+               }
+
+               public virtual bool HasGenericParameters {
+                       get { return !generic_parameters.IsNullOrEmpty (); }
                }
 
-               public GenericParameterCollection GenericParameters {
+               public virtual Collection<GenericParameter> GenericParameters {
                        get {
-                               if (m_genparams == null)
-                                       m_genparams = new GenericParameterCollection (this);
-                               return m_genparams;
+                               if (generic_parameters != null)
+                                       return generic_parameters;
+
+                               return generic_parameters = new Collection<GenericParameter> ();
                        }
                }
 
-               public virtual MethodReturnType ReturnType {
-                       get { return m_returnType;}
-                       set { m_returnType = value; }
+               public TypeReference ReturnType {
+                       get {
+                               var return_type = MethodReturnType;
+                               return return_type != null ? return_type.ReturnType : null;
+                       }
+                       set {
+                               var return_type = MethodReturnType;
+                               if (return_type != null)
+                                       return_type.ReturnType = value;
+                       }
                }
 
-               internal MethodReference (string name, bool hasThis,
-                       bool explicitThis, MethodCallingConvention callConv) : this (name)
-               {
-                       m_parameters = new ParameterDefinitionCollection (this);
-                       m_hasThis = hasThis;
-                       m_explicitThis = explicitThis;
-                       m_callConv = callConv;
+               public virtual MethodReturnType MethodReturnType {
+                       get { return return_type; }
+                       set { return_type = value; }
+               }
+
+               public override string FullName {
+                       get {
+                               var builder = new StringBuilder ();
+                               builder.Append (ReturnType.FullName);
+                               builder.Append (" ");
+                               builder.Append (MemberFullName ());
+                               this.MethodSignatureFullName (builder);
+                               return builder.ToString ();
+                       }
+               }
+
+               public virtual bool IsGenericInstance {
+                       get { return false; }
                }
 
-               internal MethodReference (string name) : base (name)
+               internal override bool ContainsGenericParameter {
+                       get {
+                               if (this.ReturnType.ContainsGenericParameter || base.ContainsGenericParameter)
+                                       return true;
+
+                               var parameters = this.Parameters;
+
+                               for (int i = 0; i < parameters.Count; i++)
+                                       if (parameters [i].ParameterType.ContainsGenericParameter)
+                                               return true;
+
+                               return false;
+                       }
+               }
+
+               internal MethodReference ()
                {
-                       m_returnType = new MethodReturnType (null);
+                       this.return_type = new MethodReturnType (this);
+                       this.token = new MetadataToken (TokenType.MemberRef);
                }
 
-               public MethodReference (string name,
-                       TypeReference declaringType, TypeReference returnType,
-                       bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
-                       this (name, hasThis, explicitThis, callConv)
+               public MethodReference (string name, TypeReference returnType)
+                       : base (name)
                {
-                       this.DeclaringType = declaringType;
-                       this.ReturnType.ReturnType = returnType;
+                       if (returnType == null)
+                               throw new ArgumentNullException ("returnType");
+
+                       this.return_type = new MethodReturnType (this);
+                       this.return_type.ReturnType = returnType;
+                       this.token = new MetadataToken (TokenType.MemberRef);
                }
 
-               public virtual MethodDefinition Resolve ()
+               public MethodReference (string name, TypeReference returnType, TypeReference declaringType)
+                       : this (name, returnType)
                {
-                       TypeReference declaringType = DeclaringType;
                        if (declaringType == null)
-                               return null;
+                               throw new ArgumentNullException ("declaringType");
 
-                       return declaringType.Module.Resolver.Resolve (this);
+                       this.DeclaringType = declaringType;
                }
 
-               public virtual MethodReference GetOriginalMethod ()
+               public virtual MethodReference GetElementMethod ()
                {
                        return this;
                }
 
-               public int GetSentinel ()
+               public virtual MethodDefinition Resolve ()
+               {
+                       var module = this.Module;
+                       if (module == null)
+                               throw new NotSupportedException ();
+
+                       return module.Resolve (this);
+               }
+       }
+
+       static partial class Mixin {
+
+               public static bool IsVarArg (this IMethodSignature self)
                {
-                       if (HasParameters) {
-                               for (int i = 0; i < Parameters.Count; i++)
-                                       if (Parameters [i].ParameterType is SentinelType)
-                                               return i;
-                       }
-                       return -1;
+                       return (self.CallingConvention & MethodCallingConvention.VarArg) != 0;
                }
 
-               public override string ToString ()
+               public static int GetSentinelPosition (this IMethodSignature self)
                {
-                       int sentinel = GetSentinel ();
-
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (m_returnType.ReturnType.FullName);
-                       sb.Append (" ");
-                       sb.Append (base.ToString ());
-                       sb.Append ("(");
-                       if (this.HasParameters) {
-                               for (int i = 0; i < this.Parameters.Count; i++) {
-                                       if (i > 0)
-                                               sb.Append (",");
-
-                                       if (i == sentinel)
-                                               sb.Append ("...,");
-
-                                       sb.Append (this.Parameters [i].ParameterType.FullName);
-                               }
-                       }
-                       sb.Append (")");
-                       return sb.ToString ();
+                       if (!self.HasParameters)
+                               return -1;
+
+                       var parameters = self.Parameters;
+                       for (int i = 0; i < parameters.Count; i++)
+                               if (parameters [i].ParameterType.IsSentinel)
+                                       return i;
+
+                       return -1;
                }
        }
 }
index b63ebbcc16d0cff39c06f44f2f246de99aa6f500..4b571f3ff1595613a7a774e46582660d070fce3c 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-
-using Mono.Cecil.Metadata;
+using Mono.Collections.Generic;
 
 namespace Mono.Cecil {
 
-       public sealed class MethodReturnType : ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
-
-               MethodReference m_method;
-               ParameterDefinition m_param;
+       public sealed class MethodReturnType : IConstantProvider, ICustomAttributeProvider, IMarshalInfoProvider {
 
-               TypeReference m_returnType;
+               internal IMethodSignature method;
+               internal ParameterDefinition parameter;
+               TypeReference return_type;
 
-               public MethodReference Method {
-                       get { return m_method; }
-                       set { m_method = value; }
+               public IMethodSignature Method {
+                       get { return method; }
                }
 
                public TypeReference ReturnType {
-                       get { return m_returnType; }
-                       set { m_returnType = value; }
+                       get { return return_type; }
+                       set { return_type = value; }
                }
 
                internal ParameterDefinition Parameter {
-                       get {
-                               if (m_param == null) {
-                                       m_param = new ParameterDefinition (m_returnType);
-                                       m_param.Method = m_method;
-                               }
-
-                               return m_param;
-                       }
-                       set { m_param = value; }
+                       get { return parameter ?? (parameter = new ParameterDefinition (return_type)); }
+                       set { parameter = value; }
                }
 
                public MetadataToken MetadataToken {
@@ -67,15 +56,20 @@ namespace Mono.Cecil {
                }
 
                public bool HasCustomAttributes {
-                       get { return m_param != null && m_param.HasCustomAttributes; }
+                       get { return parameter != null && parameter.HasCustomAttributes; }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public Collection<CustomAttribute> CustomAttributes {
                        get { return Parameter.CustomAttributes; }
                }
 
+               public bool HasDefault {
+                       get { return parameter != null && parameter.HasDefault; }
+                       set { Parameter.HasDefault = value; }
+               }
+
                public bool HasConstant {
-                       get { return m_param != null && m_param.HasConstant; }
+                       get { return parameter != null && parameter.HasConstant; }
                }
 
                public object Constant {
@@ -83,19 +77,23 @@ namespace Mono.Cecil {
                        set { Parameter.Constant = value; }
                }
 
-               public MarshalSpec MarshalSpec {
-                       get { return Parameter.MarshalSpec; }
-                       set { Parameter.MarshalSpec = value; }
+               public bool HasFieldMarshal {
+                       get { return parameter != null && parameter.HasFieldMarshal; }
+                       set { Parameter.HasFieldMarshal = value; }
                }
 
-               public MethodReturnType (TypeReference retType)
-               {
-                       m_returnType = retType;
+               public bool HasMarshalInfo {
+                       get { return parameter != null && parameter.HasMarshalInfo; }
+               }
+
+               public MarshalInfo MarshalInfo {
+                       get { return Parameter.MarshalInfo; }
+                       set { Parameter.MarshalInfo = value; }
                }
 
-               public override string ToString ()
+               public MethodReturnType (IMethodSignature method)
                {
-                       return String.Format ("[return: {0}]", m_returnType);
+                       this.method = method;
                }
        }
 }
index 6db44b5c8cb333dc06c778ac3838aeda77b2431f..f44a3fa8126410a907c7af61a5cad9be4de8ecf0 100644 (file)
@@ -1,10 +1,10 @@
 //
-// MethodSemanticsAttributes.cs
+// MethodSemanticsattributes.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum MethodSemanticsAttributes : ushort {
+               None            = 0x0000,
                Setter          = 0x0001,       // Setter for property
                Getter          = 0x0002,       // Getter for property
                Other           = 0x0004,       // Other method for property or event
index 31b45bb1208a73e181366381e758c4d6f859412a..e907d6cc0058f0f9451a52099013716e1c7a3408 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Collections.Generic;
 
-       using System;
+namespace Mono.Cecil {
 
        public abstract class MethodSpecification : MethodReference {
 
-               MethodReference m_elementMethod;
+               readonly MethodReference method;
 
                public MethodReference ElementMethod {
-                       get { return m_elementMethod; }
-                       set { m_elementMethod = value; }
+                       get { return method; }
                }
 
                public override string Name {
-                       get { return m_elementMethod.Name; }
+                       get { return method.Name; }
                        set { throw new InvalidOperationException (); }
                }
 
                public override MethodCallingConvention CallingConvention {
-                       get { return m_elementMethod.CallingConvention; }
+                       get { return method.CallingConvention; }
                        set { throw new InvalidOperationException (); }
                }
 
                public override bool HasThis {
-                       get { return m_elementMethod.HasThis; }
+                       get { return method.HasThis; }
                        set { throw new InvalidOperationException (); }
                }
 
                public override bool ExplicitThis {
-                       get { return m_elementMethod.ExplicitThis; }
+                       get { return method.ExplicitThis; }
                        set { throw new InvalidOperationException (); }
                }
 
-               public override MethodReturnType ReturnType {
-                       get { return m_elementMethod.ReturnType; }
+               public override MethodReturnType MethodReturnType {
+                       get { return method.MethodReturnType; }
                        set { throw new InvalidOperationException (); }
                }
 
                public override TypeReference DeclaringType {
-                       get { return m_elementMethod.DeclaringType; }
+                       get { return method.DeclaringType; }
                        set { throw new InvalidOperationException (); }
                }
 
+               public override ModuleDefinition Module {
+                       get { return method.Module; }
+               }
+
                public override bool HasParameters {
-                       get { return m_elementMethod.HasParameters; }
+                       get { return method.HasParameters; }
+               }
+
+               public override Collection<ParameterDefinition> Parameters {
+                       get { return method.Parameters; }
                }
 
-               public override ParameterDefinitionCollection Parameters {
-                       get { return m_elementMethod.Parameters; }
+               internal override bool ContainsGenericParameter {
+                       get { return method.ContainsGenericParameter; }
                }
 
-               internal MethodSpecification (MethodReference elemMethod) : base (string.Empty)
+               internal MethodSpecification (MethodReference method)
                {
-                       m_elementMethod = elemMethod;
+                       if (method == null)
+                               throw new ArgumentNullException ("method");
+
+                       this.method = method;
+                       this.token = new MetadataToken (TokenType.MethodSpec);
                }
 
-               public override MethodReference GetOriginalMethod()
+               public sealed override MethodReference GetElementMethod ()
                {
-                       return m_elementMethod.GetOriginalMethod ();
+                       return method.GetElementMethod ();
                }
        }
 }
index 70076365ee90863ea76eb29e1cfa76a413012955..f7ff611acbb427fddb28285602677a46580816ea 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-       public abstract class ModType : TypeSpecification {
+       public interface IModifierType {
+               TypeReference ModifierType { get; }
+               TypeReference ElementType { get; }
+       }
+
+       public sealed class OptionalModifierType : TypeSpecification, IModifierType {
 
-               TypeReference m_modifierType;
+               TypeReference modifier_type;
 
                public TypeReference ModifierType {
-                       get { return m_modifierType; }
-                       set { m_modifierType = value; }
+                       get { return modifier_type; }
+                       set { modifier_type = value; }
                }
 
-               public override string Name
-               {
-                       get { return string.Concat (base.Name, Suffix ()); }
+               public override string Name {
+                       get { return base.Name + Suffix; }
                }
 
-               public override string FullName
-               {
-                       get { return string.Concat (base.FullName, Suffix ()); }
+               public override string FullName {
+                       get { return base.FullName + Suffix; }
                }
 
-               string Suffix ()
-               {
-                       return string.Concat (" ", ModifierName, "(", this.ModifierType.FullName, ")");
+               string Suffix {
+                       get { return " modopt(" + modifier_type + ")"; }
                }
 
-               protected abstract string ModifierName {
-                       get;
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
                }
 
-               public ModType (TypeReference elemType, TypeReference modType) : base (elemType)
+               public override bool IsOptionalModifier {
+                       get { return true; }
+               }
+
+               internal override bool ContainsGenericParameter {
+                       get { return modifier_type.ContainsGenericParameter || base.ContainsGenericParameter; }
+               }
+
+               public OptionalModifierType (TypeReference modifierType, TypeReference type)
+                       : base (type)
                {
-                       m_modifierType = modType;
+                       Mixin.CheckModifier (modifierType, type);
+                       this.modifier_type = modifierType;
+                       this.etype = MD.ElementType.CModOpt;
                }
        }
 
-       public sealed class ModifierOptional : ModType {
+       public sealed class RequiredModifierType : TypeSpecification, IModifierType {
 
-               protected override string ModifierName {
-                       get { return "modopt"; }
+               TypeReference modifier_type;
+
+               public TypeReference ModifierType {
+                       get { return modifier_type; }
+                       set { modifier_type = value; }
                }
 
-               public ModifierOptional (TypeReference elemType, TypeReference modType) : base (elemType, modType)
-               {
+               public override string Name {
+                       get { return base.Name + Suffix; }
                }
 
-       }
+               public override string FullName {
+                       get { return base.FullName + Suffix; }
+               }
+
+               string Suffix {
+                       get { return " modreq(" + modifier_type + ")"; }
+               }
 
-       public sealed class ModifierRequired : ModType {
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool IsRequiredModifier {
+                       get { return true; }
+               }
 
-               protected override string ModifierName {
-                       get { return "modreq"; }
+               internal override bool ContainsGenericParameter {
+                       get { return modifier_type.ContainsGenericParameter || base.ContainsGenericParameter; }
                }
 
-               public ModifierRequired (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+               public RequiredModifierType (TypeReference modifierType, TypeReference type)
+                       : base (type)
+               {
+                       Mixin.CheckModifier (modifierType, type);
+                       this.modifier_type = modifierType;
+                       this.etype = MD.ElementType.CModReqD;
+               }
+
+       }
+
+       static partial class Mixin {
+
+               public static void CheckModifier (TypeReference modifierType, TypeReference type)
                {
+                       if (modifierType == null)
+                               throw new ArgumentNullException ("modifierType");
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
                }
        }
 }
index d4f7d0b20747600a50068d62afd210b99454b851..7c793f5a250eb689834774287511a4617397baf0 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+using SR = System.Reflection;
+
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System;
-       using SR = System.Reflection;
-       using SS = System.Security;
-       using SSP = System.Security.Permissions;
-       using System.Text;
+       public enum ReadingMode {
+               Immediate = 1,
+               Deferred = 2,
+       }
+
+       public sealed class ReaderParameters {
+
+               ReadingMode reading_mode;
+               IAssemblyResolver assembly_resolver;
+               Stream symbol_stream;
+               ISymbolReaderProvider symbol_reader_provider;
+               bool read_symbols;
+
+               public ReadingMode ReadingMode {
+                       get { return reading_mode; }
+                       set { reading_mode = value; }
+               }
+
+               public IAssemblyResolver AssemblyResolver {
+                       get { return assembly_resolver; }
+                       set { assembly_resolver = value; }
+               }
+
+               public Stream SymbolStream {
+                       get { return symbol_stream; }
+                       set { symbol_stream = value; }
+               }
+
+               public ISymbolReaderProvider SymbolReaderProvider {
+                       get { return symbol_reader_provider; }
+                       set { symbol_reader_provider = value; }
+               }
+
+               public bool ReadSymbols {
+                       get { return read_symbols; }
+                       set { read_symbols = value; }
+               }
+
+               public ReaderParameters ()
+                       : this (ReadingMode.Deferred)
+               {
+               }
+
+               public ReaderParameters (ReadingMode readingMode)
+               {
+                       this.reading_mode = readingMode;
+               }
+       }
+
+#if !READ_ONLY
+
+       public sealed class ModuleParameters {
+
+               ModuleKind kind;
+               TargetRuntime runtime;
+               TargetArchitecture architecture;
+               IAssemblyResolver assembly_resolver;
+
+               public ModuleKind Kind {
+                       get { return kind; }
+                       set { kind = value; }
+               }
+
+               public TargetRuntime Runtime {
+                       get { return runtime; }
+                       set { runtime = value; }
+               }
+
+               public TargetArchitecture Architecture {
+                       get { return architecture; }
+                       set { architecture = value; }
+               }
+
+               public IAssemblyResolver AssemblyResolver {
+                       get { return assembly_resolver; }
+                       set { assembly_resolver = value; }
+               }
+
+               public ModuleParameters ()
+               {
+                       this.kind = ModuleKind.Dll;
+                       this.runtime = GetCurrentRuntime ();
+                       this.architecture = TargetArchitecture.I386;
+               }
+
+               static TargetRuntime GetCurrentRuntime ()
+               {
+#if !CF
+                       return typeof (object).Assembly.ImageRuntimeVersion.ParseRuntime ();
+#else
+                       var corlib_version = typeof (object).Assembly.GetName ().Version;
+                       switch (corlib_version.Major) {
+                       case 1:
+                               return corlib_version.Minor == 0
+                                       ? TargetRuntime.Net_1_0
+                                       : TargetRuntime.Net_1_1;
+                       case 2:
+                               return TargetRuntime.Net_2_0;
+                       case 4:
+                               return TargetRuntime.Net_4_0;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+#endif
+               }
+       }
+
+       public sealed class WriterParameters {
+
+               Stream symbol_stream;
+               ISymbolWriterProvider symbol_writer_provider;
+               bool write_symbols;
+#if !SILVERLIGHT && !CF
+               SR.StrongNameKeyPair key_pair;
+#endif
+               public Stream SymbolStream {
+                       get { return symbol_stream; }
+                       set { symbol_stream = value; }
+               }
+
+               public ISymbolWriterProvider SymbolWriterProvider {
+                       get { return symbol_writer_provider; }
+                       set { symbol_writer_provider = value; }
+               }
+
+               public bool WriteSymbols {
+                       get { return write_symbols; }
+                       set { write_symbols = value; }
+               }
+#if !SILVERLIGHT && !CF
+               public SR.StrongNameKeyPair StrongNameKeyPair {
+                       get { return key_pair; }
+                       set { key_pair = value; }
+               }
+#endif
+       }
+
+#endif
+
+       public sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider {
+
+               internal Image Image;
+               internal MetadataSystem MetadataSystem;
+               internal ReadingMode ReadingMode;
+               internal ISymbolReaderProvider SymbolReaderProvider;
+               internal ISymbolReader SymbolReader;
+
+               internal IAssemblyResolver assembly_resolver;
+               internal TypeSystem type_system;
+
+               readonly MetadataReader reader;
+               readonly string fq_name;
+
+               internal ModuleKind kind;
+               TargetRuntime runtime;
+               TargetArchitecture architecture;
+               ModuleAttributes attributes;
+               Guid mvid;
 
-       using Mono.Cecil.Cil;
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Metadata;
+               internal AssemblyDefinition assembly;
+               MethodDefinition entry_point;
 
-       public sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider, IMetadataScope,
-               IReflectionStructureVisitable, IReflectionVisitable {
+#if !READ_ONLY
+               MetadataImporter importer;
+#endif
+               Collection<CustomAttribute> custom_attributes;
+               Collection<AssemblyNameReference> references;
+               Collection<ModuleReference> modules;
+               Collection<Resource> resources;
+               Collection<ExportedType> exported_types;
+               TypeDefinitionCollection types;
+
+               public bool IsMain {
+                       get { return kind != ModuleKind.NetModule; }
+               }
 
-               Guid m_mvid;
-               bool m_main;
-               bool m_manifestOnly;
+               public ModuleKind Kind {
+                       get { return kind; }
+                       set { kind = value; }
+               }
 
-               AssemblyNameReferenceCollection m_asmRefs;
-               ModuleReferenceCollection m_modRefs;
-               ResourceCollection m_res;
-               TypeDefinitionCollection m_types;
-               TypeReferenceCollection m_refs;
-               ExternTypeCollection m_externs;
-               MemberReferenceCollection m_members;
-               CustomAttributeCollection m_customAttrs;
+               public TargetRuntime Runtime {
+                       get { return runtime; }
+                       set { runtime = value; }
+               }
 
-               AssemblyDefinition m_asm;
-               Image m_image;
+               public TargetArchitecture Architecture {
+                       get { return architecture; }
+                       set { architecture = value; }
+               }
 
-               ImageReader m_imgReader;
-               ReflectionController m_controller;
-               MetadataResolver m_resolver;
-               SecurityDeclarationReader m_secReader;
+               public ModuleAttributes Attributes {
+                       get { return attributes; }
+                       set { attributes = value; }
+               }
+
+               public string FullyQualifiedName {
+                       get { return fq_name; }
+               }
 
                public Guid Mvid {
-                       get { return m_mvid; }
-                       set { m_mvid = value; }
+                       get { return mvid; }
+                       set { mvid = value; }
                }
 
-               public bool Main {
-                       get { return m_main; }
-                       set { m_main = value; }
+               internal bool HasImage {
+                       get { return Image != null; }
                }
 
-               public AssemblyNameReferenceCollection AssemblyReferences {
-                       get { return m_asmRefs; }
+               public bool HasSymbols {
+                       get { return SymbolReader != null; }
                }
 
-               public ModuleReferenceCollection ModuleReferences {
-                       get { return m_modRefs; }
+               public override MetadataScopeType MetadataScopeType {
+                       get { return MetadataScopeType.ModuleDefinition; }
                }
 
-               public ResourceCollection Resources {
-                       get { return m_res; }
+               public AssemblyDefinition Assembly {
+                       get { return assembly; }
                }
 
-               public TypeDefinitionCollection Types {
-                       get { return m_types; }
+#if !READ_ONLY
+               internal MetadataImporter MetadataImporter {
+                       get { return importer ?? (importer = new MetadataImporter (this)); }
                }
+#endif
 
-               public TypeReferenceCollection TypeReferences {
-                       get { return m_refs; }
+               public IAssemblyResolver AssemblyResolver {
+                       get { return assembly_resolver; }
                }
 
-               public MemberReferenceCollection MemberReferences {
-                       get { return m_members; }
+               public TypeSystem TypeSystem {
+                       get { return type_system ?? (type_system = TypeSystem.CreateTypeSystem (this)); }
                }
 
-               public ExternTypeCollection ExternTypes {
+               public bool HasAssemblyReferences {
                        get {
-                               if (m_externs == null)
-                                       m_externs = new ExternTypeCollection (this);
+                               if (references != null)
+                                       return references.Count > 0;
 
-                               return m_externs;
+                               return HasImage && Image.HasTable (Table.AssemblyRef);
                        }
                }
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               public Collection<AssemblyNameReference> AssemblyReferences {
+                       get {
+                               if (references != null)
+                                       return references;
+
+                               if (HasImage)
+                                       return references = Read (this, (_, reader) => reader.ReadAssemblyReferences ());
+
+                               return references = new Collection<AssemblyNameReference> ();
+                       }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasModuleReferences {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (modules != null)
+                                       return modules.Count > 0;
 
-                               return m_customAttrs;
+                               return HasImage && Image.HasTable (Table.ModuleRef);
                        }
                }
 
-               public AssemblyDefinition Assembly {
-                       get { return m_asm; }
-               }
+               public Collection<ModuleReference> ModuleReferences {
+                       get {
+                               if (modules != null)
+                                       return modules;
 
-               internal ReflectionController Controller {
-                       get { return m_controller; }
+                               if (HasImage)
+                                       return modules = Read (this, (_, reader) => reader.ReadModuleReferences ());
+
+                               return modules = new Collection<ModuleReference> ();
+                       }
                }
 
-               internal MetadataResolver Resolver {
-                       get { return m_resolver; }
+               public bool HasResources {
+                       get {
+                               if (resources != null)
+                                       return resources.Count > 0;
+
+                               if (HasImage)
+                                       return Image.HasTable (Table.ManifestResource) || Read (this, (_, reader) => reader.HasFileResource ());
+
+                               return false;
+                       }
                }
 
-               internal ImageReader ImageReader {
-                       get { return m_imgReader; }
+               public Collection<Resource> Resources {
+                       get {
+                               if (resources != null)
+                                       return resources;
+
+                               if (HasImage)
+                                       return resources = Read (this, (_, reader) => reader.ReadResources ());
+
+                               return resources = new Collection<Resource> ();
+                       }
                }
 
-               public Image Image {
-                       get { return m_image; }
-                       set {
-                               m_image = value;
-                               m_secReader = null;
+               public bool HasCustomAttributes {
+                       get {
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
+
+                               return this.GetHasCustomAttributes (this);
                        }
                }
 
-               public ModuleDefinition (string name, AssemblyDefinition asm) :
-                       this (name, asm, null, false)
-               {
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (this)); }
                }
 
-               public ModuleDefinition (string name, AssemblyDefinition asm, bool main) :
-                       this (name, asm, null, main)
-               {
+               public bool HasTypes {
+                       get {
+                               if (types != null)
+                                       return types.Count > 0;
+
+                               return HasImage && Image.HasTable (Table.TypeDef);
+                       }
                }
 
-               internal ModuleDefinition (string name, AssemblyDefinition asm, StructureReader reader, bool main) : base (name)
-               {
-                       if (asm == null)
-                               throw new ArgumentNullException ("asm");
-                       if (name == null || name.Length == 0)
-                               throw new ArgumentNullException ("name");
+               public Collection<TypeDefinition> Types {
+                       get {
+                               if (types != null)
+                                       return types;
 
-                       m_asm = asm;
-                       m_main = main;
-#if !CF_1_0
-                       m_mvid = Guid.NewGuid ();
-#endif
-                       if (reader != null) {
-                               m_image = reader.Image;
-                               m_imgReader = reader.ImageReader;
-                               m_manifestOnly = reader.ManifestOnly;
-                       } else
-                               m_image = Image.CreateImage ();
+                               if (HasImage)
+                                       return types = Read (this, (_, reader) => reader.ReadTypes ());
+
+                               return types = new TypeDefinitionCollection (this);
+                       }
+               }
+
+               public bool HasExportedTypes {
+                       get {
+                               if (exported_types != null)
+                                       return exported_types.Count > 0;
 
-                       m_modRefs = new ModuleReferenceCollection (this);
-                       m_asmRefs = new AssemblyNameReferenceCollection (this);
-                       m_res = new ResourceCollection (this);
-                       m_types = new TypeDefinitionCollection (this);
-                       m_refs = new TypeReferenceCollection (this);
-                       m_members = new MemberReferenceCollection (this);
+                               return HasImage && Image.HasTable (Table.ExportedType);
+                       }
+               }
+
+               public Collection<ExportedType> ExportedTypes {
+                       get {
+                               if (exported_types != null)
+                                       return exported_types;
 
-                       m_controller = new ReflectionController (this);
-                       m_resolver = new MetadataResolver (asm);
+                               if (HasImage)
+                                       return exported_types = Read (this, (_, reader) => reader.ReadExportedTypes ());
+
+                               return exported_types = new Collection<ExportedType> ();
+                       }
                }
 
-               public IMetadataTokenProvider LookupByToken (MetadataToken token)
-               {
-                       return m_controller.Reader.LookupByToken (token);
+               public MethodDefinition EntryPoint {
+                       get {
+                               if (entry_point != null)
+                                       return entry_point;
+
+                               if (HasImage)
+                                       return entry_point = Read (this, (_, reader) => reader.ReadEntryPoint ());
+
+                               return entry_point = null;
+                       }
+                       set { entry_point = value; }
                }
 
-               public IMetadataTokenProvider LookupByToken (TokenType table, int rid)
+               internal ModuleDefinition ()
                {
-                       return LookupByToken (new MetadataToken (table, (uint) rid));
+                       this.MetadataSystem = new MetadataSystem ();
+                       this.token = new MetadataToken (TokenType.Module, 1);
+                       this.assembly_resolver = GlobalAssemblyResolver.Instance;
                }
 
-               void CheckContext (TypeDefinition context)
+               internal ModuleDefinition (Image image)
+                       : this ()
                {
-                       if (context.Module != this)
-                               throw new ArgumentException ("The context parameter does not belongs to this module");
+                       this.Image = image;
+                       this.kind = image.Kind;
+                       this.runtime = image.Runtime;
+                       this.architecture = image.Architecture;
+                       this.attributes = image.Attributes;
+                       this.fq_name = image.FileName;
 
-                       CheckGenericParameterProvider (context);
+                       this.reader = new MetadataReader (this);
                }
 
-               void CheckContext (MethodDefinition context)
+               public bool HasTypeReference (string fullName)
                {
-                       CheckGenericParameterProvider (context);
+                       return HasTypeReference (string.Empty, fullName);
                }
 
-               static void CheckGenericParameterProvider (IGenericParameterProvider context)
+               public bool HasTypeReference (string scope, string fullName)
                {
-                       if (context == null)
-                               throw new ArgumentNullException ("context");
-                       if (context.GenericParameters.Count == 0)
-                               throw new ArgumentException ("The context parameter is not a generic type");
+                       CheckFullName (fullName);
+
+                       if (!HasImage)
+                               return false;
+
+                       return Read (this, (_, reader) => reader.GetTypeReference (scope, fullName) != null);
                }
 
-               ImportContext GetContext ()
+               public bool TryGetTypeReference (string fullName, out TypeReference type)
                {
-                       return new ImportContext (m_controller.Importer);
+                       return TryGetTypeReference (string.Empty, fullName, out type);
                }
 
-               static ImportContext GetContext (IImporter importer)
+               public bool TryGetTypeReference (string scope, string fullName, out TypeReference type)
                {
-                       return new ImportContext (importer);
+                       CheckFullName (fullName);
+
+                       if (!HasImage) {
+                               type = null;
+                               return false;
+                       }
+
+                       return (type = Read (this, (_, reader) => reader.GetTypeReference (scope, fullName))) != null;
                }
 
-               ImportContext GetContext (TypeDefinition context)
+               public IEnumerable<TypeReference> GetTypeReferences ()
                {
-                       return new ImportContext (m_controller.Importer, context);
+                       if (!HasImage)
+                               return Empty<TypeReference>.Array;
+
+                       return Read (this, (_, reader) => reader.GetTypeReferences ());
                }
 
-               ImportContext GetContext (MethodDefinition context)
+               public IEnumerable<MemberReference> GetMemberReferences ()
                {
-                       return new ImportContext (m_controller.Importer, context);
+                       if (!HasImage)
+                               return Empty<MemberReference>.Array;
+
+                       return Read (this, (_, reader) => reader.GetMemberReferences ());
                }
 
-               static ImportContext GetContext (IImporter importer, TypeDefinition context)
+               public TypeDefinition GetType (string fullName)
                {
-                       return new ImportContext (importer, context);
+                       CheckFullName (fullName);
+
+                       var position = fullName.IndexOf ('/');
+                       if (position > 0)
+                               return GetNestedType (fullName);
+
+                       return ((TypeDefinitionCollection) this.Types).GetType (fullName);
                }
 
-               public TypeReference Import (Type type)
+               public TypeDefinition GetType (string @namespace, string name)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
+                       Mixin.CheckName (name);
 
-                       return m_controller.Helper.ImportSystemType (type, GetContext ());
+                       return ((TypeDefinitionCollection) this.Types).GetType (@namespace ?? string.Empty, name);
                }
 
-               public TypeReference Import (Type type, TypeDefinition context)
+               static void CheckFullName (string fullName)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       CheckContext (context);
-
-                       return m_controller.Helper.ImportSystemType (type, GetContext (context));
+                       if (fullName == null)
+                               throw new ArgumentNullException ("fullName");
+                       if (fullName.Length == 0)
+                               throw new ArgumentException ();
                }
 
-               public TypeReference Import (Type type, MethodDefinition context)
+               TypeDefinition GetNestedType (string fullname)
                {
+                       var names = fullname.Split ('/');
+                       var type = GetType (names [0]);
+
                        if (type == null)
-                               throw new ArgumentNullException ("type");
-                       CheckContext (context);
+                               return null;
+
+                       for (int i = 1; i < names.Length; i++) {
+                               var nested_type = type.GetNestedType (names [i]);
+                               if (nested_type == null)
+                                       return null;
 
-                       return m_controller.Helper.ImportSystemType (type, GetContext (context));
+                               type = nested_type;
+                       }
+
+                       return type;
                }
 
-               public MethodReference Import (SR.MethodBase meth)
+               internal FieldDefinition Resolve (FieldReference field)
                {
-                       if (meth == null)
-                               throw new ArgumentNullException ("meth");
+                       return MetadataResolver.Resolve (AssemblyResolver, field);
+               }
 
-                       if (meth is SR.ConstructorInfo)
-                               return m_controller.Helper.ImportConstructorInfo (
-                                       meth as SR.ConstructorInfo, GetContext ());
-                       else
-                               return m_controller.Helper.ImportMethodInfo (
-                                       meth as SR.MethodInfo, GetContext ());
+               internal MethodDefinition Resolve (MethodReference method)
+               {
+                       return MetadataResolver.Resolve (AssemblyResolver, method);
                }
 
-               public MethodReference Import (SR.MethodBase meth, TypeDefinition context)
+               internal TypeDefinition Resolve (TypeReference type)
                {
-                       if (meth == null)
-                               throw new ArgumentNullException ("meth");
-                       CheckContext (context);
+                       return MetadataResolver.Resolve (AssemblyResolver, type);
+               }
 
-                       ImportContext import_context = GetContext (context);
+#if !READ_ONLY
 
-                       if (meth is SR.ConstructorInfo)
-                               return m_controller.Helper.ImportConstructorInfo (
-                                       meth as SR.ConstructorInfo, import_context);
-                       else
-                               return m_controller.Helper.ImportMethodInfo (
-                                       meth as SR.MethodInfo, import_context);
+               static void CheckType (object type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
                }
 
-               public FieldReference Import (SR.FieldInfo field)
+               static void CheckField (object field)
                {
                        if (field == null)
                                throw new ArgumentNullException ("field");
+               }
 
-                       return m_controller.Helper.ImportFieldInfo (field, GetContext ());
+               static void CheckMethod (object method)
+               {
+                       if (method == null)
+                               throw new ArgumentNullException ("method");
                }
 
-               public FieldReference Import (SR.FieldInfo field, TypeDefinition context)
+               static void CheckContext (IGenericParameterProvider context, ModuleDefinition module)
                {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
-                       CheckContext (context);
+                       if (context == null)
+                               return;
 
-                       return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+                       if (context.Module != module)
+                               throw new ArgumentException ();
                }
 
-               public FieldReference Import (SR.FieldInfo field, MethodDefinition context)
+#if !CF
+               public TypeReference Import (Type type)
                {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
-                       CheckContext (context);
+                       CheckType (type);
 
-                       return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+                       return MetadataImporter.ImportType (type, null, ImportGenericKind.Definition);
                }
 
-               public TypeReference Import (TypeReference type)
+               public TypeReference Import (Type type, TypeReference context)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
+                       return Import (type, (IGenericParameterProvider) context);
+               }
 
-                       return m_controller.Importer.ImportTypeReference (type, GetContext ());
+               public TypeReference Import (Type type, MethodReference context)
+               {
+                       return Import (type, (IGenericParameterProvider) context);
                }
 
-               public TypeReference Import (TypeReference type, TypeDefinition context)
+               TypeReference Import (Type type, IGenericParameterProvider context)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       CheckContext (context);
+                       CheckType (type);
+                       CheckContext (context, this);
 
-                       return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+                       return MetadataImporter.ImportType (
+                               type,
+                               (IGenericContext) context,
+                               context != null
+                                       ? ImportGenericKind.Open
+                                       : ImportGenericKind.Definition);
                }
 
-               public TypeReference Import (TypeReference type, MethodDefinition context)
+               public FieldReference Import (SR.FieldInfo field)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       CheckContext (context);
+                       CheckField (field);
 
-                       return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+                       return MetadataImporter.ImportField (field, null);
                }
 
-               public MethodReference Import (MethodReference meth)
+               public FieldReference Import (SR.FieldInfo field, TypeReference context)
                {
-                       if (meth == null)
-                               throw new ArgumentNullException ("meth");
+                       return Import (field, (IGenericParameterProvider) context);
+               }
 
-                       return m_controller.Importer.ImportMethodReference (meth, GetContext ());
+               public FieldReference Import (SR.FieldInfo field, MethodReference context)
+               {
+                       return Import (field, (IGenericParameterProvider) context);
                }
 
-               public MethodReference Import (MethodReference meth, TypeDefinition context)
+               FieldReference Import (SR.FieldInfo field, IGenericParameterProvider context)
                {
-                       if (meth == null)
-                               throw new ArgumentNullException ("meth");
-                       CheckContext (context);
+                       CheckField (field);
+                       CheckContext (context, this);
 
-                       return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+                       return MetadataImporter.ImportField (field, (IGenericContext) context);
                }
 
-               public MethodReference Import (MethodReference meth, MethodDefinition context)
+               public MethodReference Import (SR.MethodBase method)
                {
-                       if (meth == null)
-                               throw new ArgumentNullException ("meth");
-                       CheckContext (context);
+                       CheckMethod (method);
 
-                       return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+                       return MetadataImporter.ImportMethod (method, null, ImportGenericKind.Definition);
                }
 
-               public FieldReference Import (FieldReference field)
+               public MethodReference Import (SR.MethodBase method, TypeReference context)
                {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
+                       return Import (method, (IGenericParameterProvider) context);
+               }
 
-                       return m_controller.Importer.ImportFieldReference (field, GetContext ());
+               public MethodReference Import (SR.MethodBase method, MethodReference context)
+               {
+                       return Import (method, (IGenericParameterProvider) context);
                }
 
-               public FieldReference Import (FieldReference field, TypeDefinition context)
+               MethodReference Import (SR.MethodBase method, IGenericParameterProvider context)
                {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
-                       CheckContext (context);
+                       CheckMethod (method);
+                       CheckContext (context, this);
 
-                       return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+                       return MetadataImporter.ImportMethod (method,
+                               (IGenericContext) context,
+                               context != null
+                                       ? ImportGenericKind.Open
+                                       : ImportGenericKind.Definition);
                }
+#endif
 
-               public FieldReference Import (FieldReference field, MethodDefinition context)
+               public TypeReference Import (TypeReference type)
                {
-                       if (field == null)
-                               throw new ArgumentNullException ("field");
-                       CheckContext (context);
+                       CheckType (type);
+
+                       if (type.Module == this)
+                               return type;
 
-                       return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+                       return MetadataImporter.ImportType (type, null);
                }
 
-               static FieldDefinition ImportFieldDefinition (FieldDefinition field, ImportContext context)
+               public TypeReference Import (TypeReference type, TypeReference context)
                {
-                       return FieldDefinition.Clone (field, context);
+                       return Import (type, (IGenericParameterProvider) context);
                }
 
-               static MethodDefinition ImportMethodDefinition (MethodDefinition meth, ImportContext context)
+               public TypeReference Import (TypeReference type, MethodReference context)
                {
-                       return MethodDefinition.Clone (meth, context);
+                       return Import (type, (IGenericParameterProvider) context);
                }
 
-               static TypeDefinition ImportTypeDefinition (TypeDefinition type, ImportContext context)
+               TypeReference Import (TypeReference type, IGenericParameterProvider context)
                {
-                       return TypeDefinition.Clone (type, context);
+                       CheckType (type);
+
+                       if (type.Module == this)
+                               return type;
+
+                       CheckContext (context, this);
+
+                       return MetadataImporter.ImportType (type, (IGenericContext) context);
                }
 
-               public TypeDefinition Inject (TypeDefinition type)
+               public FieldReference Import (FieldReference field)
                {
-                       return Inject (type, m_controller.Importer);
+                       CheckField (field);
+
+                       if (field.Module == this)
+                               return field;
+
+                       return MetadataImporter.ImportField (field, null);
                }
 
-               public TypeDefinition Inject (TypeDefinition type, IImporter importer)
+               public FieldReference Import (FieldReference field, TypeReference context)
                {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (importer == null)
-                               throw new ArgumentNullException ("importer");
+                       return Import (field, (IGenericParameterProvider) context);
+               }
 
-                       TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer));
-                       this.Types.Add (definition);
-                       return definition;
+               public FieldReference Import (FieldReference field, MethodReference context)
+               {
+                       return Import (field, (IGenericParameterProvider) context);
                }
 
-               public TypeDefinition Inject (TypeDefinition type, TypeDefinition context)
+               FieldReference Import (FieldReference field, IGenericParameterProvider context)
                {
-                       return Inject (type, context, m_controller.Importer);
+                       CheckField (field);
+
+                       if (field.Module == this)
+                               return field;
+
+                       CheckContext (context, this);
+
+                       return MetadataImporter.ImportField (field, (IGenericContext) context);
                }
 
-               public TypeDefinition Inject (TypeDefinition type, TypeDefinition context, IImporter importer)
+               public MethodReference Import (MethodReference method)
                {
-                       Check (type, context, importer);
+                       CheckMethod (method);
 
-                       TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer, context));
-                       context.NestedTypes.Add (definition);
-                       return definition;
+                       if (method.Module == this)
+                               return method;
+
+                       return MetadataImporter.ImportMethod (method, null);
                }
 
-               public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context)
+               public MethodReference Import (MethodReference method, TypeReference context)
                {
-                       return Inject (meth, context, m_controller.Importer);
+                       return Import (method, (IGenericParameterProvider) context);
                }
 
-               void Check (IMemberDefinition definition, TypeDefinition context, IImporter importer)
+               public MethodReference Import (MethodReference method, MethodReference context)
                {
-                       if (definition == null)
-                               throw new ArgumentNullException ("definition");
-                       if (context == null)
-                               throw new ArgumentNullException ("context");
-                       if (importer == null)
-                               throw new ArgumentNullException ("importer");
-                       if (context.Module != this)
-                               throw new ArgumentException ("The context parameter does not belongs to this module");
+                       return Import (method, (IGenericParameterProvider) context);
+               }
+
+               MethodReference Import (MethodReference method, IGenericParameterProvider context)
+               {
+                       CheckMethod (method);
+
+                       if (method.Module == this)
+                               return method;
+
+                       CheckContext (context, this);
+
+                       return MetadataImporter.ImportMethod (method, (IGenericContext) context);
                }
 
-               public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context, IImporter importer)
+#endif
+
+               public IMetadataTokenProvider LookupToken (int token)
                {
-                       Check (meth, context, importer);
+                       return LookupToken (new MetadataToken ((uint) token));
+               }
 
-                       MethodDefinition definition = ImportMethodDefinition (meth, GetContext (importer, context));
-                       context.Methods.Add (definition);
-                       return definition;
+               public IMetadataTokenProvider LookupToken (MetadataToken token)
+               {
+                       return Read (this, (_, reader) => reader.LookupToken (token));
                }
 
-               public FieldDefinition Inject (FieldDefinition field, TypeDefinition context)
+               internal TRet Read<TItem, TRet> (TItem item, Func<TItem, MetadataReader, TRet> read)
                {
-                       return Inject (field, context, m_controller.Importer);
+                       var position = reader.position;
+                       var context = reader.context;
+
+                       var ret = read (item, reader);
+
+                       reader.position = position;
+                       reader.context = context;
+
+                       return ret;
                }
 
-               public FieldDefinition Inject (FieldDefinition field, TypeDefinition context, IImporter importer)
+               void ProcessDebugHeader ()
                {
-                       Check (field, context, importer);
+                       if (Image == null || Image.Debug.IsZero)
+                               return;
+
+                       byte [] header;
+                       var directory = Image.GetDebugHeader (out header);
+
+                       if (!SymbolReader.ProcessDebugHeader (directory, header))
+                               throw new InvalidOperationException ();
+               }
+
+#if !READ_ONLY
 
-                       FieldDefinition definition = ImportFieldDefinition (field, GetContext (importer, context));
-                       context.Fields.Add (definition);
-                       return definition;
+               public static ModuleDefinition CreateModule (string name, ModuleKind kind)
+               {
+                       return CreateModule (name, new ModuleParameters { Kind = kind });
                }
 
-               public void FullLoad ()
+               public static ModuleDefinition CreateModule (string name, ModuleParameters parameters)
                {
-                       if (m_manifestOnly)
-                               m_controller.Reader.VisitModuleDefinition (this);
+                       Mixin.CheckName (name);
+                       Mixin.CheckParameters (parameters);
+
+                       var module = new ModuleDefinition {
+                               Name = name,
+                               kind = parameters.Kind,
+                               runtime = parameters.Runtime,
+                               architecture = parameters.Architecture,
+                               mvid = Guid.NewGuid (),
+                               Attributes = ModuleAttributes.ILOnly,
+                       };
 
-                       foreach (TypeDefinition type in this.Types) {
-                               foreach (MethodDefinition meth in type.Methods)
-                                       meth.LoadBody ();
-                               foreach (MethodDefinition ctor in type.Constructors)
-                                       ctor.LoadBody ();
+                       if (parameters.AssemblyResolver != null)
+                               module.assembly_resolver = parameters.AssemblyResolver;
+
+                       if (parameters.Kind != ModuleKind.NetModule) {
+                               var assembly = new AssemblyDefinition ();
+                               module.assembly = assembly;
+                               module.assembly.Name = new AssemblyNameDefinition (name, new Version (0, 0));
+                               assembly.main_module = module;
                        }
 
-                       if (m_controller.Reader.SymbolReader == null)
-                               return;
+                       module.Types.Add (new TypeDefinition (string.Empty, "<Module>", TypeAttributes.NotPublic));
 
-                       m_controller.Reader.SymbolReader.Dispose ();
-                       m_controller.Reader.SymbolReader = null;
+                       return module;
                }
 
-               public void LoadSymbols ()
+#endif
+
+               public void ReadSymbols ()
                {
-                       m_controller.Reader.SymbolReader = SymbolStoreHelper.GetReader (this);
+                       if (string.IsNullOrEmpty (fq_name))
+                               throw new InvalidOperationException ();
+
+                       var provider = SymbolProvider.GetPlatformReaderProvider ();
+
+                       SymbolReader = provider.GetSymbolReader (this, fq_name);
+
+                       ProcessDebugHeader ();
                }
 
-               public void LoadSymbols (ISymbolReader reader)
+               public void ReadSymbols (ISymbolReader reader)
                {
-                       m_controller.Reader.SymbolReader = reader;
+                       if (reader == null)
+                               throw new ArgumentNullException ("reader");
+
+                       SymbolReader = reader;
+
+                       ProcessDebugHeader ();
                }
 
-               public void SaveSymbols ()
+               public static ModuleDefinition ReadModule (string fileName)
                {
-                       m_controller.Writer.SaveSymbols = true;
+                       return ReadModule (fileName, new ReaderParameters (ReadingMode.Deferred));
                }
 
-               public void SaveSymbols (ISymbolWriter writer)
+               public static ModuleDefinition ReadModule (Stream stream)
                {
-                       SaveSymbols ();
-                       m_controller.Writer.SymbolWriter = writer;
+                       return ReadModule (stream, new ReaderParameters (ReadingMode.Deferred));
                }
 
-               public void SaveSymbols (string outputDirectory)
+               public static ModuleDefinition ReadModule (string fileName, ReaderParameters parameters)
                {
-                       SaveSymbols ();
-                       m_controller.Writer.OutputFile = outputDirectory;
+                       using (var stream = GetFileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) {
+                               return ReadModule (stream, parameters);
+                       }
                }
 
-               public void SaveSymbols (string outputDirectory, ISymbolWriter writer)
+               static void CheckStream (object stream)
                {
-                       SaveSymbols (outputDirectory);
-                       m_controller.Writer.SymbolWriter = writer;
+                       if (stream == null)
+                               throw new ArgumentNullException ("stream");
                }
 
-               public byte [] GetAsByteArray (CustomAttribute ca)
+               public static ModuleDefinition ReadModule (Stream stream, ReaderParameters parameters)
                {
-                       CustomAttribute customAttr = ca;
-                       if (!ca.Resolved)
-                               if (customAttr.Blob != null)
-                                       return customAttr.Blob;
-                               else
-                                       return new byte [0];
+                       CheckStream (stream);
+                       if (!stream.CanRead || !stream.CanSeek)
+                               throw new ArgumentException ();
+                       Mixin.CheckParameters (parameters);
 
-                       return m_controller.Writer.SignatureWriter.CompressCustomAttribute (
-                               ReflectionWriter.GetCustomAttributeSig (ca), ca.Constructor);
+                       return ModuleReader.CreateModuleFrom (
+                               ImageReader.ReadImageFrom (stream),
+                               parameters);
                }
 
-               public byte [] GetAsByteArray (SecurityDeclaration dec)
+               static Stream GetFileStream (string fileName, FileMode mode, FileAccess access, FileShare share)
                {
-                       // TODO - add support for 2.0 format
-                       // note: the 1.x format is still supported in 2.0 so this isn't an immediate problem
-                       if (!dec.Resolved)
-                               return dec.Blob;
+                       if (fileName == null)
+                               throw new ArgumentNullException ("fileName");
+                       if (fileName.Length == 0)
+                               throw new ArgumentException ();
 
-#if !CF_1_0 && !CF_2_0
-                       if (dec.PermissionSet != null)
-                               return Encoding.Unicode.GetBytes (dec.PermissionSet.ToXml ().ToString ());
-#endif
+                       return new FileStream (fileName, mode, access, share);
+               }
+
+#if !READ_ONLY
 
-                       return new byte [0];
+               public void Write (string fileName)
+               {
+                       Write (fileName, new WriterParameters ());
                }
 
-               public CustomAttribute FromByteArray (MethodReference ctor, byte [] data)
+               public void Write (Stream stream)
                {
-                       return m_controller.Reader.GetCustomAttribute (ctor, data);
+                       Write (stream, new WriterParameters ());
                }
 
-               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
+               public void Write (string fileName, WriterParameters parameters)
                {
-                       if (m_secReader == null)
-                               m_secReader = new SecurityDeclarationReader (Image.MetadataRoot, m_controller.Reader);
-                       return m_secReader.FromByteArray (action, declaration);
+                       using (var stream = GetFileStream (fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) {
+                               Write (stream, parameters);
+                       }
                }
 
-               public override void Accept (IReflectionStructureVisitor visitor)
+               public void Write (Stream stream, WriterParameters parameters)
                {
-                       visitor.VisitModuleDefinition (this);
+                       CheckStream (stream);
+                       if (!stream.CanWrite || !stream.CanSeek)
+                               throw new ArgumentException ();
+                       Mixin.CheckParameters (parameters);
 
-                       this.AssemblyReferences.Accept (visitor);
-                       this.ModuleReferences.Accept (visitor);
-                       this.Resources.Accept (visitor);
+                       ModuleWriter.WriteModuleTo (this, stream, parameters);
                }
 
-               public void Accept (IReflectionVisitor visitor)
+#endif
+
+       }
+
+       static partial class Mixin {
+
+               public static void CheckParameters (object parameters)
                {
-                       visitor.VisitModuleDefinition (this);
+                       if (parameters == null)
+                               throw new ArgumentNullException ("parameters");
+               }
 
-                       this.Types.Accept (visitor);
-                       this.TypeReferences.Accept (visitor);
+               public static bool HasImage (this ModuleDefinition self)
+               {
+                       return self != null && self.HasImage;
                }
 
-               public override string ToString ()
+               public static string GetFullyQualifiedName (this Stream self)
                {
-                       string s = (m_main ? "(main), Mvid=" : "Mvid=");
-                       return s + m_mvid;
+#if !SILVERLIGHT
+                       var file_stream = self as FileStream;
+                       if (file_stream == null)
+                               return string.Empty;
+
+                       return Path.GetFullPath (file_stream.Name);
+#else
+                       return string.Empty;
+#endif
+               }
+
+               public static TargetRuntime ParseRuntime (this string self)
+               {
+                       switch (self [1]) {
+                       case '1':
+                               return self [3] == '0'
+                                       ? TargetRuntime.Net_1_0
+                                       : TargetRuntime.Net_1_1;
+                       case '2':
+                               return TargetRuntime.Net_2_0;
+                       case '4':
+                       default:
+                               return TargetRuntime.Net_4_0;
+                       }
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs
deleted file mode 100644 (file)
index 71d1619..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ModuleDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ModuleDefinitionCollection : CollectionBase, IReflectionStructureVisitable {
-
-               AssemblyDefinition m_container;
-
-               public ModuleDefinition this [int index] {
-                       get { return List [index] as ModuleDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public AssemblyDefinition Container {
-                       get { return m_container; }
-               }
-
-               public ModuleDefinitionCollection (AssemblyDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (ModuleDefinition value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (ModuleDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (ModuleDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, ModuleDefinition value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (ModuleDefinition value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is ModuleDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (ModuleDefinition).FullName);
-               }
-
-               public void Accept (IReflectionStructureVisitor visitor)
-               {
-                       visitor.VisitModuleDefinitionCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs
new file mode 100644 (file)
index 0000000..eb57890
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// ModuleKind.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+       public enum ModuleKind {
+               Dll,
+               Console,
+               Windows,
+               NetModule,
+       }
+
+       public enum TargetArchitecture {
+               I386,
+               AMD64,
+               IA64,
+       }
+
+       [Flags]
+       public enum ModuleAttributes {
+               ILOnly = 1,
+               Required32Bit = 2,
+               StrongNameSigned = 8,
+       }
+}
index 713b96a1fb1dfda89017b979147f17c9f7fbfdc6..11d98b74c7b14d5722d963f33c94610e539223ad 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
-       using System.Collections;
+       public class ModuleReference : IMetadataScope {
 
-       using Mono.Cecil;
-       using Mono.Cecil.Metadata;
+               string name;
 
-       public class ModuleReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
-
-               string m_name;
-               MetadataToken m_token;
-               IDictionary m_annotations;
+               internal MetadataToken token;
 
                public string Name {
-                       get { return m_name; }
-                       set { m_name = value; }
+                       get { return name; }
+                       set { name = value; }
+               }
+
+               public virtual MetadataScopeType MetadataScopeType {
+                       get { return MetadataScopeType.ModuleReference; }
                }
 
                public MetadataToken MetadataToken {
-                       get { return m_token; }
-                       set { m_token = value; }
+                       get { return token; }
+                       set { token = value; }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
-                       get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
-                       }
+               internal ModuleReference ()
+               {
+                       this.token = new MetadataToken (TokenType.ModuleRef);
                }
 
                public ModuleReference (string name)
+                       : this ()
                {
-                       m_name = name;
+                       Mixin.CheckName (name);
+                       this.name = name;
                }
 
-               public virtual void Accept (IReflectionStructureVisitor visitor)
+               public override string ToString ()
                {
-                       visitor.VisitModuleReference (this);
+                       return name;
                }
        }
 }
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs
deleted file mode 100644 (file)
index 03057b3..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ModuleReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ModuleReferenceCollection : CollectionBase, IReflectionStructureVisitable {
-
-               ModuleDefinition m_container;
-
-               public ModuleReference this [int index] {
-                       get { return List [index] as ModuleReference; }
-                       set { List [index] = value; }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public ModuleReferenceCollection (ModuleDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (ModuleReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (ModuleReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (ModuleReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, ModuleReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (ModuleReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is ModuleReference))
-                               throw new ArgumentException ("Must be of type " + typeof (ModuleReference).FullName);
-               }
-
-               public void Accept (IReflectionStructureVisitor visitor)
-               {
-                       visitor.VisitModuleReferenceCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NameObjectCollectionBase.cs b/mcs/class/Mono.Cecil/Mono.Cecil/NameObjectCollectionBase.cs
deleted file mode 100644 (file)
index 80b0c11..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-using System;
-using System.Collections;
-using System.Runtime.Serialization;
-
-#if NO_SYSTEM_DLL
-namespace System.Collections.Specialized
-{
-       [Serializable]
-       public abstract class NameObjectCollectionBase : ICollection, IEnumerable, ISerializable, IDeserializationCallback
-       {
-               private Hashtable m_ItemsContainer;
-               /// <summary>
-               /// Extends Hashtable based Items container to support storing null-key pairs
-               /// </summary>
-               private _Item m_NullKeyItem;
-               private ArrayList m_ItemsArray;
-               private IHashCodeProvider m_hashprovider;
-               private IComparer m_comparer;
-               private int m_defCapacity;
-               private bool m_readonly;
-               SerializationInfo infoCopy;
-               private KeysCollection keyscoll;
-#if NET_2_0
-               private IEqualityComparer equality_comparer;
-
-               internal IEqualityComparer EqualityComparer {
-                       get { return equality_comparer; }
-               }
-#endif
-               internal IComparer Comparer
-               {
-                       get { return m_comparer; }
-               }
-
-               internal IHashCodeProvider HashCodeProvider
-               {
-                       get { return m_hashprovider; }
-               }
-
-               internal class _Item
-               {
-                       public string key;
-                       public object value;
-                       public _Item(string key, object value)
-                       {
-                               this.key = key;
-                               this.value = value;
-                       }
-               }
-               /// <summary>
-               /// Implements IEnumerable interface for KeysCollection
-               /// </summary>
-               [Serializable]
-               internal class _KeysEnumerator : IEnumerator
-               {
-                       private NameObjectCollectionBase m_collection;
-                       private int m_position;
-
-                       internal _KeysEnumerator(NameObjectCollectionBase collection)
-                       {
-                               m_collection = collection;
-                               Reset();
-                       }
-                       public object Current
-                       {
-
-                               get
-                               {
-                                       if ((m_position < m_collection.Count) || (m_position < 0))
-                                               return m_collection.BaseGetKey(m_position);
-                                       else
-                                               throw new InvalidOperationException();
-                               }
-
-                       }
-                       public bool MoveNext()
-                       {
-                               return ((++m_position) < m_collection.Count);
-                       }
-                       public void Reset()
-                       {
-                               m_position = -1;
-                       }
-               }
-
-               /// <summary>
-               /// SDK: Represents a collection of the String keys of a collection.
-               /// </summary>
-               [Serializable]
-               public class KeysCollection : ICollection, IEnumerable
-               {
-                       private NameObjectCollectionBase m_collection;
-
-                       internal KeysCollection(NameObjectCollectionBase collection)
-                       {
-                               this.m_collection = collection;
-                       }
-
-                       public virtual string Get(int index)
-                       {
-                               return m_collection.BaseGetKey(index);
-                       }
-
-                       // ICollection methods -----------------------------------
-                       void ICollection.CopyTo(Array array, int arrayIndex)
-                       {
-                               ArrayList items = m_collection.m_ItemsArray;
-#if NET_2_0
-                               if (null == array)
-                                       throw new ArgumentNullException ("array");
-
-                               if (arrayIndex < 0)
-                                       throw new ArgumentOutOfRangeException ("arrayIndex");
-
-                               if ((array.Length > 0) && (arrayIndex >= array.Length))
-                                       throw new ArgumentException ("arrayIndex is equal to or greater than array.Length");
-
-                               if (arrayIndex + items.Count > array.Length)
-                                       throw new ArgumentException ("Not enough room from arrayIndex to end of array for this KeysCollection");
-#endif
-
-                               if (array != null && array.Rank > 1)
-                                       throw new ArgumentException("array is multidimensional");
-
-                               object[] objArray = (object[])array;
-                               for (int i = 0; i < items.Count; i++, arrayIndex++)
-                                       objArray[arrayIndex] = ((_Item)items[i]).key;
-                       }
-
-                       bool ICollection.IsSynchronized
-                       {
-                               get
-                               {
-                                       return false;
-                               }
-                       }
-                       object ICollection.SyncRoot
-                       {
-                               get
-                               {
-                                       return m_collection;
-                               }
-                       }
-                       /// <summary>
-                       /// Gets the number of keys in the NameObjectCollectionBase.KeysCollection
-                       /// </summary>
-                       public int Count
-                       {
-                               get
-                               {
-                                       return m_collection.Count;
-                               }
-                       }
-
-                       public string this[int index]
-                       {
-                               get { return Get(index); }
-                       }
-
-                       // IEnumerable methods --------------------------------
-                       /// <summary>
-                       /// SDK: Returns an enumerator that can iterate through the NameObjectCollectionBase.KeysCollection.
-                       /// </summary>
-                       /// <returns></returns>
-                       public IEnumerator GetEnumerator()
-                       {
-                               return new _KeysEnumerator(m_collection);
-                       }
-               }
-
-               //--------------- Protected Instance Constructors --------------
-
-               /// <summary>
-               /// SDK: Initializes a new instance of the NameObjectCollectionBase class that is empty.
-               /// </summary>
-               protected NameObjectCollectionBase()
-               {
-                       m_readonly = false;
-#if NET_1_0
-                       m_hashprovider = CaseInsensitiveHashCodeProvider.Default;
-                       m_comparer = CaseInsensitiveComparer.Default;
-#else
-                       m_hashprovider = CaseInsensitiveHashCodeProvider.DefaultInvariant;
-                       m_comparer = CaseInsensitiveComparer.DefaultInvariant;
-#endif
-                       m_defCapacity = 0;
-                       Init();
-               }
-
-               protected NameObjectCollectionBase(int capacity)
-               {
-                       m_readonly = false;
-#if NET_1_0
-                       m_hashprovider = CaseInsensitiveHashCodeProvider.Default;
-                       m_comparer = CaseInsensitiveComparer.Default;
-#else
-                       m_hashprovider = CaseInsensitiveHashCodeProvider.DefaultInvariant;
-                       m_comparer = CaseInsensitiveComparer.DefaultInvariant;
-#endif
-                       m_defCapacity = capacity;
-                       Init();
-               }
-
-#if NET_2_0
-
-               internal NameObjectCollectionBase (IEqualityComparer equalityComparer, IComparer comparer, IHashCodeProvider hcp)
-               {
-                       equality_comparer = equalityComparer;
-                       m_comparer = comparer;
-                       m_hashprovider = hcp;
-                       m_readonly = false;
-                       m_defCapacity = 0;
-                       Init ();
-               }
-
-               protected NameObjectCollectionBase (IEqualityComparer equalityComparer) : this( (equalityComparer == null ? StringComparer.InvariantCultureIgnoreCase : equalityComparer), null, null)
-               {
-               }
-
-               [Obsolete ("Use NameObjectCollectionBase(IEqualityComparer)")]
-#endif
-               protected NameObjectCollectionBase(IHashCodeProvider hashProvider, IComparer comparer)
-               {
-                       m_comparer = comparer;
-                       m_hashprovider = hashProvider;
-                       m_readonly = false;
-                       m_defCapacity = 0;
-                       Init();
-               }
-
-               protected NameObjectCollectionBase(SerializationInfo info, StreamingContext context)
-               {
-                       infoCopy = info;
-               }
-
-#if NET_2_0
-               protected NameObjectCollectionBase (int capacity, IEqualityComparer equalityComparer)
-               {
-                       m_readonly = false;
-                       equality_comparer = (equalityComparer == null ? StringComparer.InvariantCultureIgnoreCase : equalityComparer);
-                       m_defCapacity = capacity;
-                       Init();
-               }
-
-               [Obsolete ("Use NameObjectCollectionBase(int,IEqualityComparer)")]
-#endif
-               protected NameObjectCollectionBase(int capacity, IHashCodeProvider hashProvider, IComparer comparer)
-               {
-                       m_readonly = false;
-
-                       m_hashprovider = hashProvider;
-                       m_comparer = comparer;
-                       m_defCapacity = capacity;
-                       Init();
-               }
-
-               private void Init()
-               {
-#if NET_2_0
-                       if (equality_comparer != null)
-                               m_ItemsContainer = new Hashtable (m_defCapacity, equality_comparer);
-                       else
-                               m_ItemsContainer = new Hashtable (m_defCapacity, m_hashprovider, m_comparer);
-#else
-                       m_ItemsContainer = new Hashtable(m_defCapacity, m_hashprovider, m_comparer);
-#endif
-                       m_ItemsArray = new ArrayList();
-                       m_NullKeyItem = null;
-               }
-
-               //--------------- Public Instance Properties -------------------
-
-               public virtual NameObjectCollectionBase.KeysCollection Keys
-               {
-                       get
-                       {
-                               if (keyscoll == null)
-                                       keyscoll = new KeysCollection(this);
-                               return keyscoll;
-                       }
-               }
-
-               //--------------- Public Instance Methods ----------------------
-               //
-               /// <summary>
-               /// SDK: Returns an enumerator that can iterate through the NameObjectCollectionBase.
-               ///
-               /// <remark>This enumerator returns the keys of the collection as strings.</remark>
-               /// </summary>
-               /// <returns></returns>
-               public
-#if NET_2_0
-               virtual
-#endif
- IEnumerator GetEnumerator()
-               {
-                       return new _KeysEnumerator(this);
-               }
-
-               // ISerializable
-               public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
-               {
-                       if (info == null)
-                               throw new ArgumentNullException("info");
-
-                       int count = Count;
-                       string[] keys = new string[count];
-                       object[] values = new object[count];
-                       int i = 0;
-                       foreach (_Item item in m_ItemsArray)
-                       {
-                               keys[i] = item.key;
-                               values[i] = item.value;
-                               i++;
-                       }
-
-#if NET_2_0
-                       if (equality_comparer != null) {
-                               info.AddValue ("KeyComparer", equality_comparer, typeof (IEqualityComparer));
-                               info.AddValue ("Version", 4, typeof (int));
-                       } else {
-                               info.AddValue ("HashProvider", m_hashprovider, typeof (IHashCodeProvider));
-                               info.AddValue ("Comparer", m_comparer, typeof (IComparer));
-                               info.AddValue ("Version", 2, typeof (int));
-                       }
-#else
-                       info.AddValue("HashProvider", m_hashprovider, typeof(IHashCodeProvider));
-                       info.AddValue("Comparer", m_comparer, typeof(IComparer));
-#endif
-                       info.AddValue("ReadOnly", m_readonly);
-                       info.AddValue("Count", count);
-                       info.AddValue("Keys", keys, typeof(string[]));
-                       info.AddValue("Values", values, typeof(object[]));
-               }
-
-               // ICollection
-               public virtual int Count
-               {
-                       get
-                       {
-                               return m_ItemsArray.Count;
-                       }
-               }
-
-               bool ICollection.IsSynchronized
-               {
-                       get { return false; }
-               }
-
-               object ICollection.SyncRoot
-               {
-                       get { return this; }
-               }
-
-               void ICollection.CopyTo(Array array, int index)
-               {
-                       ((ICollection)Keys).CopyTo(array, index);
-               }
-
-               // IDeserializationCallback
-               public virtual void OnDeserialization(object sender)
-               {
-                       SerializationInfo info = infoCopy;
-
-                       // If a subclass overrides the serialization constructor
-                       // and inplements its own serialization process, infoCopy will
-                       // be null and we can ignore this callback.
-                       if (info == null)
-                               return;
-
-                       infoCopy = null;
-                       m_hashprovider = (IHashCodeProvider)info.GetValue("HashProvider",
-                                                                               typeof(IHashCodeProvider));
-#if NET_2_0
-                       if (m_hashprovider == null) {
-                               equality_comparer = (IEqualityComparer) info.GetValue ("KeyComparer", typeof (IEqualityComparer));
-                       } else {
-                               m_comparer = (IComparer) info.GetValue ("Comparer", typeof (IComparer));
-                               if (m_comparer == null)
-                                       throw new SerializationException ("The comparer is null");
-                       }
-#else
-                       if (m_hashprovider == null)
-                               throw new SerializationException("The hash provider is null");
-
-                       m_comparer = (IComparer)info.GetValue("Comparer", typeof(IComparer));
-                       if (m_comparer == null)
-                               throw new SerializationException("The comparer is null");
-#endif
-                       m_readonly = info.GetBoolean("ReadOnly");
-                       string[] keys = (string[])info.GetValue("Keys", typeof(string[]));
-                       if (keys == null)
-                               throw new SerializationException("keys is null");
-
-                       object[] values = (object[])info.GetValue("Values", typeof(object[]));
-                       if (values == null)
-                               throw new SerializationException("values is null");
-
-                       Init();
-                       int count = keys.Length;
-                       for (int i = 0; i < count; i++)
-                               BaseAdd(keys[i], values[i]);
-               }
-
-               //--------------- Protected Instance Properties ----------------
-               /// <summary>
-               /// SDK: Gets or sets a value indicating whether the NameObjectCollectionBase instance is read-only.
-               /// </summary>
-               protected bool IsReadOnly
-               {
-                       get
-                       {
-                               return m_readonly;
-                       }
-                       set
-                       {
-                               m_readonly = value;
-                       }
-               }
-
-               //--------------- Protected Instance Methods -------------------
-               /// <summary>
-               /// Adds an Item with the specified key and value into the <see cref="NameObjectCollectionBase"/>NameObjectCollectionBase instance.
-               /// </summary>
-               /// <param name="name"></param>
-               /// <param name="value"></param>
-               protected void BaseAdd(string name, object value)
-               {
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-
-                       _Item newitem = new _Item(name, value);
-
-                       if (name == null)
-                       {
-                               //todo: consider nullkey entry
-                               if (m_NullKeyItem == null)
-                                       m_NullKeyItem = newitem;
-                       }
-                       else
-                               if (m_ItemsContainer[name] == null)
-                               {
-                                       m_ItemsContainer.Add(name, newitem);
-                               }
-                       m_ItemsArray.Add(newitem);
-               }
-
-               protected void BaseClear()
-               {
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-                       Init();
-               }
-
-               /// <summary>
-               /// SDK: Gets the value of the entry at the specified index of the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <param name="index"></param>
-               /// <returns></returns>
-               protected object BaseGet(int index)
-               {
-                       return ((_Item)m_ItemsArray[index]).value;
-               }
-
-               /// <summary>
-               /// SDK: Gets the value of the first entry with the specified key from the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <remark>CAUTION: The BaseGet method does not distinguish between a null reference which is returned because the specified key is not found and a null reference which is returned because the value associated with the key is a null reference.</remark>
-               /// <param name="name"></param>
-               /// <returns></returns>
-               protected object BaseGet(string name)
-               {
-                       _Item item = FindFirstMatchedItem(name);
-                       /// CAUTION: The BaseGet method does not distinguish between a null reference which is returned because the specified key is not found and a null reference which is returned because the value associated with the key is a null reference.
-                       if (item == null)
-                               return null;
-                       else
-                               return item.value;
-               }
-
-               /// <summary>
-               /// SDK:Returns a String array that contains all the keys in the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <returns>A String array that contains all the keys in the NameObjectCollectionBase instance.</returns>
-               protected string[] BaseGetAllKeys()
-               {
-                       int cnt = m_ItemsArray.Count;
-                       string[] allKeys = new string[cnt];
-                       for (int i = 0; i < cnt; i++)
-                               allKeys[i] = BaseGetKey(i);//((_Item)m_ItemsArray[i]).key;
-
-                       return allKeys;
-               }
-
-               /// <summary>
-               /// SDK: Returns an Object array that contains all the values in the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <returns>An Object array that contains all the values in the NameObjectCollectionBase instance.</returns>
-               protected object[] BaseGetAllValues()
-               {
-                       int cnt = m_ItemsArray.Count;
-                       object[] allValues = new object[cnt];
-                       for (int i = 0; i < cnt; i++)
-                               allValues[i] = BaseGet(i);
-
-                       return allValues;
-               }
-
-               protected object[] BaseGetAllValues(Type type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException("'type' argument can't be null");
-                       int cnt = m_ItemsArray.Count;
-                       object[] allValues = (object[])Array.CreateInstance(type, cnt);
-                       for (int i = 0; i < cnt; i++)
-                               allValues[i] = BaseGet(i);
-
-                       return allValues;
-               }
-
-               protected string BaseGetKey(int index)
-               {
-                       return ((_Item)m_ItemsArray[index]).key;
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the NameObjectCollectionBase instance contains entries whose keys are not a null reference
-               /// </summary>
-               /// <returns>true if the NameObjectCollectionBase instance contains entries whose keys are not a null reference otherwise, false.</returns>
-               protected bool BaseHasKeys()
-               {
-                       return (m_ItemsContainer.Count > 0);
-               }
-
-               protected void BaseRemove(string name)
-               {
-                       int cnt = 0;
-                       String key;
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-                       if (name != null)
-                       {
-                               m_ItemsContainer.Remove(name);
-                       }
-                       else
-                       {
-                               m_NullKeyItem = null;
-                       }
-
-                       cnt = m_ItemsArray.Count;
-                       for (int i = 0; i < cnt; )
-                       {
-                               key = BaseGetKey(i);
-                               if (Equals(key, name))
-                               {
-                                       m_ItemsArray.RemoveAt(i);
-                                       cnt--;
-                               }
-                               else
-                                       i++;
-                       }
-               }
-
-               /// <summary>
-               ///
-               /// </summary>
-               /// <param name="index"></param>
-               /// <LAME>This function implemented the way Microsoft implemented it -
-               /// item is removed from hashtable and array without considering the case when there are two items with the same key but different values in array.
-               /// E.g. if
-               /// hashtable is [("Key1","value1")] and array contains [("Key1","value1")("Key1","value2")] then
-               /// after RemoveAt(1) the collection will be in following state:
-               /// hashtable:[]
-               /// array: [("Key1","value1")]
-               /// It's ok only then the key is uniquely assosiated with the value
-               /// To fix it a comparsion of objects stored under the same key in the hashtable and in the arraylist should be added
-               /// </LAME>>
-               protected void BaseRemoveAt(int index)
-               {
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-                       string key = BaseGetKey(index);
-                       if (key != null)
-                       {
-                               // TODO: see LAME description above
-                               m_ItemsContainer.Remove(key);
-                       }
-                       else
-                               m_NullKeyItem = null;
-                       m_ItemsArray.RemoveAt(index);
-               }
-
-               /// <summary>
-               /// SDK: Sets the value of the entry at the specified index of the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <param name="index"></param>
-               /// <param name="value"></param>
-               protected void BaseSet(int index, object value)
-               {
-#if NET_2_0
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-#endif
-                       _Item item = (_Item)m_ItemsArray[index];
-                       item.value = value;
-               }
-
-               /// <summary>
-               /// Sets the value of the first entry with the specified key in the NameObjectCollectionBase instance, if found; otherwise, adds an entry with the specified key and value into the NameObjectCollectionBase instance.
-               /// </summary>
-               /// <param name="name">The String key of the entry to set. The key can be a null reference </param>
-               /// <param name="value">The Object that represents the new value of the entry to set. The value can be a null reference</param>
-               protected void BaseSet(string name, object value)
-               {
-#if NET_2_0
-                       if (this.IsReadOnly)
-                               throw new NotSupportedException("Collection is read-only");
-#endif
-                       _Item item = FindFirstMatchedItem(name);
-                       if (item != null)
-                               item.value = value;
-                       else
-                               BaseAdd(name, value);
-               }
-
-               private _Item FindFirstMatchedItem(string name)
-               {
-                       if (name != null)
-                               return (_Item)m_ItemsContainer[name];
-                       else
-                       {
-                               //TODO: consider null key case
-                               return m_NullKeyItem;
-                       }
-               }
-
-               internal bool Equals(string s1, string s2)
-               {
-#if NET_2_0
-                       if (m_comparer != null)
-                               return (m_comparer.Compare (s1, s2) == 0);
-                       else
-                               return equality_comparer.Equals (s1, s2);
-#else
-                       return (m_comparer.Compare(s1, s2) == 0);
-#endif
-               }
-       }
-}
-#endif
index c0df049d94d67b4f47b1154f5f3bfbc39064e197..afa107f0764346e634bdfa55f15cc6ada6a77ef1 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,9 +29,9 @@
 namespace Mono.Cecil {
 
        public enum NativeType {
-               NONE = 0x66,
+               None = 0x66,
 
-               BOOLEAN = 0x02,
+               Boolean = 0x02,
                I1 = 0x03,
                U1 = 0x04,
                I2 = 0x05,
@@ -42,32 +42,32 @@ namespace Mono.Cecil {
                U8 = 0x0a,
                R4 = 0x0b,
                R8 = 0x0c,
-               LPSTR = 0x14,
-               INT = 0x1f,
-               UINT = 0x20,
-               FUNC = 0x26,
-               ARRAY = 0x2a,
+               LPStr = 0x14,
+               Int = 0x1f,
+               UInt = 0x20,
+               Func = 0x26,
+               Array = 0x2a,
 
                // Msft specific
-               CURRENCY = 0x0f,
-               BSTR = 0x13,
-               LPWSTR = 0x15,
-               LPTSTR = 0x16,
-               FIXEDSYSSTRING = 0x17,
-               IUNKNOWN = 0x19,
-               IDISPATCH = 0x1a,
-               STRUCT = 0x1b,
-               INTF = 0x1c,
-               SAFEARRAY = 0x1d,
-               FIXEDARRAY = 0x1e,
-               BYVALSTR = 0x22,
-               ANSIBSTR = 0x23,
-               TBSTR = 0x24,
-               VARIANTBOOL = 0x25,
-               ASANY = 0x28,
-               LPSTRUCT = 0x2b,
-               CUSTOMMARSHALER = 0x2c,
-               ERROR = 0x2d,
-               MAX = 0x50
+               Currency = 0x0f,
+               BStr = 0x13,
+               LPWStr = 0x15,
+               LPTStr = 0x16,
+               FixedSysString = 0x17,
+               IUnknown = 0x19,
+               IDispatch = 0x1a,
+               Struct = 0x1b,
+               IntF = 0x1c,
+               SafeArray = 0x1d,
+               FixedArray = 0x1e,
+               ByValStr = 0x22,
+               ANSIBStr = 0x23,
+               TBStr = 0x24,
+               VariantBool = 0x25,
+               ASAny = 0x28,
+               LPStruct = 0x2b,
+               CustomMarshaler = 0x2c,
+               Error = 0x2d,
+               Max = 0x50
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs
deleted file mode 100644 (file)
index 9e0ee29..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// NestedTypeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class NestedTypeCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public TypeDefinition this [int index] {
-                       get { return List [index] as TypeDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public NestedTypeCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (TypeDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (TypeDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (TypeDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, TypeDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (TypeDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       TypeDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is TypeDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (TypeDefinition).FullName);
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitNestedTypeCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NullReferenceImporter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/NullReferenceImporter.cs
deleted file mode 100644 (file)
index 7ebb7c4..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// NullReferenceImporter.cs
-//
-// Author:
-//   Jb Evain (jbevain@novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       sealed class NullReferenceImporter : IImporter {
-
-               public static readonly NullReferenceImporter Instance = new NullReferenceImporter ();
-
-               public TypeReference ImportTypeReference (TypeReference type, ImportContext context)
-               {
-                       return type;
-               }
-
-               public FieldReference ImportFieldReference (FieldReference field, ImportContext context)
-               {
-                       return field;
-               }
-
-               public MethodReference ImportMethodReference (MethodReference method, ImportContext context)
-               {
-                       return method;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs
deleted file mode 100644 (file)
index 77341af..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// OverrideCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class OverrideCollection : CollectionBase, IReflectionVisitable {
-
-               MethodDefinition m_container;
-
-               public MethodReference this [int index] {
-                       get { return List [index] as MethodReference; }
-                       set { List [index] = value; }
-               }
-
-               public MethodDefinition Container {
-                       get { return m_container; }
-               }
-
-               public OverrideCollection (MethodDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (MethodReference value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (MethodReference value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (MethodReference value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, MethodReference value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (MethodReference value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is MethodReference))
-                               throw new ArgumentException ("Must be of type " + typeof (MethodReference).FullName);
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitOverrideCollection (this);
-               }
-       }
-}
index 30d39350022d6e1eb92800c52310e1801ebeb6f8..fc94692537f34ec0043a6b5a8860bf9d423f71bd 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum PInvokeAttributes : ushort {
@@ -40,6 +40,7 @@ namespace Mono.Cecil {
                CharSetAnsi                     = 0x0002,
                CharSetUnicode          = 0x0004,
                CharSetAuto                     = 0x0006,
+
                SupportsLastError       = 0x0040,       // Information about target function. Not relevant for fields
 
                // Calling convetion
@@ -48,6 +49,14 @@ namespace Mono.Cecil {
                CallConvCdecl           = 0x0200,
                CallConvStdCall         = 0x0300,
                CallConvThiscall        = 0x0400,
-               CallConvFastcall        = 0x0500
+               CallConvFastcall        = 0x0500,
+
+               BestFitMask                     = 0x0030,
+               BestFitEnabled          = 0x0010,
+               BestFidDisabled         = 0x0020,
+
+               ThrowOnUnmappableCharMask = 0x3000,
+               ThrowOnUnmappableCharEnabled = 0x1000,
+               ThrowOnUnmappableCharDisabled = 0x2000,
        }
 }
index 40c15511032dbdd14885156b0e8de7f38007a8fa..53aae2c38dec1594bbd49a643761af1aad571061 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
-       public sealed class PInvokeInfo : IReflectionVisitable {
+       public sealed class PInvokeInfo {
 
-               MethodDefinition m_meth;
-
-               PInvokeAttributes m_attributes;
-               string m_entryPoint;
-               ModuleReference m_module;
-
-               public MethodDefinition Method {
-                       get { return m_meth; }
-               }
+               ushort attributes;
+               string entry_point;
+               ModuleReference module;
 
                public PInvokeAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (PInvokeAttributes) attributes; }
+                       set { attributes = (ushort) value; }
                }
 
                public string EntryPoint {
-                       get { return m_entryPoint; }
-                       set { m_entryPoint = value; }
+                       get { return entry_point; }
+                       set { entry_point = value; }
                }
 
                public ModuleReference Module {
-                       get { return m_module; }
-                       set { m_module = value; }
+                       get { return module; }
+                       set { module = value; }
                }
 
                #region PInvokeAttributes
 
                public bool IsNoMangle {
-                       get { return (m_attributes & PInvokeAttributes.NoMangle) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= PInvokeAttributes.NoMangle;
-                               else
-                                       m_attributes &= ~PInvokeAttributes.NoMangle;
-                       }
+                       get { return attributes.GetAttributes ((ushort) PInvokeAttributes.NoMangle); }
+                       set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.NoMangle, value); }
                }
 
                public bool IsCharSetNotSpec {
-                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetNotSpec; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
-                                       m_attributes |= PInvokeAttributes.CharSetNotSpec;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetNotSpec);
-                       }
+                       get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec, value); }
                }
 
                public bool IsCharSetAnsi {
-                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAnsi; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
-                                       m_attributes |= PInvokeAttributes.CharSetAnsi;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAnsi);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi, value); }
                }
 
                public bool IsCharSetUnicode {
-                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetUnicode; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
-                                       m_attributes |= PInvokeAttributes.CharSetUnicode;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetUnicode);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode, value); }
                }
 
                public bool IsCharSetAuto {
-                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAuto; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
-                                       m_attributes |= PInvokeAttributes.CharSetAuto;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAuto);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto, value); }
                }
 
                public bool SupportsLastError {
-                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.SupportsLastError; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
-                                       m_attributes |= PInvokeAttributes.SupportsLastError;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.SupportsLastError);
-                       }
+                       get { return attributes.GetAttributes ((ushort) PInvokeAttributes.SupportsLastError); }
+                       set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.SupportsLastError, value); }
                }
 
                public bool IsCallConvWinapi {
-                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvWinapi; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
-                                       m_attributes |= PInvokeAttributes.CallConvWinapi;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvWinapi);
-                       }
+                       get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi, value); }
                }
 
                public bool IsCallConvCdecl {
-                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvCdecl; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
-                                       m_attributes |= PInvokeAttributes.CallConvCdecl;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvCdecl);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl, value); }
                }
 
                public bool IsCallConvStdCall {
-                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvStdCall; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
-                                       m_attributes |= PInvokeAttributes.CallConvStdCall;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvStdCall);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall, value); }
                }
 
                public bool IsCallConvThiscall {
-                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvThiscall; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
-                                       m_attributes |= PInvokeAttributes.CallConvThiscall;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvThiscall);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall, value); }
                }
 
                public bool IsCallConvFastcall {
-                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvFastcall; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
-                                       m_attributes |= PInvokeAttributes.CallConvFastcall;
-                               } else
-                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvFastcall);
-                       }
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall, value); }
                }
 
-               #endregion
+               public bool IsBestFistEnabled {
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled, value); }
+               }
 
-               public PInvokeInfo (MethodDefinition meth)
-               {
-                       m_meth = meth;
+               public bool IsBestFistDisabled {
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFidDisabled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFidDisabled, value); }
                }
 
-               public PInvokeInfo (MethodDefinition meth, PInvokeAttributes attrs,
-                       string entryPoint, ModuleReference mod) : this (meth)
-               {
-                       m_attributes = attrs;
-                       m_entryPoint = entryPoint;
-                       m_module = mod;
+               public bool IsThrowOnUnmappableCharEnabled {
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled, value); }
+               }
+
+               public bool IsThrowOnUnmappableCharDisabled {
+                       get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled); }
+                       set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled, value); }
                }
 
-               public void Accept (IReflectionVisitor visitor)
+               #endregion
+
+               public PInvokeInfo (PInvokeAttributes attributes, string entryPoint, ModuleReference module)
                {
-                       visitor.VisitPInvokeInfo (this);
+                       this.attributes = (ushort) attributes;
+                       this.entry_point = entryPoint;
+                       this.module = module;
                }
        }
 }
index c6097f84e38768c29ab6665ac12d6df51d14f9ce..8c12b548173572c4e9454a270b9e9fc1c551b219 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum ParameterAttributes : ushort {
index 8d31f42032deb859b01a47d1cd9f74e6ce44b9b5..059f257fc3b02495b01a9600ea122e590ab249d8 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using Mono.Collections.Generic;
 
-       public sealed class ParameterDefinition : ParameterReference, IHasMarshalSpec,
-               IMetadataTokenProvider, ICustomAttributeProvider, IHasConstant {
+namespace Mono.Cecil {
 
-               ParameterAttributes m_attributes;
+       public sealed class ParameterDefinition : ParameterReference, ICustomAttributeProvider, IConstantProvider, IMarshalInfoProvider {
 
-               bool m_hasConstant;
-               object m_const;
+               ushort attributes;
 
-               MethodReference m_method;
-               CustomAttributeCollection m_customAttrs;
+               internal IMethodSignature method;
 
-               MarshalSpec m_marshalDesc;
+               object constant = Mixin.NotResolved;
+               Collection<CustomAttribute> custom_attributes;
+               MarshalInfo marshal_info;
 
                public ParameterAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (ParameterAttributes) attributes; }
+                       set { attributes = (ushort) value; }
+               }
+
+               public IMethodSignature Method {
+                       get { return method; }
                }
 
                public bool HasConstant {
-                       get { return m_hasConstant; }
+                       get {
+                               ResolveConstant ();
+
+                               return constant != Mixin.NoValue;
+                       }
+                       set { if (!value) constant = Mixin.NoValue; }
                }
 
                public object Constant {
-                       get { return m_const; }
-                       set {
-                               m_hasConstant = true;
-                               m_const = value;
-                       }
+                       get { return HasConstant ? constant : null;     }
+                       set { constant = value; }
                }
 
-               public MethodReference Method {
-                       get { return m_method; }
-                       set { m_method = value; }
+               void ResolveConstant ()
+               {
+                       if (constant != Mixin.NotResolved)
+                               return;
+
+                       this.ResolveConstant (ref constant, parameter_type.Module);
                }
 
                public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+                       get {
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
+
+                               return this.GetHasCustomAttributes (parameter_type.Module);
+                       }
+               }
+
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (parameter_type.Module)); }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public bool HasMarshalInfo {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (marshal_info != null)
+                                       return true;
 
-                               return m_customAttrs;
+                               return this.GetHasMarshalInfo (parameter_type.Module);
                        }
                }
 
-               public MarshalSpec MarshalSpec {
-                       get { return m_marshalDesc; }
-                       set {
-                               m_marshalDesc = value;
-                               if (value != null)
-                                       m_attributes |= ParameterAttributes.HasFieldMarshal;
-                               else
-                                       m_attributes &= ~ParameterAttributes.HasFieldMarshal;
-                       }
+               public MarshalInfo MarshalInfo {
+                       get { return marshal_info ?? (marshal_info = this.GetMarshalInfo (parameter_type.Module)); }
+                       set { marshal_info = value; }
                }
 
                #region ParameterAttributes
 
                public bool IsIn {
-                       get { return (m_attributes & ParameterAttributes.In) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.In;
-                               else
-                                       m_attributes &= ~ParameterAttributes.In;
-                       }
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.In); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.In, value); }
                }
 
                public bool IsOut {
-                       get { return (m_attributes & ParameterAttributes.Out) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.Out;
-                               else
-                                       m_attributes &= ~ParameterAttributes.Out;
-                       }
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.Out); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Out, value); }
                }
 
-               public bool IsRetval {
-                       get { return (m_attributes & ParameterAttributes.Retval) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.Retval;
-                               else
-                                       m_attributes &= ~ParameterAttributes.Retval;
-                       }
+               public bool IsLcid {
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.Lcid); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Lcid, value); }
                }
 
-               public bool IsLcid {
-                       get { return (m_attributes & ParameterAttributes.Lcid) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.Lcid;
-                               else
-                                       m_attributes &= ~ParameterAttributes.Lcid;
-                       }
+               public bool IsReturnValue {
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.Retval); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Retval, value); }
                }
 
                public bool IsOptional {
-                       get { return (m_attributes & ParameterAttributes.Optional) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.Optional;
-                               else
-                                       m_attributes &= ~ParameterAttributes.Optional;
-                       }
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.Optional); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Optional, value); }
                }
 
                public bool HasDefault {
-                       get { return (m_attributes & ParameterAttributes.HasDefault) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= ParameterAttributes.HasDefault;
-                               else
-                                       m_attributes &= ~ParameterAttributes.HasDefault;
-                       }
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.HasDefault); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.HasDefault, value); }
                }
 
-               #endregion
-
-               public ParameterDefinition (TypeReference paramType) :
-                       this (string.Empty, -1, (ParameterAttributes) 0, paramType)
-               {
+               public bool HasFieldMarshal {
+                       get { return attributes.GetAttributes ((ushort) ParameterAttributes.HasFieldMarshal); }
+                       set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.HasFieldMarshal, value); }
                }
 
-               public override ParameterDefinition Resolve ()
-               {
-                       return this;
-               }
-
-               public ParameterDefinition (string name, int seq, ParameterAttributes attrs, TypeReference paramType) : base (name, seq, paramType)
-               {
-                       m_attributes = attrs;
-               }
+               #endregion
 
-               public ParameterDefinition Clone ()
+               public ParameterDefinition (TypeReference parameterType)
+                       : this (string.Empty, ParameterAttributes.None, parameterType)
                {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, m_method));
                }
 
-               internal static ParameterDefinition Clone (ParameterDefinition param, ImportContext context)
+               public ParameterDefinition (string name, ParameterAttributes attributes, TypeReference parameterType)
+                       : base (name, parameterType)
                {
-                       ParameterDefinition np = new ParameterDefinition (
-                               param.Name,
-                               param.Sequence,
-                               param.Attributes,
-                               context.Import (param.ParameterType));
-
-                       if (param.HasConstant)
-                               np.Constant = param.Constant;
-
-                       if (param.MarshalSpec != null)
-                               np.MarshalSpec = param.MarshalSpec.CloneInto (np);
-
-                       foreach (CustomAttribute ca in param.CustomAttributes)
-                               np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-                       return np;
+                       this.attributes = (ushort) attributes;
+                       this.token = new MetadataToken (TokenType.Param);
                }
 
-               public override void Accept (IReflectionVisitor visitor)
+               public override ParameterDefinition Resolve ()
                {
-                       visitor.VisitParameterDefinition (this);
-
-                       if (this.MarshalSpec != null)
-                               this.MarshalSpec.Accept (visitor);
-
-                       this.CustomAttributes.Accept (visitor);
+                       return this;
                }
        }
 }
index 5fa22297414dd93c89272f6fbbcdd39fbf769c84..86538bb9abf599676b7be2a4244f55bc0bf565bb 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
+using System;
 
-       using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
 
-       public sealed class ParameterDefinitionCollection : CollectionBase, IReflectionVisitable {
+namespace Mono.Cecil {
 
-               IMemberReference m_container;
+       sealed class ParameterDefinitionCollection : Collection<ParameterDefinition> {
 
-               public ParameterDefinition this [int index] {
-                       get { return List [index] as ParameterDefinition; }
-                       set { List [index] = value; }
-               }
+               readonly IMethodSignature method;
 
-               public IMemberReference Container {
-                       get { return m_container; }
-               }
-
-               public ParameterDefinitionCollection (IMemberReference container)
+               internal ParameterDefinitionCollection (IMethodSignature method)
                {
-                       m_container = container;
+                       this.method = method;
                }
 
-               public void Add (ParameterDefinition value)
+               internal ParameterDefinitionCollection (IMethodSignature method, int capacity)
+                       : base (capacity)
                {
-                       List.Add (value);
+                       this.method = method;
                }
 
-               public bool Contains (ParameterDefinition value)
+               protected override void OnAdd (ParameterDefinition item, int index)
                {
-                       return List.Contains (value);
+                       item.method = method;
+                       item.index = index;
                }
 
-               public int IndexOf (ParameterDefinition value)
+               protected override void OnInsert (ParameterDefinition item, int index)
                {
-                       return List.IndexOf (value);
-               }
+                       item.method = method;
+                       item.index = index;
 
-               public void Insert (int index, ParameterDefinition value)
-               {
-                       List.Insert (index, value);
+                       for (int i = index; i < size; i++)
+                               items [i].index = i + 1;
                }
 
-               public void Remove (ParameterDefinition value)
+               protected override void OnSet (ParameterDefinition item, int index)
                {
-                       List.Remove (value);
+                       item.method = method;
+                       item.index = index;
                }
 
-               protected override void OnValidate (object o)
+               protected override void OnRemove (ParameterDefinition item, int index)
                {
-                       if (! (o is ParameterDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (ParameterDefinition).FullName);
-               }
+                       item.method = null;
+                       item.index = -1;
 
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitParameterDefinitionCollection (this);
+                       for (int i = index + 1; i < size; i++)
+                               items [i].index = i - 1;
                }
        }
 }
index 8626fde74454429505d66c05fb8f0b2b894cf424..cfe648f2e05630afe38d23b7921eab3c66896462 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-       using System.Collections;
+using System;
 
-       using Mono.Cecil.Metadata;
+namespace Mono.Cecil {
 
-       public abstract class ParameterReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+       public abstract class ParameterReference : IMetadataTokenProvider {
 
-               string m_name;
-               int m_sequence;
-               TypeReference m_paramType;
-               MetadataToken m_token;
-               IDictionary m_annotations;
+               string name;
+               internal int index = -1;
+               protected TypeReference parameter_type;
+               internal MetadataToken token;
 
                public string Name {
-                       get { return m_name; }
-                       set { m_name = value; }
+                       get { return name; }
+                       set { name = value; }
                }
 
-               public int Sequence {
-                       get { return m_sequence; }
-                       set { m_sequence = value; }
+               public int Index {
+                       get { return index; }
                }
 
                public TypeReference ParameterType {
-                       get { return m_paramType; }
-                       set { m_paramType = value; }
+                       get { return parameter_type; }
+                       set { parameter_type = value; }
                }
 
                public MetadataToken MetadataToken {
-                       get { return m_token; }
-                       set { m_token = value; }
-               }
-
-               IDictionary IAnnotationProvider.Annotations {
-                       get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
-                       }
+                       get { return token; }
+                       set { token = value; }
                }
 
-               public ParameterReference (string name, int sequence, TypeReference parameterType)
+               internal ParameterReference (string name, TypeReference parameterType)
                {
-                       m_name = name;
-                       m_sequence = sequence;
-                       m_paramType = parameterType;
-               }
+                       if (parameterType == null)
+                               throw new ArgumentNullException ("parameterType");
 
-               public abstract ParameterDefinition Resolve ();
+                       this.name = name ?? string.Empty;
+                       this.parameter_type = parameterType;
+               }
 
                public override string ToString ()
                {
-                       if (m_name != null && m_name.Length > 0)
-                               return m_name;
-
-                       return string.Concat ("A_", m_sequence);
+                       return name;
                }
 
-               public abstract void Accept (IReflectionVisitor visitor);
+               public abstract ParameterDefinition Resolve ();
        }
 }
index f62a6bda78238d80d28d42b96c8e365f038c3a4c..d5e7a80c09a9743386b49b1fe1b332765ec86376 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
        public sealed class PinnedType : TypeSpecification {
 
-               public PinnedType (TypeReference pType) : base (pType)
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool IsPinned {
+                       get { return true; }
+               }
+
+               public PinnedType (TypeReference type)
+                       : base (type)
                {
+                       Mixin.CheckType (type);
+                       this.etype = MD.ElementType.Pinned;
                }
        }
 }
index 12287332552678a9c0263c6ff0b1b73555185dac..54ab77519a856f8bf50617543b8f42a4a8308ae0 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
        public sealed class PointerType : TypeSpecification {
 
                public override string Name {
-                       get { return string.Concat (base.Name, "*"); }
+                       get { return base.Name + "*"; }
                }
 
                public override string FullName {
-                       get { return string.Concat (base.FullName, "*"); }
+                       get { return base.FullName + "*"; }
+               }
+
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool IsPointer {
+                       get { return true; }
                }
 
-               public PointerType (TypeReference pType) : base (pType)
+               public PointerType (TypeReference type)
+                       : base (type)
                {
+                       Mixin.CheckType (type);
+                       this.etype = MD.ElementType.Ptr;
                }
        }
 }
index f11468f276781ec7604de2696b65d0a977fd0d5f..ad6fd9e8f04f7289688b541c2e6fde6f9eb6ffd5 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum PropertyAttributes : ushort {
+               None                    = 0x0000,
                SpecialName             = 0x0200,       // Property is special
                RTSpecialName   = 0x0400,       // Runtime(metadata internal APIs) should check name encoding
                HasDefault              = 0x1000,       // Property has default
index e4d0f74364c89d22144c565df2031e521b7fcdcc..835a929a7612c14903a04beaa09250e718bcc04e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System.Text;
+
+using Mono.Collections.Generic;
 
-       using System;
-       using System.Text;
+namespace Mono.Cecil {
 
-       public sealed class PropertyDefinition : PropertyReference,
-               IMemberDefinition, ICustomAttributeProvider, IHasConstant {
+       public sealed class PropertyDefinition : PropertyReference, IMemberDefinition, IConstantProvider {
 
-               PropertyAttributes m_attributes;
+               bool? has_this;
+               ushort attributes;
 
-               CustomAttributeCollection m_customAttrs;
+               Collection<CustomAttribute> custom_attributes;
 
-               MethodDefinition m_getMeth;
-               MethodDefinition m_setMeth;
+               internal MethodDefinition get_method;
+               internal MethodDefinition set_method;
+               internal Collection<MethodDefinition> other_methods;
 
-               bool m_hasConstant;
-               object m_const;
+               object constant = Mixin.NotResolved;
 
                public PropertyAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (PropertyAttributes) attributes; }
+                       set { attributes = (ushort) value; }
+               }
+
+               public bool HasThis {
+                       get {
+                               if (has_this.HasValue)
+                                       return has_this.Value;
+
+                               if (GetMethod != null)
+                                       return get_method.HasThis;
+
+                               if (SetMethod != null)
+                                       return set_method.HasThis;
+
+                               return false;
+                       }
+                       set { has_this = value; }
                }
 
                public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+                       get {
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
+
+                               return this.GetHasCustomAttributes (Module);
+                       }
+               }
+
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
                }
 
-               public CustomAttributeCollection CustomAttributes {
+               public MethodDefinition GetMethod {
                        get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+                               if (get_method != null)
+                                       return get_method;
 
-                               return m_customAttrs;
+                               InitializeMethods ();
+                               return get_method;
                        }
+                       set { get_method = value; }
                }
 
-               public override bool HasParameters {
+               public MethodDefinition SetMethod {
                        get {
-                               if (m_getMeth != null)
-                                       return m_getMeth.HasParameters;
-                               else if (m_setMeth != null)
-                                       return m_setMeth.HasParameters;
-                               else if (m_parameters == null)
-                                       return false;
-                               else
-                                       return m_parameters.Count > 0;
+                               if (set_method != null)
+                                       return set_method;
+
+                               InitializeMethods ();
+                               return set_method;
                        }
+                       set { set_method = value; }
                }
 
-               public override ParameterDefinitionCollection Parameters {
+               public bool HasOtherMethods {
                        get {
-                               if (this.GetMethod != null)
-                                       return CloneParameterCollection (this.GetMethod.Parameters);
-                               else if (this.SetMethod != null) {
-                                       ParameterDefinitionCollection parameters =
-                                               CloneParameterCollection (this.SetMethod.Parameters);
-                                       if (parameters.Count > 0)
-                                               parameters.RemoveAt (parameters.Count - 1);
-                                       return parameters;
-                               }
+                               if (other_methods != null)
+                                       return other_methods.Count > 0;
 
-                               if (m_parameters == null)
-                                       m_parameters = new ParameterDefinitionCollection (this);
+                               InitializeMethods ();
+                               return !other_methods.IsNullOrEmpty ();
+                       }
+               }
+
+               public Collection<MethodDefinition> OtherMethods {
+                       get {
+                               if (other_methods != null)
+                                       return other_methods;
+
+                               InitializeMethods ();
 
-                               return m_parameters;
+                               if (other_methods != null)
+                                       return other_methods;
+
+                               return other_methods = new Collection<MethodDefinition> ();
                        }
                }
 
-               public MethodDefinition GetMethod {
-                       get { return m_getMeth; }
-                       set { m_getMeth = value; }
+               public bool HasParameters {
+                       get {
+                               if (get_method != null)
+                                       return get_method.HasParameters;
+
+                               if (set_method != null)
+                                       return set_method.HasParameters && set_method.Parameters.Count > 1;
+
+                               return false;
+                       }
                }
 
-               public MethodDefinition SetMethod {
-                       get { return m_setMeth; }
-                       set { m_setMeth = value; }
+               public override Collection<ParameterDefinition> Parameters {
+                       get {
+                               InitializeMethods ();
+
+                               if (get_method != null)
+                                       return MirrorParameters (get_method, 0);
+
+                               if (set_method != null)
+                                       return MirrorParameters (set_method, 1);
+
+                               return new Collection<ParameterDefinition> ();
+                       }
                }
 
-               ParameterDefinitionCollection CloneParameterCollection (ParameterDefinitionCollection original)
+               static Collection<ParameterDefinition> MirrorParameters (MethodDefinition method, int bound)
                {
-                       ParameterDefinitionCollection clone = new ParameterDefinitionCollection (
-                               original.Container);
-                       foreach (ParameterDefinition param in original)
-                               clone.Add (param);
-                       return clone;
+                       var parameters = new Collection<ParameterDefinition> ();
+                       if (!method.HasParameters)
+                               return parameters;
+
+                       var original_parameters = method.Parameters;
+                       var end = original_parameters.Count - bound;
+
+                       for (int i = 0; i < end; i++)
+                               parameters.Add (original_parameters [i]);
+
+                       return parameters;
                }
 
                public bool HasConstant {
-                       get { return m_hasConstant; }
+                       get {
+                               ResolveConstant ();
+
+                               return constant != Mixin.NoValue;
+                       }
+                       set { if (!value) constant = Mixin.NoValue; }
                }
 
                public object Constant {
-                       get { return m_const; }
-                       set {
-                               m_hasConstant = true;
-                               m_const = value;
-                       }
+                       get { return HasConstant ? constant : null;     }
+                       set { constant = value; }
+               }
+
+               void ResolveConstant ()
+               {
+                       if (constant != Mixin.NotResolved)
+                               return;
+
+                       this.ResolveConstant (ref constant, Module);
                }
 
                #region PropertyAttributes
 
                public bool IsSpecialName {
-                       get { return (m_attributes & PropertyAttributes.SpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= PropertyAttributes.SpecialName;
-                               else
-                                       m_attributes &= ~PropertyAttributes.SpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) PropertyAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.SpecialName, value); }
                }
 
                public bool IsRuntimeSpecialName {
-                       get { return (m_attributes & PropertyAttributes.RTSpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= PropertyAttributes.RTSpecialName;
-                               else
-                                       m_attributes &= ~PropertyAttributes.RTSpecialName;
-                       }
+                       get { return attributes.GetAttributes ((ushort) PropertyAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.RTSpecialName, value); }
                }
 
                public bool HasDefault {
-                       get { return (m_attributes & PropertyAttributes.HasDefault) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= PropertyAttributes.HasDefault;
-                               else
-                                       m_attributes &= ~PropertyAttributes.HasDefault;
-                       }
+                       get { return attributes.GetAttributes ((ushort) PropertyAttributes.HasDefault); }
+                       set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.HasDefault, value); }
                }
 
                #endregion
@@ -164,89 +212,47 @@ namespace Mono.Cecil {
                        set { base.DeclaringType = value; }
                }
 
-               public PropertyDefinition (string name, TypeReference propertyType, PropertyAttributes attrs) : base (name, propertyType)
-               {
-                       m_attributes = attrs;
-               }
-
-               public override PropertyDefinition Resolve ()
-               {
-                       return this;
-               }
-
-               public static MethodDefinition CreateGetMethod (PropertyDefinition prop)
-               {
-                       MethodDefinition get = new MethodDefinition (
-                               string.Concat ("get_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
-                       prop.GetMethod = get;
-                       return get;
-               }
-
-               public static MethodDefinition CreateSetMethod (PropertyDefinition prop)
-               {
-                       MethodDefinition set = new MethodDefinition (
-                               string.Concat ("set_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
-                       prop.SetMethod = set;
-                       return set;
+               public override bool IsDefinition {
+                       get { return true; }
                }
 
-               public PropertyDefinition Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
-               }
-
-               internal static PropertyDefinition Clone (PropertyDefinition prop, ImportContext context)
-               {
-                       PropertyDefinition np = new PropertyDefinition (
-                               prop.Name,
-                               context.Import (prop.PropertyType),
-                               prop.Attributes);
-
-                       if (prop.HasConstant)
-                               np.Constant = prop.Constant;
-
-                       if (context.GenericContext.Type is TypeDefinition) {
-                               TypeDefinition type = context.GenericContext.Type as TypeDefinition;
-                               if (prop.SetMethod != null)
-                                       np.SetMethod = type.Methods.GetMethod (prop.SetMethod.Name, prop.SetMethod.Parameters);
-                               if (prop.GetMethod != null)
-                                       np.GetMethod = type.Methods.GetMethod (prop.GetMethod.Name, prop.GetMethod.Parameters);
+               public override string FullName {
+                       get {
+                               var builder = new StringBuilder ();
+                               builder.Append (PropertyType.ToString ());
+                               builder.Append (' ');
+                               builder.Append (MemberFullName ());
+                               builder.Append ('(');
+                               if (HasParameters) {
+                                       var parameters = Parameters;
+                                       for (int i = 0; i < parameters.Count; i++) {
+                                               if (i > 0)
+                                                       builder.Append (',');
+                                               builder.Append (parameters [i].ParameterType.FullName);
+                                       }
+                               }
+                               builder.Append (')');
+                               return builder.ToString ();
                        }
-
-                       foreach (CustomAttribute ca in prop.CustomAttributes)
-                               np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-                       return np;
                }
 
-               public override string ToString ()
+               public PropertyDefinition (string name, PropertyAttributes attributes, TypeReference propertyType)
+                       : base (name, propertyType)
                {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (PropertyType.ToString ());
-                       sb.Append (' ');
-
-                       if (this.DeclaringType != null) {
-                               sb.Append (this.DeclaringType.ToString ());
-                               sb.Append ("::");
-                       }
-
-                       sb.Append (this.Name);
-                       sb.Append ('(');
-                       ParameterDefinitionCollection parameters = this.Parameters;
-                       for (int i = 0; i < parameters.Count; i++) {
-                               if (i > 0)
-                                       sb.Append (',');
-                               sb.Append (parameters [i].ParameterType.ToString ());
-                       }
-                       sb.Append (')');
-                       return sb.ToString ();
+                       this.attributes = (ushort) attributes;
+                       this.token = new MetadataToken (TokenType.Property);
                }
 
-               public override void Accept (IReflectionVisitor visitor)
+               void InitializeMethods ()
                {
-                       visitor.VisitPropertyDefinition (this);
+                       if (get_method != null || set_method != null)
+                               return;
+
+                       var module = this.Module;
+                       if (!module.HasImage ())
+                               return;
 
-                       this.CustomAttributes.Accept (visitor);
+                       module.Read (this, (property, reader) => reader.ReadMethods (property));
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs
deleted file mode 100644 (file)
index 7860b6c..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// PropertyDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class PropertyDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-               TypeDefinition m_container;
-
-               public PropertyDefinition this [int index] {
-                       get { return List [index] as PropertyDefinition; }
-                       set { List [index] = value; }
-               }
-
-               public TypeDefinition Container {
-                       get { return m_container; }
-               }
-
-               public PropertyDefinitionCollection (TypeDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (PropertyDefinition value)
-               {
-                       Attach (value);
-
-                       List.Add (value);
-               }
-
-
-               public new void Clear ()
-               {
-                       foreach (PropertyDefinition item in this)
-                               Detach (item);
-
-                       base.Clear ();
-               }
-
-               public bool Contains (PropertyDefinition value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (PropertyDefinition value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, PropertyDefinition value)
-               {
-                       Attach (value);
-
-                       List.Insert (index, value);
-               }
-
-               public void Remove (PropertyDefinition value)
-               {
-                       List.Remove (value);
-
-                       Detach (value);
-               }
-
-
-               public new void RemoveAt (int index)
-               {
-                       PropertyDefinition item = this [index];
-                       Remove (item);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is PropertyDefinition))
-                               throw new ArgumentException ("Must be of type " + typeof (PropertyDefinition).FullName);
-               }
-
-               public PropertyDefinition [] GetProperties (string name)
-               {
-                       ArrayList ret = new ArrayList ();
-                       foreach (PropertyDefinition prop in this)
-                               if (prop.Name == name)
-                                       ret.Add (prop);
-
-                       return ret.ToArray (typeof (PropertyDefinition)) as PropertyDefinition [];
-               }
-
-               void Attach (MemberReference member)
-               {
-                       if (member.DeclaringType != null)
-                               throw new ReflectionException ("Member already attached, clone it instead");
-
-                       member.DeclaringType = m_container;
-               }
-
-               void Detach (MemberReference member)
-               {
-                       member.DeclaringType = null;
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitPropertyDefinitionCollection (this);
-               }
-       }
-}
index 5dfd9268c0741765038aeba767bfbd9bd71ed2cb..5022cd326c946db67bdac84a499c646093e9b824 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
        public abstract class PropertyReference : MemberReference {
 
-               TypeReference m_propertyType;
-               protected ParameterDefinitionCollection m_parameters;
+               TypeReference property_type;
 
                public TypeReference PropertyType {
-                       get { return m_propertyType; }
-                       set { m_propertyType = value; }
+                       get { return property_type; }
+                       set { property_type = value; }
                }
 
-               public abstract bool HasParameters {
+               public abstract Collection<ParameterDefinition> Parameters {
                        get;
                }
 
-               public abstract ParameterDefinitionCollection Parameters {
-                       get;
-               }
-
-               public PropertyReference (string name, TypeReference propertyType) : base (name)
+               internal PropertyReference (string name, TypeReference propertyType)
+                       : base (name)
                {
-                       m_propertyType = propertyType;
-               }
+                       if (propertyType == null)
+                               throw new ArgumentNullException ("propertyType");
 
-               public abstract PropertyDefinition Resolve ();
+                       property_type = propertyType;
+               }
        }
 }
index 6d1e0e80a77529bd10c56987dedb676353d7134c..3a6b326d49cc54d3dd2928e6c8231ad62ee0bec5 100644 (file)
@@ -1,10 +1,10 @@
 //
-// ReferenceType.cs
+// ByReferenceType.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-       public sealed class ReferenceType : TypeSpecification {
+       public sealed class ByReferenceType : TypeSpecification {
 
                public override string Name {
-                       get { return string.Concat (base.Name, "&"); }
+                       get { return base.Name + "&"; }
                }
 
                public override string FullName {
-                       get { return string.Concat (base.FullName, "&"); }
+                       get { return base.FullName + "&"; }
+               }
+
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool IsByReference {
+                       get { return true; }
                }
 
-               public ReferenceType (TypeReference type) : base (type)
+               public ByReferenceType (TypeReference type)
+                       : base (type)
                {
+                       Mixin.CheckType (type);
+                       this.etype = MD.ElementType.ByRef;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionController.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionController.cs
deleted file mode 100644 (file)
index 22fdab1..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// ReflectionController.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       internal sealed class ReflectionController {
-
-               ReflectionReader m_reader;
-               ReflectionWriter m_writer;
-               ReflectionHelper m_helper;
-               DefaultImporter m_importer;
-
-               public ReflectionReader Reader {
-                       get { return m_reader; }
-               }
-
-               public ReflectionWriter Writer {
-                       get { return m_writer; }
-               }
-
-               public ReflectionHelper Helper {
-                       get { return m_helper; }
-               }
-
-               public IImporter Importer {
-                       get { return m_importer; }
-               }
-
-               public ReflectionController (ModuleDefinition module)
-               {
-                       m_reader = new AggressiveReflectionReader (module);
-                       m_writer = new ReflectionWriter (module);
-                       m_helper = new ReflectionHelper (module);
-                       m_importer = new DefaultImporter (module);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs
deleted file mode 100644 (file)
index 4027313..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// ReflectionException.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-
-       using Mono.Cecil.Metadata;
-
-       public sealed class ReflectionException : MetadataFormatException {
-
-               internal ReflectionException () : base ()
-               {
-               }
-
-               internal ReflectionException (string message) : base (message)
-               {
-               }
-
-               internal ReflectionException (string message, params string [] parameters) :
-                       base (string.Format (message, parameters))
-               {
-               }
-
-               internal ReflectionException (string message, Exception inner) :
-                       base (message, inner)
-               {
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionHelper.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionHelper.cs
deleted file mode 100644 (file)
index d5e4c1d..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-//
-// ReflectionHelper.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-// (C) 2006 Evaluant RC S.A.
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-       using SR = System.Reflection;
-       using System.Text;
-
-       internal sealed class ReflectionHelper {
-
-               ModuleDefinition m_module;
-
-               public ReflectionHelper (ModuleDefinition module)
-               {
-                       m_module = module;
-               }
-
-               public AssemblyNameReference ImportAssembly (SR.Assembly asm)
-               {
-                       AssemblyNameReference asmRef = GetAssemblyNameReference (asm.GetName ());
-                       if (asmRef != null)
-                               return asmRef;
-
-                       SR.AssemblyName asmName = asm.GetName ();
-                       asmRef = new AssemblyNameReference (
-                               asmName.Name, asmName.CultureInfo.Name, asmName.Version);
-                       asmRef.PublicKeyToken = asmName.GetPublicKeyToken ();
-                       asmRef.HashAlgorithm = (AssemblyHashAlgorithm) asmName.HashAlgorithm;
-                       asmRef.Culture = asmName.CultureInfo.ToString ();
-                       m_module.AssemblyReferences.Add (asmRef);
-                       return asmRef;
-               }
-
-               AssemblyNameReference GetAssemblyNameReference (SR.AssemblyName name)
-               {
-                       foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
-                               if (reference.FullName == name.FullName)
-                                       return reference;
-
-                       return null;
-               }
-
-               public static string GetTypeSignature (Type t)
-               {
-                       if (t.HasElementType) {
-                               if (t.IsPointer)
-                                       return string.Concat (GetTypeSignature (t.GetElementType ()), "*");
-                               else if (t.IsArray) {
-                                       int rank = t.GetArrayRank ();
-                                       if (rank == 1)
-                                               return string.Concat (GetTypeSignature (t.GetElementType ()), "[]");
-
-                                       StringBuilder sb = new StringBuilder ();
-                                       sb.Append ('[');
-                                       for (int i = 1; i < rank; i++)
-                                               sb.Append (',');
-                                       sb.Append (']');
-
-                                       return string.Concat (GetTypeSignature (t.GetElementType ()), sb.ToString ());
-                               } else if (t.IsByRef)
-                                       return string.Concat(GetTypeSignature(t.GetElementType()), "&");
-                       }
-
-                       if (IsGenericTypeSpec (t)) {
-                               StringBuilder sb = new StringBuilder ();
-                               sb.Append (GetTypeSignature (GetGenericTypeDefinition (t)));
-                               sb.Append ("<");
-                               Type [] genArgs = GetGenericArguments (t);
-                               for (int i = 0; i < genArgs.Length; i++) {
-                                       if (i > 0)
-                                               sb.Append (",");
-                                       sb.Append (GetTypeSignature (genArgs [i]));
-                               }
-                               sb.Append (">");
-                               return sb.ToString ();
-                       }
-
-                       if (IsGenericParameter (t))
-                               return t.Name;
-
-                       if (t.DeclaringType != null)
-                               return string.Concat (t.DeclaringType.FullName, "/", t.Name);
-
-                       if (t.Namespace == null || t.Namespace.Length == 0)
-                               return t.Name;
-
-                       return string.Concat (t.Namespace, ".", t.Name);
-               }
-
-               static bool GetProperty (object o, string prop)
-               {
-                       SR.PropertyInfo pi = o.GetType ().GetProperty (prop);
-                       if (pi == null)
-                               return false;
-
-                       return (bool) pi.GetValue (o, null);
-               }
-
-               public static bool IsGenericType (Type t)
-               {
-                       return GetProperty (t, "IsGenericType");
-               }
-
-               static bool IsGenericParameter (Type t)
-               {
-                       return GetProperty (t, "IsGenericParameter");
-               }
-
-               static bool IsGenericTypeDefinition (Type t)
-               {
-                       return GetProperty (t, "IsGenericTypeDefinition");
-               }
-
-               static bool IsGenericTypeSpec (Type t)
-               {
-                       return IsGenericType (t) && !IsGenericTypeDefinition (t);
-               }
-
-               static Type GetGenericTypeDefinition (Type t)
-               {
-                       return (Type) t.GetType ().GetMethod ("GetGenericTypeDefinition").Invoke (t, null);
-               }
-
-               static Type [] GetGenericArguments (Type t)
-               {
-                       return (Type []) t.GetType ().GetMethod ("GetGenericArguments").Invoke (t, null);
-               }
-
-               GenericInstanceType GetGenericType (Type t, TypeReference element, ImportContext context)
-               {
-                       GenericInstanceType git = new GenericInstanceType (element);
-                       foreach (Type genArg in GetGenericArguments (t))
-                               git.GenericArguments.Add (ImportSystemType (genArg, context));
-
-                       return git;
-               }
-
-               static bool GenericParameterOfMethod (Type t)
-               {
-                       return t.GetType ().GetProperty ("DeclaringMethod").GetValue (t, null) != null;
-               }
-
-               static GenericParameter GetGenericParameter (Type t, ImportContext context)
-               {
-                       int pos = (int) t.GetType ().GetProperty ("GenericParameterPosition").GetValue (t, null);
-                       IGenericParameterProvider provider;
-                       if (GenericParameterOfMethod (t))
-                               provider = context.GenericContext.Method;
-                       else
-                               provider = context.GenericContext.Type;
-
-                       if (provider == null)
-                               throw new InvalidOperationException ("Invalid context");
-
-                       return provider.GenericParameters [pos];
-               }
-
-               TypeReference GetTypeSpec (Type t, ImportContext context)
-               {
-                       Stack s = new Stack ();
-                       while (t.HasElementType || IsGenericTypeSpec (t)) {
-                               s.Push (t);
-                               if (t.HasElementType)
-                                       t = t.GetElementType ();
-                               else if (IsGenericTypeSpec (t)) {
-                                       t = (Type) t.GetType ().GetMethod ("GetGenericTypeDefinition").Invoke (t, null);
-                                       break;
-                               }
-                       }
-
-                       TypeReference elementType = ImportSystemType (t, context);
-                       while (s.Count > 0) {
-                               t = (Type) s.Pop ();
-                               if (t.IsPointer)
-                                       elementType = new PointerType (elementType);
-                               else if (t.IsArray)
-                                       elementType = new ArrayType (elementType, t.GetArrayRank ());
-                               else if (t.IsByRef)
-                                       elementType = new ReferenceType (elementType);
-                               else if (IsGenericTypeSpec (t))
-                                       elementType = GetGenericType (t, elementType, context);
-                               else
-                                       throw new ReflectionException ("Unknown element type");
-                       }
-
-                       return elementType;
-               }
-
-               TypeReference AdjustReference (Type type, TypeReference reference)
-               {
-                       if (type.IsValueType && !reference.IsValueType)
-                               reference.IsValueType = true;
-
-                       if (IsGenericTypeDefinition (type)) {
-                               Type [] parameters = GetGenericArguments (type);
-                               for (int i = reference.GenericParameters.Count; i < parameters.Length; i++)
-                                       reference.GenericParameters.Add (new GenericParameter (i, reference));
-                       }
-
-                       return reference;
-               }
-
-               public TypeReference ImportSystemType (Type t, ImportContext context)
-               {
-                       if (t.HasElementType || IsGenericTypeSpec (t))
-                               return GetTypeSpec (t, context);
-
-                       if (IsGenericParameter (t))
-                               return GetGenericParameter (t, context);
-
-                       TypeReference type = m_module.TypeReferences [GetTypeSignature (t)];
-                       if (type != null)
-                               return AdjustReference (t, type);
-
-                       AssemblyNameReference asm = ImportAssembly (t.Assembly);
-                       if (t.DeclaringType != null) {
-                               type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
-                               type.DeclaringType = ImportSystemType (t.DeclaringType, context);
-                       } else
-                               type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
-
-                       if (IsGenericTypeDefinition (t))
-                               foreach (Type genParam in GetGenericArguments (t))
-                                       type.GenericParameters.Add (new GenericParameter (genParam.Name, type));
-
-                       context.GenericContext.Type = type;
-
-                       m_module.TypeReferences.Add (type);
-                       return type;
-               }
-
-               static string GetMethodBaseSignature (SR.MethodBase meth, Type declaringType, Type retType)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (GetTypeSignature (retType));
-                       sb.Append (' ');
-                       sb.Append (GetTypeSignature (declaringType));
-                       sb.Append ("::");
-                       sb.Append (meth.Name);
-                       if (IsGenericMethodSpec (meth)) {
-                               sb.Append ("<");
-                               Type [] genArgs = GetGenericArguments (meth as SR.MethodInfo);
-                               for (int i = 0; i < genArgs.Length; i++) {
-                                       if (i > 0)
-                                               sb.Append (",");
-                                       sb.Append (GetTypeSignature (genArgs [i]));
-                               }
-                               sb.Append (">");
-                       }
-                       sb.Append ("(");
-                       SR.ParameterInfo [] parameters = meth.GetParameters ();
-                       for (int i = 0; i < parameters.Length; i++) {
-                               if (i > 0)
-                                       sb.Append (",");
-                               sb.Append (GetTypeSignature (parameters [i].ParameterType));
-                       }
-                       sb.Append (")");
-                       return sb.ToString ();
-               }
-
-               static bool IsGenericMethod (SR.MethodBase mb)
-               {
-                       return GetProperty (mb, "IsGenericMethod");
-               }
-
-               static bool IsGenericMethodDefinition (SR.MethodBase mb)
-               {
-                       return GetProperty (mb, "IsGenericMethodDefinition");
-               }
-
-               static bool IsGenericMethodSpec (SR.MethodBase mb)
-               {
-                       return IsGenericMethod (mb) && !IsGenericMethodDefinition (mb);
-               }
-
-               static Type [] GetGenericArguments (SR.MethodInfo mi)
-               {
-                       return (Type []) mi.GetType ().GetMethod ("GetGenericArguments").Invoke (mi, null);
-               }
-
-               static int GetMetadataToken (SR.MethodInfo mi)
-               {
-                       return (int) mi.GetType ().GetProperty ("MetadataToken").GetValue (mi, null);
-               }
-
-               MethodReference ImportGenericInstanceMethod (SR.MethodInfo mi, ImportContext context)
-               {
-                       SR.MethodInfo gmd = (SR.MethodInfo) mi.GetType ().GetMethod ("GetGenericMethodDefinition").Invoke (mi, null);
-                       GenericInstanceMethod gim = new GenericInstanceMethod (
-                               ImportMethodBase (gmd, gmd.ReturnType, context));
-
-                       foreach (Type genArg in GetGenericArguments (mi))
-                               gim.GenericArguments.Add (ImportSystemType (genArg, context));
-
-                       return gim;
-               }
-
-               MethodReference ImportMethodBase (SR.MethodBase mb, Type retType, ImportContext context)
-               {
-                       if (IsGenericMethod (mb) && !IsGenericMethodDefinition (mb))
-                               return ImportGenericInstanceMethod ((SR.MethodInfo) mb, context);
-
-                       Type originalDecType = mb.DeclaringType;
-                       Type declaringTypeDef = originalDecType;
-                       while (IsGenericTypeSpec (declaringTypeDef))
-                               declaringTypeDef = GetGenericTypeDefinition (declaringTypeDef);
-
-                       if (mb.DeclaringType != declaringTypeDef && mb is SR.MethodInfo) {
-                               int mt = GetMetadataToken (mb as SR.MethodInfo);
-                               // hack to get the generic method definition from the constructed method
-                               foreach (SR.MethodInfo mi in declaringTypeDef.GetMethods ()) {
-                                       if (GetMetadataToken (mi) == mt) {
-                                               mb = mi;
-                                               retType = mi.ReturnType;
-                                               break;
-                                       }
-                               }
-                       }
-
-                       string sig = GetMethodBaseSignature (mb, originalDecType, retType);
-                       MethodReference meth = (MethodReference) GetMemberReference (sig);
-                       if (meth != null)
-                               return meth;
-
-                       meth = new MethodReference (
-                               mb.Name,
-                               (mb.CallingConvention & SR.CallingConventions.HasThis) > 0,
-                               (mb.CallingConvention & SR.CallingConventions.ExplicitThis) > 0,
-                               MethodCallingConvention.Default); // TODO: get the real callconv
-                       meth.DeclaringType = ImportSystemType (originalDecType, context);
-
-                       if (IsGenericMethod (mb))
-                               foreach (Type genParam in GetGenericArguments (mb as SR.MethodInfo))
-                                       meth.GenericParameters.Add (new GenericParameter (genParam.Name, meth));
-
-                       TypeReference contextType = context.GenericContext.Type;
-                       MethodReference contextMethod = context.GenericContext.Method;
-
-                       context.GenericContext.Method = meth;
-                       context.GenericContext.Type = ImportSystemType (declaringTypeDef, context);
-
-                       meth.ReturnType.ReturnType = ImportSystemType (retType, context);
-
-                       SR.ParameterInfo [] parameters = mb.GetParameters ();
-                       for (int i = 0; i < parameters.Length; i++)
-                               meth.Parameters.Add (new ParameterDefinition (
-                                       ImportSystemType (parameters [i].ParameterType, context)));
-
-                       context.GenericContext.Type = contextType;
-                       context.GenericContext.Method = contextMethod;
-
-                       m_module.MemberReferences.Add (meth);
-                       return meth;
-               }
-
-               public MethodReference ImportConstructorInfo (SR.ConstructorInfo ci, ImportContext context)
-               {
-                       return ImportMethodBase (ci, typeof (void), context);
-               }
-
-               public MethodReference ImportMethodInfo (SR.MethodInfo mi, ImportContext context)
-               {
-                       return ImportMethodBase (mi, mi.ReturnType, context);
-               }
-
-               static string GetFieldSignature (SR.FieldInfo field)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (GetTypeSignature (field.FieldType));
-                       sb.Append (' ');
-                       sb.Append (GetTypeSignature (field.DeclaringType));
-                       sb.Append ("::");
-                       sb.Append (field.Name);
-                       return sb.ToString ();
-               }
-
-               public FieldReference ImportFieldInfo (SR.FieldInfo fi, ImportContext context)
-               {
-                       string sig = GetFieldSignature (fi);
-                       FieldReference f = (FieldReference) GetMemberReference (sig);
-                       if (f != null)
-                               return f;
-
-                       f = new FieldReference (
-                               fi.Name,
-                               ImportSystemType (fi.DeclaringType, context),
-                               ImportSystemType (fi.FieldType, context));
-
-                       m_module.MemberReferences.Add (f);
-                       return f;
-               }
-
-               MemberReference GetMemberReference (string signature)
-               {
-                       foreach (MemberReference reference in m_module.MemberReferences)
-                               if (reference.ToString () == signature)
-                                       return reference;
-
-                       return null;
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionReader.cs
deleted file mode 100644 (file)
index 07dd338..0000000
+++ /dev/null
@@ -1,1304 +0,0 @@
-//
-// ReflectionReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.IO;
-       using System.Text;
-
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Cil;
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
-
-       internal abstract class ReflectionReader : BaseReflectionReader {
-
-               ModuleDefinition m_module;
-               ImageReader m_reader;
-               SecurityDeclarationReader m_secReader;
-               protected MetadataTableReader m_tableReader;
-               protected MetadataRoot m_root;
-               protected TablesHeap m_tHeap;
-               protected bool m_checkDeleted;
-
-               protected TypeDefinition [] m_typeDefs;
-               protected TypeReference [] m_typeRefs;
-               protected TypeReference [] m_typeSpecs;
-               protected MethodDefinition [] m_meths;
-               protected FieldDefinition [] m_fields;
-               protected EventDefinition [] m_events;
-               protected PropertyDefinition [] m_properties;
-               protected MemberReference [] m_memberRefs;
-               protected ParameterDefinition [] m_parameters;
-               protected GenericParameter [] m_genericParameters;
-               protected GenericInstanceMethod [] m_methodSpecs;
-
-               bool m_isCorlib;
-               AssemblyNameReference m_corlib;
-
-               protected SignatureReader m_sigReader;
-               protected CodeReader m_codeReader;
-               protected ISymbolReader m_symbolReader;
-
-               internal AssemblyNameReference Corlib {
-                       get {
-                               if (m_corlib != null)
-                                       return m_corlib;
-
-                               foreach (AssemblyNameReference ar in m_module.AssemblyReferences) {
-                                       if (ar.Name == Constants.Corlib) {
-                                               m_corlib = ar;
-                                               return m_corlib;
-                                       }
-                               }
-
-                               return null;
-                       }
-               }
-
-               public ModuleDefinition Module {
-                       get { return m_module; }
-               }
-
-               public SignatureReader SigReader {
-                       get { return m_sigReader; }
-               }
-
-               public MetadataTableReader TableReader {
-                       get { return m_tableReader; }
-               }
-
-               public CodeReader Code {
-                       get { return m_codeReader; }
-               }
-
-               public ISymbolReader SymbolReader {
-                       get { return m_symbolReader; }
-                       set { m_symbolReader = value; }
-               }
-
-               public MetadataRoot MetadataRoot {
-                       get { return m_root; }
-               }
-
-               public ReflectionReader (ModuleDefinition module)
-               {
-                       m_module = module;
-                       m_reader = m_module.ImageReader;
-                       m_root = m_module.Image.MetadataRoot;
-                       m_tHeap = m_root.Streams.TablesHeap;
-                       m_checkDeleted = (m_tHeap.HeapSizes & 0x80) != 0;
-                       if (m_reader != null)
-                               m_tableReader = m_reader.MetadataReader.TableReader;
-                       m_codeReader = new CodeReader (this);
-                       m_sigReader = new SignatureReader (m_root, this);
-                       m_isCorlib = module.Assembly.Name.Name == Constants.Corlib;
-               }
-
-               public TypeDefinition GetTypeDefAt (uint rid)
-               {
-                       if (rid > m_typeDefs.Length)
-                               return null;
-
-                       return m_typeDefs [rid - 1];
-               }
-
-               public TypeReference GetTypeRefAt (uint rid)
-               {
-                       if (rid > m_typeRefs.Length)
-                               return null;
-
-                       return m_typeRefs [rid - 1];
-               }
-
-               public TypeReference GetTypeSpecAt (uint rid, GenericContext context)
-               {
-                       if (rid > m_typeSpecs.Length)
-                               return null;
-
-                       int index = (int) rid - 1;
-
-                       TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable ();
-                       TypeSpecRow tsRow = tsTable [index];
-                       TypeSpec ts = m_sigReader.GetTypeSpec (tsRow.Signature);
-
-                       // don't cache context dependent generic stuff
-                       if (IsGenericTypeSpec (ts.Type.ElementType))
-                               return CreateTypeSpecFromSig (ts, index, context);
-
-                       TypeReference tspec = m_typeSpecs [index];
-                       if (tspec != null)
-                               return tspec;
-
-                       tspec = CreateTypeSpecFromSig (ts, index, context);
-                       m_typeSpecs [index] = tspec;
-
-                       return tspec;
-               }
-
-               static bool IsGenericTypeSpec (ElementType etype)
-               {
-                       return etype == ElementType.GenericInst
-                               || etype == ElementType.Var
-                               || etype == ElementType.MVar;
-               }
-
-               TypeReference CreateTypeSpecFromSig (TypeSpec ts, int index, GenericContext context)
-               {
-                       TypeReference tspec = GetTypeRefFromSig (ts.Type, context);
-                       tspec = GetModifierType (ts.CustomMods, tspec);
-                       tspec.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeSpec, index);
-                       return tspec;
-               }
-
-               public FieldDefinition GetFieldDefAt (uint rid)
-               {
-                       if (rid > m_fields.Length)
-                               return null;
-
-                       return m_fields [rid - 1];
-               }
-
-               public MethodDefinition GetMethodDefAt (uint rid)
-               {
-                       if (rid > m_meths.Length)
-                               return null;
-
-                       return m_meths [rid - 1];
-               }
-
-               protected bool IsDeleted (IMemberDefinition member)
-               {
-                       if (!m_checkDeleted)
-                               return false;
-
-                       if (!member.IsSpecialName || !member.IsRuntimeSpecialName)
-                               return false;
-
-                       return member.Name.StartsWith (Constants.Deleted);
-               }
-
-               public MemberReference GetMemberRefAt (uint rid, GenericContext context)
-               {
-                       if (rid > m_memberRefs.Length)
-                               return null;
-
-                       int index = (int) rid - 1;
-                       MemberReference member = m_memberRefs [index];
-                       if (member != null)
-                               return member;
-
-                       MemberRefTable mrTable = m_tableReader.GetMemberRefTable ();
-                       MemberRefRow mrefRow = mrTable [index];
-
-                       Signature sig = m_sigReader.GetMemberRefSig (mrefRow.Class.TokenType, mrefRow.Signature);
-                       switch (mrefRow.Class.TokenType) {
-                       case TokenType.TypeDef :
-                       case TokenType.TypeRef :
-                       case TokenType.TypeSpec :
-                               TypeReference declaringType = GetTypeDefOrRef (mrefRow.Class, context);
-                               GenericContext nc = context.Clone ();
-
-                               if (declaringType is GenericInstanceType) {
-                                       TypeReference ct = declaringType;
-                                       while (ct is GenericInstanceType)
-                                               ct = (ct as GenericInstanceType).ElementType;
-
-                                       nc.Type = ct;
-                               }
-
-                               if (sig is FieldSig) {
-                                       FieldSig fs = sig as FieldSig;
-                                       TypeReference fieldType = GetTypeRefFromSig (fs.Type, nc);
-                                       fieldType = GetModifierType (fs.CustomMods, fieldType);
-
-                                       member = new FieldReference (
-                                               m_root.Streams.StringsHeap [mrefRow.Name],
-                                               declaringType,
-                                               fieldType);
-                               } else {
-                                       string name = m_root.Streams.StringsHeap [mrefRow.Name];
-                                       MethodSig ms = (MethodSig) sig;
-
-                                       member = CreateMethodReferenceFromSig (ms, name, declaringType, nc);
-                               }
-                               break;
-                       case TokenType.Method :
-                               // really not sure about this
-                               MethodDefinition methdef = GetMethodDefAt (mrefRow.Class.RID);
-
-                               member = CreateMethodReferenceFromSig ((MethodSig) sig, methdef.Name, methdef.DeclaringType, new GenericContext ());
-                               break;
-                       case TokenType.ModuleRef :
-                               break; // TODO, implement that, or not
-                       }
-
-                       member.MetadataToken = MetadataToken.FromMetadataRow (TokenType.MemberRef, index);
-                       m_module.MemberReferences.Add (member);
-                       m_memberRefs [index] = member;
-
-                       return member;
-               }
-
-               MethodReference CreateMethodReferenceFromSig (MethodSig ms, string name, TypeReference declaringType, GenericContext context)
-               {
-                       MethodReference methref = new MethodReference (
-                               name, ms.HasThis, ms.ExplicitThis, ms.MethCallConv);
-                       methref.DeclaringType = declaringType;
-
-                       if (ms is MethodDefSig) {
-                               int arity = (ms as MethodDefSig).GenericParameterCount;
-                               for (int i = 0; i < arity; i++)
-                                       methref.GenericParameters.Add (new GenericParameter (i, methref));
-                       }
-
-                       if (methref.GenericParameters.Count > 0)
-                               context.Method = methref;
-
-                       methref.ReturnType = GetMethodReturnType (ms, context);
-
-                       methref.ReturnType.Method = methref;
-                       for (int j = 0; j < ms.ParamCount; j++) {
-                               Param p = ms.Parameters [j];
-                               ParameterDefinition pdef = BuildParameterDefinition (j, p, context);
-                               pdef.Method = methref;
-                               methref.Parameters.Add (pdef);
-                       }
-
-                       CreateSentinelIfNeeded (methref, ms);
-
-                       return methref;
-               }
-
-               public static void CreateSentinelIfNeeded (IMethodSignature meth, MethodSig signature)
-               {
-                       MethodDefSig sig = signature as MethodDefSig;
-                       if (sig == null)
-                               return;
-
-                       int sentinel = sig.Sentinel;
-
-                       if (sig.Sentinel < 0 || sig.Sentinel >= meth.Parameters.Count)
-                               return;
-
-                       ParameterDefinition param = meth.Parameters [sentinel];
-                       param.ParameterType = new SentinelType (param.ParameterType);
-               }
-
-               public PropertyDefinition GetPropertyDefAt (uint rid)
-               {
-                       if (rid > m_properties.Length)
-                               return null;
-
-                       return m_properties [rid - 1];
-               }
-
-               public EventDefinition GetEventDefAt (uint rid)
-               {
-                       if (rid > m_events.Length)
-                               return null;
-
-                       return m_events [rid - 1];
-               }
-
-               public ParameterDefinition GetParamDefAt (uint rid)
-               {
-                       if (rid > m_parameters.Length)
-                               return null;
-
-                       return m_parameters [rid - 1];
-               }
-
-               public GenericParameter GetGenericParameterAt (uint rid)
-               {
-                       if (rid > m_genericParameters.Length)
-                               return null;
-
-                       return m_genericParameters [rid - 1];
-               }
-
-               public GenericInstanceMethod GetMethodSpecAt (uint rid, GenericContext context)
-               {
-                       if (rid > m_methodSpecs.Length)
-                               return null;
-
-                       int index = (int) rid - 1;
-                       GenericInstanceMethod gim = m_methodSpecs [index];
-                       if (gim != null)
-                               return gim;
-
-                       MethodSpecTable msTable = m_tableReader.GetMethodSpecTable ();
-                       MethodSpecRow msRow = msTable [index];
-
-                       MethodSpec sig = m_sigReader.GetMethodSpec (msRow.Instantiation);
-
-                       MethodReference meth;
-                       if (msRow.Method.TokenType == TokenType.Method)
-                               meth = GetMethodDefAt (msRow.Method.RID);
-                       else if (msRow.Method.TokenType == TokenType.MemberRef)
-                               meth = (MethodReference) GetMemberRefAt (msRow.Method.RID, context);
-                       else
-                               throw new ReflectionException ("Unknown method type for method spec");
-
-                       gim = new GenericInstanceMethod (meth);
-                       context.CheckProvider (meth, sig.Signature.Arity);
-                       foreach (GenericArg arg in sig.Signature.Types)
-                               gim.GenericArguments.Add (GetGenericArg (arg, context));
-
-                       m_methodSpecs [index] = gim;
-
-                       return gim;
-               }
-
-               public TypeReference GetTypeDefOrRef (MetadataToken token, GenericContext context)
-               {
-                       if (token.RID == 0)
-                               return null;
-
-                       switch (token.TokenType) {
-                       case TokenType.TypeDef :
-                               return GetTypeDefAt (token.RID);
-                       case TokenType.TypeRef :
-                               return GetTypeRefAt (token.RID);
-                       case TokenType.TypeSpec :
-                               return GetTypeSpecAt (token.RID, context);
-                       default :
-                               return null;
-                       }
-               }
-
-               public TypeReference SearchCoreType (string fullName)
-               {
-                       if (m_isCorlib)
-                               return m_module.Types [fullName];
-
-                       TypeReference coreType =  m_module.TypeReferences [fullName];
-                       if (coreType == null) {
-                               string [] parts = fullName.Split ('.');
-                               if (parts.Length != 2)
-                                       throw new ReflectionException ("Unvalid core type name");
-                               coreType = new TypeReference (parts [1], parts [0], Corlib);
-                               m_module.TypeReferences.Add (coreType);
-                       }
-                       if (!coreType.IsValueType) {
-                               switch (coreType.FullName) {
-                               case Constants.Boolean :
-                               case Constants.Char :
-                               case Constants.Single :
-                               case Constants.Double :
-                               case Constants.SByte :
-                               case Constants.Byte :
-                               case Constants.Int16 :
-                               case Constants.UInt16 :
-                               case Constants.Int32 :
-                               case Constants.UInt32 :
-                               case Constants.Int64 :
-                               case Constants.UInt64 :
-                               case Constants.IntPtr :
-                               case Constants.UIntPtr :
-                                       coreType.IsValueType = true;
-                                       break;
-                               }
-                       }
-                       return coreType;
-               }
-
-               public IMetadataTokenProvider LookupByToken (MetadataToken token)
-               {
-                       switch (token.TokenType) {
-                       case TokenType.TypeDef :
-                               return GetTypeDefAt (token.RID);
-                       case TokenType.TypeRef :
-                               return GetTypeRefAt (token.RID);
-                       case TokenType.Method :
-                               return GetMethodDefAt (token.RID);
-                       case TokenType.Field :
-                               return GetFieldDefAt (token.RID);
-                       case TokenType.Event :
-                               return GetEventDefAt (token.RID);
-                       case TokenType.Property :
-                               return GetPropertyDefAt (token.RID);
-                       case TokenType.Param :
-                               return GetParamDefAt (token.RID);
-                       default :
-                               throw new NotSupportedException ("Lookup is not allowed on this kind of token");
-                       }
-               }
-
-               public CustomAttribute GetCustomAttribute (MethodReference ctor, byte [] data, bool resolve)
-               {
-                       CustomAttrib sig = m_sigReader.GetCustomAttrib (data, ctor, resolve);
-                       return BuildCustomAttribute (ctor, data, sig);
-               }
-
-               public CustomAttribute GetCustomAttribute (MethodReference ctor, byte [] data)
-               {
-                       return GetCustomAttribute (ctor, data, false);
-               }
-
-               public override void VisitModuleDefinition (ModuleDefinition mod)
-               {
-                       VisitTypeDefinitionCollection (mod.Types);
-               }
-
-               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
-               {
-                       // type def reading
-                       TypeDefTable typesTable = m_tableReader.GetTypeDefTable ();
-                       m_typeDefs = new TypeDefinition [typesTable.Rows.Count];
-                       for (int i = 0; i < typesTable.Rows.Count; i++) {
-                               TypeDefRow type = typesTable [i];
-                               TypeDefinition t = new TypeDefinition (
-                                       m_root.Streams.StringsHeap [type.Name],
-                                       m_root.Streams.StringsHeap [type.Namespace],
-                                       type.Flags);
-                               t.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeDef, i);
-
-                               m_typeDefs [i] = t;
-                       }
-
-                       // nested types
-                       if (m_tHeap.HasTable (NestedClassTable.RId)) {
-                               NestedClassTable nested = m_tableReader.GetNestedClassTable ();
-                               for (int i = 0; i < nested.Rows.Count; i++) {
-                                       NestedClassRow row = nested [i];
-
-                                       TypeDefinition parent = GetTypeDefAt (row.EnclosingClass);
-                                       TypeDefinition child = GetTypeDefAt (row.NestedClass);
-
-                                       if (!IsDeleted (child))
-                                               parent.NestedTypes.Add (child);
-                               }
-                       }
-
-                       foreach (TypeDefinition type in m_typeDefs)
-                               if (!IsDeleted (type))
-                                       types.Add (type);
-
-                       // type ref reading
-                       if (m_tHeap.HasTable (TypeRefTable.RId)) {
-                               TypeRefTable typesRef = m_tableReader.GetTypeRefTable ();
-
-                               m_typeRefs = new TypeReference [typesRef.Rows.Count];
-
-                               for (int i = 0; i < typesRef.Rows.Count; i++)
-                                       AddTypeRef (typesRef, i);
-                       } else
-                               m_typeRefs = new TypeReference [0];
-
-                       ReadTypeSpecs ();
-                       ReadMethodSpecs ();
-
-                       ReadMethods ();
-                       ReadGenericParameters ();
-
-                       // set base types
-                       for (int i = 0; i < typesTable.Rows.Count; i++) {
-                               TypeDefRow type = typesTable [i];
-                               TypeDefinition child = m_typeDefs [i];
-                               child.BaseType = GetTypeDefOrRef (type.Extends, new GenericContext (child));
-                       }
-
-                       CompleteMethods ();
-                       ReadAllFields ();
-                       ReadMemberReferences ();
-               }
-
-               void AddTypeRef (TypeRefTable typesRef, int i)
-               {
-                       if (i >= typesRef.Rows.Count)
-                               return;
-
-                       // Check if index has been already added.
-                       if (m_typeRefs [i] != null)
-                               return;
-
-                       TypeRefRow type = typesRef [i];
-                       IMetadataScope scope = null;
-                       TypeReference parent = null;
-
-                       if (type.ResolutionScope.RID != 0) {
-                               int rid = (int) type.ResolutionScope.RID - 1;
-                               switch (type.ResolutionScope.TokenType) {
-                               case TokenType.AssemblyRef:
-                                       scope = m_module.AssemblyReferences [rid];
-                                       break;
-                               case TokenType.ModuleRef:
-                                       scope = m_module.ModuleReferences [rid];
-                                       break;
-                               case TokenType.Module:
-                                       scope = m_module.Assembly.Modules [rid];
-                                       break;
-                               case TokenType.TypeRef:
-                                       AddTypeRef (typesRef, rid);
-                                       parent = GetTypeRefAt (type.ResolutionScope.RID);
-                                       if (parent != null)
-                                               scope = parent.Scope;
-                                       break;
-                               }
-                       }
-
-                       TypeReference t = new TypeReference (
-                               m_root.Streams.StringsHeap [type.Name],
-                               m_root.Streams.StringsHeap [type.Namespace],
-                               scope);
-                       t.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeRef, i);
-
-                       if (parent != null)
-                               t.DeclaringType = parent;
-
-                       m_typeRefs [i] = t;
-                       m_module.TypeReferences.Add (t);
-               }
-
-               void ReadTypeSpecs ()
-               {
-                       if (!m_tHeap.HasTable (TypeSpecTable.RId))
-                               return;
-
-                       TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable ();
-                       m_typeSpecs = new TypeReference [tsTable.Rows.Count];
-               }
-
-               void ReadMethodSpecs ()
-               {
-                       if (!m_tHeap.HasTable (MethodSpecTable.RId))
-                               return;
-
-                       MethodSpecTable msTable = m_tableReader.GetMethodSpecTable ();
-                       m_methodSpecs = new GenericInstanceMethod [msTable.Rows.Count];
-               }
-
-               void ReadGenericParameters ()
-               {
-                       if (!m_tHeap.HasTable (GenericParamTable.RId))
-                               return;
-
-                       GenericParamTable gpTable = m_tableReader.GetGenericParamTable ();
-                       m_genericParameters = new GenericParameter [gpTable.Rows.Count];
-                       for (int i = 0; i < gpTable.Rows.Count; i++) {
-                               GenericParamRow gpRow = gpTable [i];
-                               IGenericParameterProvider owner;
-                               if (gpRow.Owner.TokenType == TokenType.Method)
-                                       owner = GetMethodDefAt (gpRow.Owner.RID);
-                               else if (gpRow.Owner.TokenType == TokenType.TypeDef)
-                                       owner = GetTypeDefAt (gpRow.Owner.RID);
-                               else
-                                       throw new ReflectionException ("Unknown owner type for generic parameter");
-
-                               GenericParameter gp = new GenericParameter (gpRow.Number, owner);
-                               gp.Attributes = gpRow.Flags;
-                               gp.Name = MetadataRoot.Streams.StringsHeap [gpRow.Name];
-                               gp.MetadataToken = MetadataToken.FromMetadataRow (TokenType.GenericParam, i);
-
-                               owner.GenericParameters.Add (gp);
-                               m_genericParameters [i] = gp;
-                       }
-               }
-
-               void ReadAllFields ()
-               {
-                       TypeDefTable tdefTable = m_tableReader.GetTypeDefTable ();
-
-                       if (!m_tHeap.HasTable (FieldTable.RId)) {
-                               m_fields = new FieldDefinition [0];
-                               return;
-                       }
-
-                       FieldTable fldTable = m_tableReader.GetFieldTable ();
-                       m_fields = new FieldDefinition [fldTable.Rows.Count];
-
-                       for (int i = 0; i < m_typeDefs.Length; i++) {
-                               TypeDefinition dec = m_typeDefs [i];
-                               GenericContext context = new GenericContext (dec);
-
-                               int index = i, next;
-
-                               if (index == tdefTable.Rows.Count - 1)
-                                       next = fldTable.Rows.Count + 1;
-                               else
-                                       next = (int) (tdefTable [index + 1]).FieldList;
-
-                               for (int j = (int) tdefTable [index].FieldList; j < next; j++) {
-                                       FieldRow frow = fldTable [j - 1];
-                                       FieldSig fsig = m_sigReader.GetFieldSig (frow.Signature);
-
-                                       FieldDefinition fdef = new FieldDefinition (
-                                               m_root.Streams.StringsHeap [frow.Name],
-                                               GetTypeRefFromSig (fsig.Type, context), frow.Flags);
-                                       fdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Field, j - 1);
-
-                                       if (fsig.CustomMods.Length > 0)
-                                               fdef.FieldType = GetModifierType (fsig.CustomMods, fdef.FieldType);
-
-                                       if (!IsDeleted (fdef))
-                                               dec.Fields.Add (fdef);
-
-                                       m_fields [j - 1] = fdef;
-                               }
-                       }
-               }
-
-               void ReadMethods ()
-               {
-                       if (!m_tHeap.HasTable (MethodTable.RId)) {
-                               m_meths = new MethodDefinition [0];
-                               return;
-                       }
-
-                       MethodTable mTable = m_tableReader.GetMethodTable ();
-                       m_meths = new MethodDefinition [mTable.Rows.Count];
-                       for (int i = 0; i < mTable.Rows.Count; i++) {
-                               MethodRow mRow = mTable [i];
-                               MethodDefinition meth = new MethodDefinition (
-                                       m_root.Streams.StringsHeap [mRow.Name],
-                                       mRow.Flags);
-                               meth.RVA = mRow.RVA;
-                               meth.ImplAttributes = mRow.ImplFlags;
-
-                               meth.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
-
-                               m_meths [i] = meth;
-                       }
-               }
-
-               void CompleteMethods ()
-               {
-                       TypeDefTable tdefTable = m_tableReader.GetTypeDefTable ();
-
-                       if (!m_tHeap.HasTable (MethodTable.RId)) {
-                               m_meths = new MethodDefinition [0];
-                               return;
-                       }
-
-                       MethodTable methTable = m_tableReader.GetMethodTable ();
-                       ParamTable paramTable = m_tableReader.GetParamTable ();
-                       if (!m_tHeap.HasTable (ParamTable.RId))
-                               m_parameters = new ParameterDefinition [0];
-                       else
-                               m_parameters = new ParameterDefinition [paramTable.Rows.Count];
-
-                       for (int i = 0; i < m_typeDefs.Length; i++) {
-                               TypeDefinition dec = m_typeDefs [i];
-
-                               int index = i, next;
-
-                               if (index == tdefTable.Rows.Count - 1)
-                                       next = methTable.Rows.Count + 1;
-                               else
-                                       next = (int) (tdefTable [index + 1]).MethodList;
-
-                               for (int j = (int) tdefTable [index].MethodList; j < next; j++) {
-                                       MethodRow methRow = methTable [j - 1];
-                                       MethodDefinition mdef = m_meths [j - 1];
-
-                                       if (!IsDeleted (mdef)) {
-                                               if (mdef.IsConstructor)
-                                                       dec.Constructors.Add (mdef);
-                                               else
-                                                       dec.Methods.Add (mdef);
-                                       }
-
-                                       GenericContext context = new GenericContext (mdef);
-
-                                       MethodDefSig msig = m_sigReader.GetMethodDefSig (methRow.Signature);
-                                       mdef.HasThis = msig.HasThis;
-                                       mdef.ExplicitThis = msig.ExplicitThis;
-                                       mdef.CallingConvention = msig.MethCallConv;
-
-                                       int prms;
-                                       if (j == methTable.Rows.Count)
-                                               prms = m_parameters.Length + 1;
-                                       else
-                                               prms = (int) (methTable [j]).ParamList;
-
-                                       ParameterDefinition retparam = null;
-
-                                       //TODO: optimize this
-                                       int start = (int) methRow.ParamList - 1;
-
-                                       if (paramTable != null && start < prms - 1) {
-
-                                               ParamRow pRetRow = paramTable [start];
-
-                                               if (pRetRow != null && pRetRow.Sequence == 0) { // ret type
-
-                                                       retparam = new ParameterDefinition (
-                                                               m_root.Streams.StringsHeap [pRetRow.Name],
-                                                               0,
-                                                               pRetRow.Flags,
-                                                               null);
-
-                                                       retparam.Method = mdef;
-                                                       m_parameters [start] = retparam;
-                                                       start++;
-                                               }
-                                       }
-
-                                       for (int k = 0; k < msig.ParamCount; k++) {
-
-                                               int pointer = start + k;
-
-                                               ParamRow pRow = null;
-
-                                               if (paramTable != null && pointer < prms - 1)
-                                                       pRow = paramTable [pointer];
-
-                                               Param psig = msig.Parameters [k];
-
-                                               ParameterDefinition pdef;
-                                               if (pRow != null) {
-                                                       pdef = BuildParameterDefinition (
-                                                               m_root.Streams.StringsHeap [pRow.Name],
-                                                               pRow.Sequence, pRow.Flags, psig, context);
-                                                       pdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Param, pointer);
-                                                       m_parameters [pointer] = pdef;
-                                               } else
-                                                       pdef = BuildParameterDefinition (k + 1, psig, context);
-
-                                               pdef.Method = mdef;
-                                               mdef.Parameters.Add (pdef);
-                                       }
-
-                                       mdef.ReturnType = GetMethodReturnType (msig, context);
-                                       MethodReturnType mrt = mdef.ReturnType;
-                                       mrt.Method = mdef;
-                                       if (retparam != null) {
-                                               mrt.Parameter = retparam;
-                                               mrt.Parameter.ParameterType = mrt.ReturnType;
-                                       }
-                               }
-                       }
-
-                       uint eprid = CodeReader.GetRid ((int) m_reader.Image.CLIHeader.EntryPointToken);
-                       if (eprid > 0 && eprid <= m_meths.Length)
-                               m_module.Assembly.EntryPoint = GetMethodDefAt (eprid);
-               }
-
-               void ReadMemberReferences ()
-               {
-                       if (!m_tHeap.HasTable (MemberRefTable.RId))
-                               return;
-
-                       MemberRefTable mrefTable = m_tableReader.GetMemberRefTable ();
-                       m_memberRefs = new MemberReference [mrefTable.Rows.Count];
-               }
-
-               public override void VisitExternTypeCollection (ExternTypeCollection externs)
-               {
-                       ExternTypeCollection ext = externs;
-
-                       if (!m_tHeap.HasTable (ExportedTypeTable.RId))
-                               return;
-
-                       ExportedTypeTable etTable = m_tableReader.GetExportedTypeTable ();
-                       TypeReference [] buffer = new TypeReference [etTable.Rows.Count];
-
-                       for (int i = 0; i < etTable.Rows.Count; i++) {
-                               ExportedTypeRow etRow = etTable [i];
-
-                               buffer [i] = new TypeDefinition (
-                                       m_root.Streams.StringsHeap [etRow.TypeName],
-                                       m_root.Streams.StringsHeap [etRow.TypeNamespace],
-                                       etRow.Flags);
-                               buffer [i].AttachToScope (GetExportedTypeScope (etRow.Implementation));
-                       }
-
-                       for (int i = 0; i < etTable.Rows.Count; i++) {
-                               ExportedTypeRow etRow = etTable [i];
-                               if (etRow.Implementation.TokenType != TokenType.ExportedType)
-                                       continue;
-
-                               TypeReference exported = buffer [i];
-                               TypeReference owner = buffer [etRow.Implementation.RID - 1];
-                               exported.DeclaringType = owner;
-                               exported.AttachToScope (owner.Scope);
-                       }
-
-                       for (int i = 0; i < buffer.Length; i++) {
-                               TypeReference curs = buffer [i];
-                               if (curs != null)
-                                       ext.Add (curs);
-                       }
-               }
-
-               IMetadataScope GetExportedTypeScope (MetadataToken scope)
-               {
-                       int index = (int) scope.RID - 1;
-                       switch (scope.TokenType) {
-                       case TokenType.AssemblyRef:
-                               return Module.AssemblyReferences [index];
-                       case TokenType.File:
-                               return Module.ModuleReferences [index];
-                       case TokenType.ExportedType:
-                               return null; // resolved later
-                       default:
-                               throw new NotSupportedException ();
-                       }
-               }
-
-               static object GetFixedArgValue (CustomAttrib.FixedArg fa)
-               {
-                       if (fa.SzArray) {
-                               object [] vals = new object [fa.NumElem];
-                               for (int j = 0; j < vals.Length; j++)
-                                       vals [j] = fa.Elems [j].Value;
-                               return vals;
-                       } else
-                               return fa.Elems [0].Value;
-               }
-
-               TypeReference GetFixedArgType (CustomAttrib.FixedArg fa)
-               {
-                       if (fa.SzArray) {
-                               if (fa.NumElem == 0)
-                                       return new ArrayType (SearchCoreType (Constants.Object));
-                               else
-                                       return new ArrayType (fa.Elems [0].ElemType);
-                       } else
-                               return fa.Elems [0].ElemType;
-               }
-
-               TypeReference GetNamedArgType (CustomAttrib.NamedArg na)
-               {
-                       if (na.FieldOrPropType == ElementType.Boxed)
-                               return SearchCoreType (Constants.Object);
-
-                       return GetFixedArgType (na.FixedArg);
-               }
-
-               protected CustomAttribute BuildCustomAttribute (MethodReference ctor, byte [] data, CustomAttrib sig)
-               {
-                       CustomAttribute cattr = new CustomAttribute (ctor);
-                       if (!sig.Read) {
-                               cattr.Resolved = false;
-                               cattr.Blob = data;
-                               return cattr;
-                       }
-
-                       foreach (CustomAttrib.FixedArg fa in sig.FixedArgs)
-                               cattr.ConstructorParameters.Add (GetFixedArgValue (fa));
-
-                       foreach (CustomAttrib.NamedArg na in sig.NamedArgs) {
-                               object value = GetFixedArgValue (na.FixedArg);
-                               if (na.Field) {
-                                       cattr.Fields [na.FieldOrPropName] = value;
-                                       cattr.SetFieldType (na.FieldOrPropName, GetNamedArgType (na));
-                               } else if (na.Property) {
-                                       cattr.Properties [na.FieldOrPropName] = value;
-                                       cattr.SetPropertyType (na.FieldOrPropName, GetNamedArgType (na));
-                               } else
-                                       throw new ReflectionException ("Non valid named arg");
-                       }
-
-                       return cattr;
-               }
-
-               void CompleteParameter (ParameterDefinition parameter, Param signature, GenericContext context)
-               {
-                       TypeReference paramType;
-
-                       if (signature.TypedByRef)
-                               paramType = SearchCoreType (Constants.TypedReference);
-                       else
-                               paramType = GetTypeRefFromSig (signature.Type, context);
-
-                       paramType = GetModifierType (signature.CustomMods, paramType);
-
-                       if (signature.ByRef)
-                               paramType = new ReferenceType (paramType);
-
-                       parameter.ParameterType = paramType;
-               }
-
-               public ParameterDefinition BuildParameterDefinition (int sequence, Param psig, GenericContext context)
-               {
-                       ParameterDefinition parameter = new ParameterDefinition (null);
-                       parameter.Sequence = sequence;
-
-                       CompleteParameter (parameter, psig, context);
-
-                       return parameter;
-               }
-
-               public ParameterDefinition BuildParameterDefinition (string name, int sequence, ParameterAttributes attrs, Param psig, GenericContext context)
-               {
-                       ParameterDefinition parameter = new ParameterDefinition (name, sequence, attrs, null);
-
-                       CompleteParameter (parameter, psig, context);
-
-                       return parameter;
-               }
-
-               protected SecurityDeclaration BuildSecurityDeclaration (DeclSecurityRow dsRow)
-               {
-                       return BuildSecurityDeclaration (dsRow.Action, m_root.Streams.BlobHeap.Read (dsRow.PermissionSet));
-               }
-
-               public SecurityDeclaration BuildSecurityDeclaration (SecurityAction action, byte [] permset)
-               {
-                       if (m_secReader == null)
-                               m_secReader = new SecurityDeclarationReader (m_root, this);
-
-                       return m_secReader.FromByteArray (action, permset);
-               }
-
-               protected MarshalSpec BuildMarshalDesc (MarshalSig ms, IHasMarshalSpec container)
-               {
-                       if (ms.Spec is MarshalSig.Array) {
-                               ArrayMarshalSpec amd = new ArrayMarshalSpec (container);
-                               MarshalSig.Array ar = (MarshalSig.Array) ms.Spec;
-                               amd.ElemType = ar.ArrayElemType;
-                               amd.NumElem = ar.NumElem;
-                               amd.ParamNum = ar.ParamNum;
-                               amd.ElemMult = ar.ElemMult;
-                               return amd;
-                       } else if (ms.Spec is MarshalSig.CustomMarshaler) {
-                               CustomMarshalerSpec cmd = new CustomMarshalerSpec (container);
-                               MarshalSig.CustomMarshaler cmsig = (MarshalSig.CustomMarshaler) ms.Spec;
-                               cmd.Guid = cmsig.Guid.Length > 0 ? new Guid (cmsig.Guid) : new Guid ();
-                               cmd.UnmanagedType = cmsig.UnmanagedType;
-                               cmd.ManagedType = cmsig.ManagedType;
-                               cmd.Cookie = cmsig.Cookie;
-                               return cmd;
-                       } else if (ms.Spec is MarshalSig.FixedArray) {
-                               FixedArraySpec fad = new FixedArraySpec (container);
-                               MarshalSig.FixedArray fasig = (MarshalSig.FixedArray) ms.Spec;
-                               fad.ElemType = fasig.ArrayElemType;
-                               fad.NumElem = fasig.NumElem;
-                               return fad;
-                       } else if (ms.Spec is MarshalSig.FixedSysString) {
-                               FixedSysStringSpec fssc = new FixedSysStringSpec (container);
-                               fssc.Size = ((MarshalSig.FixedSysString) ms.Spec).Size;
-                               return fssc;
-                       } else if (ms.Spec is MarshalSig.SafeArray) {
-                               SafeArraySpec sad = new SafeArraySpec (container);
-                               sad.ElemType = ((MarshalSig.SafeArray) ms.Spec).ArrayElemType;
-                               return sad;
-                       } else {
-                               return new MarshalSpec (ms.NativeInstrinsic, container);
-                       }
-               }
-
-               public TypeReference GetModifierType (CustomMod [] cmods, TypeReference type)
-               {
-                       if (cmods == null || cmods.Length == 0)
-                               return type;
-
-                       TypeReference ret = type;
-                       for (int i = cmods.Length - 1; i >= 0; i--) {
-                               CustomMod cmod = cmods [i];
-                               TypeReference modType;
-
-                               if (cmod.TypeDefOrRef.RID == 0)
-                                       continue;
-
-                               if (cmod.TypeDefOrRef.TokenType == TokenType.TypeDef)
-                                       modType = GetTypeDefAt (cmod.TypeDefOrRef.RID);
-                               else
-                                       modType = GetTypeRefAt (cmod.TypeDefOrRef.RID);
-
-                               if (cmod.CMOD == CustomMod.CMODType.OPT)
-                                       ret = new ModifierOptional (ret, modType);
-                               else if (cmod.CMOD == CustomMod.CMODType.REQD)
-                                       ret = new ModifierRequired (ret, modType);
-                       }
-                       return ret;
-               }
-
-               public MethodReturnType GetMethodReturnType (MethodSig msig, GenericContext context)
-               {
-                       TypeReference retType;
-                       if (msig.RetType.Void)
-                               retType = SearchCoreType (Constants.Void);
-                       else if (msig.RetType.TypedByRef)
-                               retType = SearchCoreType (Constants.TypedReference);
-                       else
-                               retType = GetTypeRefFromSig (msig.RetType.Type, context);
-
-                       retType = GetModifierType (msig.RetType.CustomMods, retType);
-
-                       if (msig.RetType.ByRef)
-                               retType = new ReferenceType (retType);
-
-                       return new MethodReturnType (retType);
-               }
-
-               public TypeReference GetTypeRefFromSig (SigType t, GenericContext context)
-               {
-                       switch (t.ElementType) {
-                       case ElementType.Class :
-                               CLASS c = t as CLASS;
-                               return GetTypeDefOrRef (c.Type, context);
-                       case ElementType.ValueType :
-                               VALUETYPE vt = t as VALUETYPE;
-                               TypeReference vtr = GetTypeDefOrRef (vt.Type, context);
-                               vtr.IsValueType = true;
-                               return vtr;
-                       case ElementType.String :
-                               return SearchCoreType (Constants.String);
-                       case ElementType.Object :
-                               return SearchCoreType (Constants.Object);
-                       case ElementType.Void :
-                               return SearchCoreType (Constants.Void);
-                       case ElementType.Boolean :
-                               return SearchCoreType (Constants.Boolean);
-                       case ElementType.Char :
-                               return SearchCoreType (Constants.Char);
-                       case ElementType.I1 :
-                               return SearchCoreType (Constants.SByte);
-                       case ElementType.U1 :
-                               return SearchCoreType (Constants.Byte);
-                       case ElementType.I2 :
-                               return SearchCoreType (Constants.Int16);
-                       case ElementType.U2 :
-                               return SearchCoreType (Constants.UInt16);
-                       case ElementType.I4 :
-                               return SearchCoreType (Constants.Int32);
-                       case ElementType.U4 :
-                               return SearchCoreType (Constants.UInt32);
-                       case ElementType.I8 :
-                               return SearchCoreType (Constants.Int64);
-                       case ElementType.U8 :
-                               return SearchCoreType (Constants.UInt64);
-                       case ElementType.R4 :
-                               return SearchCoreType (Constants.Single);
-                       case ElementType.R8 :
-                               return SearchCoreType (Constants.Double);
-                       case ElementType.I :
-                               return SearchCoreType (Constants.IntPtr);
-                       case ElementType.U :
-                               return SearchCoreType (Constants.UIntPtr);
-                       case ElementType.TypedByRef :
-                               return SearchCoreType (Constants.TypedReference);
-                       case ElementType.Array :
-                               ARRAY ary = t as ARRAY;
-                               return new ArrayType (GetTypeRefFromSig (ary.Type, context), ary.Shape);
-                       case ElementType.SzArray :
-                               SZARRAY szary = t as SZARRAY;
-                               ArrayType at = new ArrayType (GetTypeRefFromSig (szary.Type, context));
-                               return at;
-                       case ElementType.Ptr :
-                               PTR pointer = t as PTR;
-                               if (pointer.Void)
-                                       return new PointerType (SearchCoreType (Constants.Void));
-                               return new PointerType (GetTypeRefFromSig (pointer.PtrType, context));
-                       case ElementType.FnPtr :
-                               FNPTR funcptr = t as FNPTR;
-                               FunctionPointerType fnptr = new FunctionPointerType (funcptr.Method.HasThis, funcptr.Method.ExplicitThis,
-                                       funcptr.Method.MethCallConv, GetMethodReturnType (funcptr.Method, context));
-
-                               for (int i = 0; i < funcptr.Method.ParamCount; i++) {
-                                       Param p = funcptr.Method.Parameters [i];
-                                       fnptr.Parameters.Add (BuildParameterDefinition (i, p, context));
-                               }
-
-                               CreateSentinelIfNeeded (fnptr, funcptr.Method);
-
-                               return fnptr;
-                       case ElementType.Var:
-                               VAR var = t as VAR;
-                               context.CheckProvider (context.Type, var.Index + 1);
-
-                               if (context.Type is GenericInstanceType)
-                                       return (context.Type as GenericInstanceType).GenericArguments [var.Index];
-                               else
-                                       return context.Type.GenericParameters [var.Index];
-                       case ElementType.MVar:
-                               MVAR mvar = t as MVAR;
-                               context.CheckProvider (context.Method, mvar.Index + 1);
-
-                               if (context.Method is GenericInstanceMethod)
-                                       return (context.Method as GenericInstanceMethod).GenericArguments [mvar.Index];
-                               else
-                                       return context.Method.GenericParameters [mvar.Index];
-                       case ElementType.GenericInst:
-                               GENERICINST ginst = t as GENERICINST;
-                               GenericInstanceType instance = new GenericInstanceType (GetTypeDefOrRef (ginst.Type, context));
-                               instance.IsValueType = ginst.ValueType;
-                               context.CheckProvider (instance.GetOriginalType (), ginst.Signature.Arity);
-
-                               for (int i = 0; i < ginst.Signature.Arity; i++)
-                                       instance.GenericArguments.Add (GetGenericArg (
-                                               ginst.Signature.Types [i], context));
-
-                               return instance;
-                       default:
-                               break;
-                       }
-                       return null;
-               }
-
-               TypeReference GetGenericArg (GenericArg arg, GenericContext context)
-               {
-                       TypeReference type = GetTypeRefFromSig (arg.Type, context);
-                       type = GetModifierType (arg.CustomMods, type);
-                       return type;
-               }
-
-               static bool IsOdd (int i)
-               {
-                       return (i & 1) == 1;
-               }
-
-               protected object GetConstant (uint pos, ElementType elemType)
-               {
-                       if (elemType == ElementType.Class)
-                               return null;
-
-                       byte [] constant = m_root.Streams.BlobHeap.Read (pos);
-
-                       if (elemType == ElementType.String) {
-                               int length = constant.Length;
-                               if (IsOdd (length))
-                                       length--;
-
-                               return Encoding.Unicode.GetString (constant, 0, length);
-                       }
-
-                       // One byte types can always be read using BitConverter. However it can't be used
-                       // elsewhere since it behaves differently in Mono compared to CF on BE architectures
-                       switch (elemType) {
-                       case ElementType.Boolean :
-                               return BitConverter.ToBoolean (constant, 0);
-                       case ElementType.I1 :
-                               return (sbyte) constant [0];
-                       case ElementType.U1 :
-                               return (byte) constant [0];
-                       case ElementType.Object: // illegal, but foundable
-                               return null;
-                       default :
-                               if (BitConverter.IsLittleEndian)
-                                       return GetConstantLittleEndian (elemType, constant);
-                               else
-                                       return GetConstantBigEndian (elemType, constant);
-                       }
-               }
-
-               static object GetConstantLittleEndian (ElementType elemType, byte [] constant)
-               {
-                       switch (elemType) {
-                       case ElementType.Char :
-                               return BitConverter.ToChar (constant, 0);
-                       case ElementType.I2 :
-                               return BitConverter.ToInt16 (constant, 0);
-                       case ElementType.I4 :
-                               return BitConverter.ToInt32 (constant, 0);
-                       case ElementType.I8 :
-                               return BitConverter.ToInt64 (constant, 0);
-                       case ElementType.U2 :
-                               return BitConverter.ToUInt16 (constant, 0);
-                       case ElementType.U4 :
-                               return BitConverter.ToUInt32 (constant, 0);
-                       case ElementType.U8 :
-                               return BitConverter.ToUInt64 (constant, 0);
-                       case ElementType.R4 :
-                               return BitConverter.ToSingle (constant, 0);
-                       case ElementType.R8 :
-                               return BitConverter.ToDouble (constant, 0);
-                       default:
-                               throw new ReflectionException ("Non valid element in constant table");
-                       }
-               }
-
-               static object GetConstantBigEndian (ElementType elemType, byte [] constant)
-               {
-                       // BinaryReader always read it's data in LE format
-                       // note: this could be further optimized (even without unsafe code)
-                       BinaryReader br = new BinaryReader (new MemoryStream (constant));
-                       switch (elemType) {
-                       case ElementType.Char :
-                               return (char) br.ReadUInt16 ();
-                       case ElementType.I2 :
-                               return br.ReadInt16 ();
-                       case ElementType.I4 :
-                               return br.ReadInt32 ();
-                       case ElementType.I8 :
-                               return br.ReadInt64 ();
-                       case ElementType.U2 :
-                               return br.ReadUInt16 ();
-                       case ElementType.U4 :
-                               return br.ReadUInt32 ();
-                       case ElementType.U8 :
-                               return br.ReadUInt64 ();
-                       case ElementType.R4 :
-                               return br.ReadSingle ();
-                       case ElementType.R8 :
-                               return br.ReadDouble ();
-                       default:
-                               throw new ReflectionException ("Non valid element in constant table");
-                       }
-               }
-
-               protected void SetInitialValue (FieldDefinition field)
-               {
-                       int size = 0;
-                       TypeReference fieldType = field.FieldType;
-                       switch (fieldType.FullName) {
-                       case Constants.Boolean:
-                       case Constants.Byte:
-                       case Constants.SByte:
-                               size = 1;
-                               break;
-                       case Constants.Int16:
-                       case Constants.UInt16:
-                       case Constants.Char:
-                               size = 2;
-                               break;
-                       case Constants.Int32:
-                       case Constants.UInt32:
-                       case Constants.Single:
-                               size = 4;
-                               break;
-                       case Constants.Int64:
-                       case Constants.UInt64:
-                       case Constants.Double:
-                               size = 8;
-                               break;
-                       default:
-                               fieldType = fieldType.GetOriginalType ();
-
-                               TypeDefinition fieldTypeDef = fieldType as TypeDefinition;
-
-                               if (fieldTypeDef != null)
-                                       size = (int) fieldTypeDef.ClassSize;
-                               break;
-                       }
-
-                       if (size > 0 && field.RVA != RVA.Zero) {
-                               byte [] data = new byte [size];
-                               Section sect = m_reader.Image.GetSectionAtVirtualAddress (field.RVA);
-                               if (sect != null)
-                                       Buffer.BlockCopy (sect.Data, (int) (long) (field.RVA - sect.VirtualAddress), data, 0, size);
-                               field.InitialValue = data;
-                       } else
-                               field.InitialValue = new byte [0];
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionWriter.cs
deleted file mode 100644 (file)
index 418b894..0000000
+++ /dev/null
@@ -1,1564 +0,0 @@
-//
-// ReflectionWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-       using System.Globalization;
-       using System.Text;
-
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Cil;
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
-
-       internal sealed class ReflectionWriter : BaseReflectionVisitor {
-
-               StructureWriter m_structureWriter;
-               ModuleDefinition m_mod;
-               SignatureWriter m_sigWriter;
-               CodeWriter m_codeWriter;
-               MetadataWriter m_mdWriter;
-               MetadataTableWriter m_tableWriter;
-               MetadataRowWriter m_rowWriter;
-
-               bool m_saveSymbols;
-               string m_asmOutput;
-               ISymbolWriter m_symbolWriter;
-
-               ArrayList m_typeDefStack;
-               ArrayList m_methodStack;
-               ArrayList m_fieldStack;
-               ArrayList m_genericParamStack;
-               IDictionary m_typeSpecTokenCache;
-               IDictionary m_memberRefTokenCache;
-
-               uint m_methodIndex;
-               uint m_fieldIndex;
-               uint m_paramIndex;
-               uint m_eventIndex;
-               uint m_propertyIndex;
-
-               MemoryBinaryWriter m_constWriter;
-
-               public StructureWriter StructureWriter {
-                       get { return m_structureWriter; }
-                       set {
-                                m_structureWriter = value;
-
-                               Initialize ();
-                       }
-               }
-
-               public CodeWriter CodeWriter {
-                       get { return m_codeWriter; }
-               }
-
-               public bool SaveSymbols {
-                       get { return m_saveSymbols; }
-                       set { m_saveSymbols = value; }
-               }
-
-               public string OutputFile
-               {
-                       get { return m_asmOutput; }
-                       set { m_asmOutput = value; }
-               }
-
-               public ISymbolWriter SymbolWriter {
-                       get { return m_symbolWriter; }
-                       set { m_symbolWriter = value; }
-               }
-
-               public SignatureWriter SignatureWriter {
-                       get { return m_sigWriter; }
-               }
-
-               public MetadataWriter MetadataWriter {
-                       get { return m_mdWriter; }
-               }
-
-               public MetadataTableWriter MetadataTableWriter {
-                       get { return m_tableWriter; }
-               }
-
-               public MetadataRowWriter MetadataRowWriter {
-                       get { return m_rowWriter; }
-               }
-
-               public ReflectionWriter (ModuleDefinition mod)
-               {
-                       m_mod = mod;
-               }
-
-               void Initialize ()
-               {
-                       m_mdWriter = new MetadataWriter (
-                               m_mod.Assembly,
-                               m_mod.Image.MetadataRoot,
-                               m_structureWriter.Assembly.Kind,
-                               m_mod.Assembly.Runtime,
-                               m_structureWriter.GetWriter ());
-                       m_tableWriter = m_mdWriter.GetTableVisitor ();
-                       m_rowWriter = m_tableWriter.GetRowVisitor () as MetadataRowWriter;
-                       m_sigWriter = new SignatureWriter (m_mdWriter);
-                       m_codeWriter = new CodeWriter (this, m_mdWriter.CilWriter);
-
-                       m_typeDefStack = new ArrayList ();
-                       m_methodStack = new ArrayList ();
-                       m_fieldStack = new ArrayList ();
-                       m_genericParamStack = new ArrayList ();
-                       m_typeSpecTokenCache = new Hashtable ();
-                       m_memberRefTokenCache = new Hashtable ();
-
-                       m_methodIndex = 1;
-                       m_fieldIndex = 1;
-                       m_paramIndex = 1;
-                       m_eventIndex = 1;
-                       m_propertyIndex = 1;
-
-                       m_constWriter = new MemoryBinaryWriter ();
-               }
-
-               public TypeReference GetCoreType (string name)
-               {
-                       return m_mod.Controller.Reader.SearchCoreType (name);
-               }
-
-               public static uint GetRidFor (IMetadataTokenProvider tp)
-               {
-                       return tp.MetadataToken.RID;
-               }
-
-               public uint GetRidFor (AssemblyNameReference asmName)
-               {
-                       return (uint) m_mod.AssemblyReferences.IndexOf (asmName) + 1;
-               }
-
-               public uint GetRidFor (ModuleDefinition mod)
-               {
-                       return (uint) m_mod.Assembly.Modules.IndexOf (mod) + 1;
-               }
-
-               public uint GetRidFor (ModuleReference modRef)
-               {
-                       return (uint) m_mod.ModuleReferences.IndexOf (modRef) + 1;
-               }
-
-               static bool IsTypeSpec (TypeReference type)
-               {
-                       return type is TypeSpecification || type is GenericParameter;
-               }
-
-               public MetadataToken GetTypeDefOrRefToken (TypeReference type)
-               {
-                       if (IsTypeSpec (type)) {
-                               uint sig = m_sigWriter.AddTypeSpec (GetTypeSpecSig (type));
-                               if (m_typeSpecTokenCache.Contains (sig))
-                                       return (MetadataToken) m_typeSpecTokenCache [sig];
-
-                               TypeSpecTable tsTable = m_tableWriter.GetTypeSpecTable ();
-                               TypeSpecRow tsRow = m_rowWriter.CreateTypeSpecRow (sig);
-                               tsTable.Rows.Add (tsRow);
-
-                               MetadataToken token = new MetadataToken (TokenType.TypeSpec, (uint) tsTable.Rows.Count);
-                               if (! (type is GenericParameter))
-                                       type.MetadataToken = token;
-
-                               m_typeSpecTokenCache [sig] = token;
-                               return token;
-                       } else if (type != null)
-                               return type.MetadataToken;
-                       else // <Module> and interfaces
-                               return new MetadataToken (TokenType.TypeRef, 0);
-               }
-
-               public MetadataToken GetMemberRefToken (MemberReference member)
-               {
-                       if (member is MethodSpecification)
-                               return GetMemberRefToken (((MethodSpecification) member).ElementMethod);
-                       if (member is IMemberDefinition)
-                               return member.MetadataToken;
-                       if (m_memberRefTokenCache.Contains (member))
-                               return (MetadataToken) m_memberRefTokenCache [member];
-
-                       MemberRefTable mrTable = m_tableWriter.GetMemberRefTable ();
-
-                       uint sig = 0;
-                       if (member is FieldReference)
-                               sig = m_sigWriter.AddFieldSig (GetFieldSig ((FieldReference) member));
-                       else if (member is MethodReference)
-                               sig = m_sigWriter.AddMethodRefSig (GetMethodRefSig ((MethodReference) member));
-
-                       MetadataToken declaringType = GetTypeDefOrRefToken (member.DeclaringType);
-                       uint name = m_mdWriter.AddString (member.Name);
-
-                       for (int i = 0; i < mrTable.Rows.Count; i++) {
-                               MemberRefRow row = mrTable [i];
-                               if (row.Class == declaringType && row.Name == name && row.Signature == sig)
-                                       return MetadataToken.FromMetadataRow (TokenType.MemberRef, i);
-                       }
-
-                       MemberRefRow mrRow = m_rowWriter.CreateMemberRefRow (
-                               declaringType,
-                               name,
-                               sig);
-
-                       mrTable.Rows.Add (mrRow);
-                       member.MetadataToken = new MetadataToken (
-                               TokenType.MemberRef, (uint) mrTable.Rows.Count);
-                       m_memberRefTokenCache [member] = member.MetadataToken;
-                       return member.MetadataToken;
-               }
-
-               public MetadataToken GetMethodSpecToken (GenericInstanceMethod gim)
-               {
-                       uint sig = m_sigWriter.AddMethodSpec (GetMethodSpecSig (gim));
-                       MethodSpecTable msTable = m_tableWriter.GetMethodSpecTable ();
-
-                       MetadataToken meth = GetMemberRefToken (gim.ElementMethod);
-
-                       for (int i = 0; i < msTable.Rows.Count; i++) {
-                               MethodSpecRow row = msTable [i];
-                               if (row.Method == meth && row.Instantiation == sig)
-                                       return MetadataToken.FromMetadataRow (TokenType.MethodSpec, i);
-                       }
-
-                       MethodSpecRow msRow = m_rowWriter.CreateMethodSpecRow (
-                               meth,
-                               sig);
-                       msTable.Rows.Add (msRow);
-                       gim.MetadataToken = new MetadataToken (TokenType.MethodSpec, (uint) msTable.Rows.Count);
-                       return gim.MetadataToken;
-               }
-
-               public override void VisitModuleDefinition (ModuleDefinition mod)
-               {
-                       mod.FullLoad ();
-               }
-
-               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
-               {
-                       TypeDefTable tdTable = m_tableWriter.GetTypeDefTable ();
-
-                       if (types [Constants.ModuleType] == null)
-                               types.Add (new TypeDefinition (
-                                               Constants.ModuleType, string.Empty, TypeAttributes.NotPublic));
-
-                       foreach (TypeDefinition t in types)
-                               m_typeDefStack.Add (t);
-
-                       m_typeDefStack.Sort (TableComparers.TypeDef.Instance);
-
-                       for (int i = 0; i < m_typeDefStack.Count; i++) {
-                               TypeDefinition t = (TypeDefinition) m_typeDefStack [i];
-                               if (t.Module.Assembly != m_mod.Assembly)
-                                       throw new ReflectionException ("A type as not been correctly imported");
-
-                               t.MetadataToken = new MetadataToken (TokenType.TypeDef, (uint) (i + 1));
-                       }
-
-                       foreach (TypeDefinition t in m_typeDefStack) {
-                               TypeDefRow tdRow = m_rowWriter.CreateTypeDefRow (
-                                       t.Attributes,
-                                       m_mdWriter.AddString (t.Name),
-                                       m_mdWriter.AddString (t.Namespace),
-                                       GetTypeDefOrRefToken (t.BaseType),
-                                       0,
-                                       0);
-
-                               tdTable.Rows.Add (tdRow);
-                       }
-               }
-
-               public void CompleteTypeDefinitions ()
-               {
-                       TypeDefTable tdTable = m_tableWriter.GetTypeDefTable ();
-
-                       for (int i = 0; i < m_typeDefStack.Count; i++) {
-                               TypeDefRow tdRow = tdTable [i];
-                               TypeDefinition t = (TypeDefinition) m_typeDefStack [i];
-                               tdRow.FieldList = m_fieldIndex;
-                               tdRow.MethodList = m_methodIndex;
-                               if (t.HasFields) {
-                                       foreach (FieldDefinition field in t.Fields)
-                                               VisitFieldDefinition (field);
-                               }
-                               if (t.HasConstructors) {
-                                       foreach (MethodDefinition ctor in t.Constructors)
-                                               VisitMethodDefinition (ctor);
-                               }
-                               if (t.HasMethods) {
-                                       foreach (MethodDefinition meth in t.Methods)
-                                               VisitMethodDefinition (meth);
-                               }
-
-                               if (t.HasLayoutInfo)
-                                       WriteLayout (t);
-                       }
-
-                       foreach (FieldDefinition field in m_fieldStack) {
-                               if (field.HasCustomAttributes)
-                                       VisitCustomAttributeCollection (field.CustomAttributes);
-                               if (field.MarshalSpec != null)
-                                       VisitMarshalSpec (field.MarshalSpec);
-                       }
-
-                       foreach (MethodDefinition meth in m_methodStack) {
-                               if (meth.ReturnType.HasCustomAttributes)
-                                       VisitCustomAttributeCollection (meth.ReturnType.CustomAttributes);
-                               if (meth.HasParameters) {
-                                       foreach (ParameterDefinition param in meth.Parameters) {
-                                               if (param.HasCustomAttributes)
-                                                       VisitCustomAttributeCollection (param.CustomAttributes);
-                                       }
-                               }
-                               if (meth.HasGenericParameters)
-                                       VisitGenericParameterCollection (meth.GenericParameters);
-                               if (meth.HasOverrides)
-                                       VisitOverrideCollection (meth.Overrides);
-                               if (meth.HasCustomAttributes)
-                                       VisitCustomAttributeCollection (meth.CustomAttributes);
-                               if (meth.HasSecurityDeclarations)
-                                       VisitSecurityDeclarationCollection (meth.SecurityDeclarations);
-                               if (meth.PInvokeInfo != null) {
-                                       meth.Attributes |= MethodAttributes.PInvokeImpl;
-                                       VisitPInvokeInfo (meth.PInvokeInfo);
-                               }
-                       }
-
-                       foreach (TypeDefinition t in m_typeDefStack)
-                               t.Accept (this);
-               }
-
-               public override void VisitTypeReferenceCollection (TypeReferenceCollection refs)
-               {
-                       ArrayList orderedTypeRefs = new ArrayList (refs.Count);
-                       foreach (TypeReference tr in refs)
-                               orderedTypeRefs.Add (tr);
-
-                       orderedTypeRefs.Sort (TableComparers.TypeRef.Instance);
-
-                       TypeRefTable trTable = m_tableWriter.GetTypeRefTable ();
-                       foreach (TypeReference t in orderedTypeRefs) {
-                               MetadataToken scope;
-
-                               if (t.Module.Assembly != m_mod.Assembly)
-                                       throw new ReflectionException ("A type as not been correctly imported");
-
-                               if (t.Scope == null)
-                                       continue;
-
-                               if (t.DeclaringType != null)
-                                       scope = new MetadataToken (TokenType.TypeRef, GetRidFor (t.DeclaringType));
-                               else if (t.Scope is AssemblyNameReference)
-                                       scope = new MetadataToken (TokenType.AssemblyRef,
-                                               GetRidFor ((AssemblyNameReference) t.Scope));
-                               else if (t.Scope is ModuleDefinition)
-                                       scope = new MetadataToken (TokenType.Module,
-                                               GetRidFor ((ModuleDefinition) t.Scope));
-                               else if (t.Scope is ModuleReference)
-                                       scope = new MetadataToken (TokenType.ModuleRef,
-                                               GetRidFor ((ModuleReference) t.Scope));
-                               else
-                                       scope = new MetadataToken (TokenType.ExportedType, 0);
-
-                               TypeRefRow trRow = m_rowWriter.CreateTypeRefRow (
-                                       scope,
-                                       m_mdWriter.AddString (t.Name),
-                                       m_mdWriter.AddString (t.Namespace));
-
-                               trTable.Rows.Add (trRow);
-                               t.MetadataToken = new MetadataToken (TokenType.TypeRef, (uint) trTable.Rows.Count);
-                       }
-               }
-
-               public override void VisitGenericParameterCollection (GenericParameterCollection parameters)
-               {
-                       if (parameters.Count == 0)
-                               return;
-
-                       foreach (GenericParameter gp in parameters)
-                               m_genericParamStack.Add (gp);
-               }
-
-               public override void VisitInterfaceCollection (InterfaceCollection interfaces)
-               {
-                       if (interfaces.Count == 0)
-                               return;
-
-                       InterfaceImplTable iiTable = m_tableWriter.GetInterfaceImplTable ();
-                       foreach (TypeReference interf in interfaces) {
-                               InterfaceImplRow iiRow = m_rowWriter.CreateInterfaceImplRow (
-                                       GetRidFor (interfaces.Container),
-                                       GetTypeDefOrRefToken (interf));
-
-                               iiTable.Rows.Add (iiRow);
-                       }
-               }
-
-               public override void VisitExternTypeCollection (ExternTypeCollection externs)
-               {
-                       if (externs.Count == 0)
-                               return;
-
-                       ExportedTypeTable etTable = m_tableWriter.GetExportedTypeTable ();
-                       foreach (TypeReference ext in externs) {
-                               TypeDefinition td = ext.Resolve ();
-                               if (td == null)
-                                       continue;
-
-                               MetadataToken scope = GetExportedTypeScope (td);
-
-                               ExportedTypeRow etRow = m_rowWriter.CreateExportedTypeRow (
-                                       td.Attributes,
-                                       0,
-                                       m_mdWriter.AddString (td.Name),
-                                       m_mdWriter.AddString (td.Namespace),
-                                       scope);
-
-                               etTable.Rows.Add (etRow);
-                               ext.MetadataToken = new MetadataToken (TokenType.ExportedType, (uint) etTable.Rows.Count);
-                       }
-               }
-
-               MetadataToken GetExportedTypeScope (TypeDefinition t)
-               {
-                       if (t.DeclaringType != null)
-                               return t.DeclaringType.MetadataToken;
-
-                       if (t.Scope is AssemblyNameReference)
-                               return new MetadataToken (TokenType.AssemblyRef, GetRidFor ((AssemblyNameReference) t.Scope));
-
-                       if (t.Scope is ModuleDefinition)
-                               return new MetadataToken (TokenType.Module, GetRidFor ((ModuleDefinition) t.Scope));
-
-                       throw new NotImplementedException ();
-               }
-
-               public override void VisitOverrideCollection (OverrideCollection meths)
-               {
-                       if (meths.Count == 0)
-                               return;
-
-                       MethodImplTable miTable = m_tableWriter.GetMethodImplTable ();
-                       foreach (MethodReference ov in meths) {
-                               MethodImplRow miRow = m_rowWriter.CreateMethodImplRow (
-                                       GetRidFor (meths.Container.DeclaringType as TypeDefinition),
-                                       new MetadataToken (TokenType.Method, GetRidFor (meths.Container)),
-                                       GetMemberRefToken (ov));
-
-                               miTable.Rows.Add (miRow);
-                       }
-               }
-
-               public override void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
-               {
-                       if (nestedTypes.Count == 0)
-                               return;
-
-                       NestedClassTable ncTable = m_tableWriter.GetNestedClassTable ();
-                       foreach (TypeDefinition nested in nestedTypes) {
-                               NestedClassRow ncRow = m_rowWriter.CreateNestedClassRow (
-                                       nested.MetadataToken.RID,
-                                       GetRidFor (nestedTypes.Container));
-
-                               ncTable.Rows.Add (ncRow);
-                       }
-               }
-
-               public override void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
-               {
-                       if (parameters.Count == 0)
-                               return;
-
-                       ushort seq = 1;
-                       ParamTable pTable = m_tableWriter.GetParamTable ();
-                       foreach (ParameterDefinition param in parameters)
-                               InsertParameter (pTable, param, seq++);
-               }
-
-               void InsertParameter (ParamTable pTable, ParameterDefinition param, ushort seq)
-               {
-                       ParamRow pRow = m_rowWriter.CreateParamRow (
-                               param.Attributes,
-                               seq,
-                               m_mdWriter.AddString (param.Name));
-
-                       pTable.Rows.Add (pRow);
-                       param.MetadataToken = new MetadataToken (TokenType.Param, (uint) pTable.Rows.Count);
-
-                       if (param.MarshalSpec != null)
-                               param.MarshalSpec.Accept (this);
-
-                       if (param.HasConstant)
-                               WriteConstant (param, param.ParameterType);
-
-                       m_paramIndex++;
-               }
-
-               static bool RequiresParameterRow (MethodReturnType mrt)
-               {
-                       return mrt.HasConstant || mrt.MarshalSpec != null ||
-                               mrt.CustomAttributes.Count > 0 || mrt.Parameter.Attributes != (ParameterAttributes) 0;
-               }
-
-               public override void VisitMethodDefinition (MethodDefinition method)
-               {
-                       MethodTable mTable = m_tableWriter.GetMethodTable ();
-                       MethodRow mRow = m_rowWriter.CreateMethodRow (
-                               RVA.Zero,
-                               method.ImplAttributes,
-                               method.Attributes,
-                               m_mdWriter.AddString (method.Name),
-                               m_sigWriter.AddMethodDefSig (GetMethodDefSig (method)),
-                               m_paramIndex);
-
-                       mTable.Rows.Add (mRow);
-                       m_methodStack.Add (method);
-                       method.MetadataToken = new MetadataToken (TokenType.Method, (uint) mTable.Rows.Count);
-                       m_methodIndex++;
-
-                       if (RequiresParameterRow (method.ReturnType))
-                               InsertParameter (m_tableWriter.GetParamTable (), method.ReturnType.Parameter, 0);
-
-                       VisitParameterDefinitionCollection (method.Parameters);
-               }
-
-               public override void VisitPInvokeInfo (PInvokeInfo pinvk)
-               {
-                       ImplMapTable imTable = m_tableWriter.GetImplMapTable ();
-                       ImplMapRow imRow = m_rowWriter.CreateImplMapRow (
-                               pinvk.Attributes,
-                               new MetadataToken (TokenType.Method, GetRidFor (pinvk.Method)),
-                               m_mdWriter.AddString (pinvk.EntryPoint),
-                               GetRidFor (pinvk.Module));
-
-                       imTable.Rows.Add (imRow);
-               }
-
-               public override void VisitEventDefinitionCollection (EventDefinitionCollection events)
-               {
-                       if (events.Count == 0)
-                               return;
-
-                       EventMapTable emTable = m_tableWriter.GetEventMapTable ();
-                       EventMapRow emRow = m_rowWriter.CreateEventMapRow (
-                               GetRidFor (events.Container),
-                               m_eventIndex);
-
-                       emTable.Rows.Add (emRow);
-                       VisitCollection (events);
-               }
-
-               public override void VisitEventDefinition (EventDefinition evt)
-               {
-                       EventTable eTable = m_tableWriter.GetEventTable ();
-                       EventRow eRow = m_rowWriter.CreateEventRow (
-                               evt.Attributes,
-                               m_mdWriter.AddString (evt.Name),
-                               GetTypeDefOrRefToken (evt.EventType));
-
-                       eTable.Rows.Add (eRow);
-                       evt.MetadataToken = new MetadataToken (TokenType.Event, (uint) eTable.Rows.Count);
-
-                       if (evt.AddMethod != null)
-                               WriteSemantic (MethodSemanticsAttributes.AddOn, evt, evt.AddMethod);
-
-                       if (evt.InvokeMethod != null)
-                               WriteSemantic (MethodSemanticsAttributes.Fire, evt, evt.InvokeMethod);
-
-                       if (evt.RemoveMethod != null)
-                               WriteSemantic (MethodSemanticsAttributes.RemoveOn, evt, evt.RemoveMethod);
-
-                       m_eventIndex++;
-               }
-
-               public override void VisitFieldDefinition (FieldDefinition field)
-               {
-                       FieldTable fTable = m_tableWriter.GetFieldTable ();
-                       FieldRow fRow = m_rowWriter.CreateFieldRow (
-                               field.Attributes,
-                               m_mdWriter.AddString (field.Name),
-                               m_sigWriter.AddFieldSig (GetFieldSig (field)));
-
-                       fTable.Rows.Add (fRow);
-                       field.MetadataToken = new MetadataToken (TokenType.Field, (uint) fTable.Rows.Count);
-                       m_fieldIndex++;
-
-                       if (field.HasConstant)
-                               WriteConstant (field, field.FieldType);
-
-                       if (field.HasLayoutInfo)
-                               WriteLayout (field);
-
-                       m_fieldStack.Add (field);
-               }
-
-               public override void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
-               {
-                       if (properties.Count == 0)
-                               return;
-
-                       PropertyMapTable pmTable = m_tableWriter.GetPropertyMapTable ();
-                       PropertyMapRow pmRow = m_rowWriter.CreatePropertyMapRow (
-                               GetRidFor (properties.Container),
-                               m_propertyIndex);
-
-                       pmTable.Rows.Add (pmRow);
-                       VisitCollection (properties);
-               }
-
-               public override void VisitPropertyDefinition (PropertyDefinition property)
-               {
-                       PropertyTable pTable = m_tableWriter.GetPropertyTable ();
-                       PropertyRow pRow = m_rowWriter.CreatePropertyRow (
-                               property.Attributes,
-                               m_mdWriter.AddString (property.Name),
-                               m_sigWriter.AddPropertySig (GetPropertySig (property)));
-
-                       pTable.Rows.Add (pRow);
-                       property.MetadataToken = new MetadataToken (TokenType.Property, (uint) pTable.Rows.Count);
-
-                       if (property.GetMethod != null)
-                               WriteSemantic (MethodSemanticsAttributes.Getter, property, property.GetMethod);
-
-                       if (property.SetMethod != null)
-                               WriteSemantic (MethodSemanticsAttributes.Setter, property, property.SetMethod);
-
-                       if (property.HasConstant)
-                               WriteConstant (property, property.PropertyType);
-
-                       m_propertyIndex++;
-               }
-
-               public override void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
-               {
-                       if (secDecls.Count == 0)
-                               return;
-
-                       DeclSecurityTable dsTable = m_tableWriter.GetDeclSecurityTable ();
-                       foreach (SecurityDeclaration secDec in secDecls) {
-                               DeclSecurityRow dsRow = m_rowWriter.CreateDeclSecurityRow (
-                                       secDec.Action,
-                                       secDecls.Container.MetadataToken,
-                                       m_mdWriter.AddBlob (secDec.Resolved ?
-                                               m_mod.GetAsByteArray (secDec) : secDec.Blob));
-
-                               dsTable.Rows.Add (dsRow);
-                       }
-               }
-
-               public override void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
-               {
-                       if (customAttrs.Count == 0)
-                               return;
-
-                       CustomAttributeTable caTable = m_tableWriter.GetCustomAttributeTable ();
-                       foreach (CustomAttribute ca in customAttrs) {
-                               MetadataToken parent;
-                               if (customAttrs.Container is AssemblyDefinition)
-                                       parent = new MetadataToken (TokenType.Assembly, 1);
-                               else if (customAttrs.Container is ModuleDefinition)
-                                       parent = new MetadataToken (TokenType.Module, 1);
-                               else if (customAttrs.Container is IMetadataTokenProvider)
-                                       parent = ((IMetadataTokenProvider) customAttrs.Container).MetadataToken;
-                               else
-                                       throw new ReflectionException ("Unknown Custom Attribute parent");
-
-                               uint value = ca.Resolved ?
-                                       m_sigWriter.AddCustomAttribute (GetCustomAttributeSig (ca), ca.Constructor) :
-                                       m_mdWriter.AddBlob (m_mod.GetAsByteArray (ca));
-                               CustomAttributeRow caRow = m_rowWriter.CreateCustomAttributeRow (
-                                       parent,
-                                       GetMemberRefToken (ca.Constructor),
-                                       value);
-
-                               caTable.Rows.Add (caRow);
-                       }
-               }
-
-               public override void VisitMarshalSpec (MarshalSpec marshalSpec)
-               {
-                       FieldMarshalTable fmTable = m_tableWriter.GetFieldMarshalTable ();
-                       FieldMarshalRow fmRow = m_rowWriter.CreateFieldMarshalRow (
-                               marshalSpec.Container.MetadataToken,
-                               m_sigWriter.AddMarshalSig (GetMarshalSig (marshalSpec)));
-
-                       fmTable.Rows.Add (fmRow);
-               }
-
-               void WriteConstant (IHasConstant hc, TypeReference type)
-               {
-                       ConstantTable cTable = m_tableWriter.GetConstantTable ();
-                       ElementType et;
-                       if (type is TypeDefinition && (type as TypeDefinition).IsEnum) {
-                               Type t = hc.Constant.GetType ();
-                               if (t.IsEnum)
-                                       t = Enum.GetUnderlyingType (t);
-
-                               et = GetCorrespondingType (string.Concat (t.Namespace, '.', t.Name));
-                       } else
-                               et = GetCorrespondingType (type.FullName);
-
-                       if (et == ElementType.Object || et == ElementType.Type || et == ElementType.String)
-                               et = hc.Constant == null ?
-                                       ElementType.Class :
-                                       GetCorrespondingType (hc.Constant.GetType ().FullName);
-
-                       ConstantRow cRow = m_rowWriter.CreateConstantRow (
-                               et,
-                               hc.MetadataToken,
-                               m_mdWriter.AddBlob (EncodeConstant (et, hc.Constant)));
-
-                       cTable.Rows.Add (cRow);
-               }
-
-               void WriteLayout (FieldDefinition field)
-               {
-                       FieldLayoutTable flTable = m_tableWriter.GetFieldLayoutTable ();
-                       FieldLayoutRow flRow = m_rowWriter.CreateFieldLayoutRow (
-                               field.Offset,
-                               GetRidFor (field));
-
-                       flTable.Rows.Add (flRow);
-               }
-
-               void WriteLayout (TypeDefinition type)
-               {
-                       ClassLayoutTable clTable = m_tableWriter.GetClassLayoutTable ();
-                       ClassLayoutRow clRow = m_rowWriter.CreateClassLayoutRow (
-                               type.PackingSize,
-                               type.ClassSize,
-                               GetRidFor (type));
-
-                       clTable.Rows.Add (clRow);
-               }
-
-               void WriteSemantic (MethodSemanticsAttributes attrs,
-                       IMetadataTokenProvider member, MethodDefinition meth)
-               {
-                       MethodSemanticsTable msTable = m_tableWriter.GetMethodSemanticsTable ();
-                       MethodSemanticsRow msRow = m_rowWriter.CreateMethodSemanticsRow (
-                               attrs,
-                               GetRidFor (meth),
-                               member.MetadataToken);
-
-                       msTable.Rows.Add (msRow);
-               }
-
-               void SortTables ()
-               {
-                       TablesHeap th = m_mdWriter.GetMetadataRoot ().Streams.TablesHeap;
-                       th.Sorted = 0;
-
-                       if (th.HasTable (NestedClassTable.RId))
-                               m_tableWriter.GetNestedClassTable ().Rows.Sort (
-                                       TableComparers.NestedClass.Instance);
-                       th.Sorted |= ((long) 1 << NestedClassTable.RId);
-
-                       if (th.HasTable (InterfaceImplTable.RId))
-                               m_tableWriter.GetInterfaceImplTable ().Rows.Sort (
-                                       TableComparers.InterfaceImpl.Instance);
-                       th.Sorted |= ((long) 1 << InterfaceImplTable.RId);
-
-                       if (th.HasTable (ConstantTable.RId))
-                               m_tableWriter.GetConstantTable ().Rows.Sort (
-                                       TableComparers.Constant.Instance);
-                       th.Sorted |= ((long) 1 << ConstantTable.RId);
-
-                       if (th.HasTable (MethodSemanticsTable.RId))
-                               m_tableWriter.GetMethodSemanticsTable ().Rows.Sort (
-                                       TableComparers.MethodSem.Instance);
-                       th.Sorted |= ((long) 1 << MethodSemanticsTable.RId);
-
-                       if (th.HasTable (FieldMarshalTable.RId))
-                               m_tableWriter.GetFieldMarshalTable ().Rows.Sort (
-                                       TableComparers.FieldMarshal.Instance);
-                       th.Sorted |= ((long) 1 << FieldMarshalTable.RId);
-
-                       if (th.HasTable (ClassLayoutTable.RId))
-                               m_tableWriter.GetClassLayoutTable ().Rows.Sort (
-                                       TableComparers.TypeLayout.Instance);
-                       th.Sorted |= ((long) 1 << ClassLayoutTable.RId);
-
-                       if (th.HasTable (FieldLayoutTable.RId))
-                               m_tableWriter.GetFieldLayoutTable ().Rows.Sort (
-                                       TableComparers.FieldLayout.Instance);
-                       th.Sorted |= ((long) 1 << FieldLayoutTable.RId);
-
-                       if (th.HasTable (ImplMapTable.RId))
-                               m_tableWriter.GetImplMapTable ().Rows.Sort (
-                                       TableComparers.PInvoke.Instance);
-                       th.Sorted |= ((long) 1 << ImplMapTable.RId);
-
-                       if (th.HasTable (FieldRVATable.RId))
-                               m_tableWriter.GetFieldRVATable ().Rows.Sort (
-                                       TableComparers.FieldRVA.Instance);
-                       th.Sorted |= ((long) 1 << FieldRVATable.RId);
-
-                       if (th.HasTable (MethodImplTable.RId))
-                               m_tableWriter.GetMethodImplTable ().Rows.Sort (
-                                       TableComparers.Override.Instance);
-                       th.Sorted |= ((long) 1 << MethodImplTable.RId);
-
-                       if (th.HasTable (CustomAttributeTable.RId))
-                               m_tableWriter.GetCustomAttributeTable ().Rows.Sort (
-                                       TableComparers.CustomAttribute.Instance);
-                       th.Sorted |= ((long) 1 << CustomAttributeTable.RId);
-
-                       if (th.HasTable (DeclSecurityTable.RId))
-                               m_tableWriter.GetDeclSecurityTable ().Rows.Sort (
-                                       TableComparers.SecurityDeclaration.Instance);
-                       th.Sorted |= ((long) 1 << DeclSecurityTable.RId);
-               }
-
-               void CompleteGenericTables ()
-               {
-                       if (m_genericParamStack.Count == 0)
-                               return;
-
-                       TablesHeap th = m_mdWriter.GetMetadataRoot ().Streams.TablesHeap;
-                       GenericParamTable gpTable = m_tableWriter.GetGenericParamTable ();
-
-                       m_genericParamStack.Sort (TableComparers.GenericParam.Instance);
-
-                       foreach (GenericParameter gp in m_genericParamStack) {
-                               GenericParamRow gpRow = m_rowWriter.CreateGenericParamRow (
-                                       (ushort) gp.Owner.GenericParameters.IndexOf (gp),
-                                       gp.Attributes,
-                                       gp.Owner.MetadataToken,
-                                       m_mdWriter.AddString (gp.Name));
-
-                               gpTable.Rows.Add (gpRow);
-                               gp.MetadataToken = new MetadataToken (TokenType.GenericParam, (uint) gpTable.Rows.Count);
-
-                               if (gp.HasCustomAttributes)
-                                       VisitCustomAttributeCollection (gp.CustomAttributes);
-
-                               if (!gp.HasConstraints)
-                                       continue;
-
-                               GenericParamConstraintTable gpcTable = m_tableWriter.GetGenericParamConstraintTable ();
-
-                               foreach (TypeReference constraint in gp.Constraints) {
-                                       GenericParamConstraintRow gpcRow = m_rowWriter.CreateGenericParamConstraintRow (
-                                               (uint) gpTable.Rows.Count,
-                                               GetTypeDefOrRefToken (constraint));
-
-                                       gpcTable.Rows.Add (gpcRow);
-                               }
-                       }
-
-                       th.Sorted |= ((long) 1 << GenericParamTable.RId);
-                       th.Sorted |= ((long) 1 << GenericParamConstraintTable.RId);
-               }
-
-               public override void TerminateModuleDefinition (ModuleDefinition module)
-               {
-                       if (module.Assembly.HasCustomAttributes)
-                               VisitCustomAttributeCollection (module.Assembly.CustomAttributes);
-                       if (module.Assembly.HasSecurityDeclarations)
-                               VisitSecurityDeclarationCollection (module.Assembly.SecurityDeclarations);
-                       if (module.HasCustomAttributes)
-                               VisitCustomAttributeCollection (module.CustomAttributes);
-
-                       if (module.ExternTypes.Count > 0)
-                               VisitExternTypeCollection (module.ExternTypes);
-
-                       CompleteGenericTables ();
-                       SortTables ();
-
-                       MethodTable mTable = m_tableWriter.GetMethodTable ();
-                       for (int i = 0; i < m_methodStack.Count; i++) {
-                               MethodDefinition meth = (MethodDefinition) m_methodStack [i];
-                               if (meth.HasBody)
-                                       mTable [i].RVA = m_codeWriter.WriteMethodBody (meth);
-                       }
-
-                       if (m_fieldStack.Count > 0) {
-                               FieldRVATable frTable = null;
-                               foreach (FieldDefinition field in m_fieldStack) {
-                                       if (field.InitialValue != null && field.InitialValue.Length > 0) {
-                                               if (frTable == null)
-                                                       frTable = m_tableWriter.GetFieldRVATable ();
-
-                                               FieldRVARow frRow = m_rowWriter.CreateFieldRVARow (
-                                                       m_mdWriter.GetDataCursor (),
-                                                       field.MetadataToken.RID);
-
-                                               m_mdWriter.AddData (field.InitialValue.Length + 3 & (~3));
-                                               m_mdWriter.AddFieldInitData (field.InitialValue);
-
-                                               frTable.Rows.Add (frRow);
-                                       }
-                               }
-                       }
-
-                       if (m_symbolWriter != null)
-                               m_symbolWriter.Dispose ();
-
-                       if (m_mod.Assembly.EntryPoint != null)
-                               m_mdWriter.EntryPointToken =
-                                       ((uint) TokenType.Method) | GetRidFor (m_mod.Assembly.EntryPoint);
-
-                       m_mod.Image.MetadataRoot.Accept (m_mdWriter);
-               }
-
-               public static ElementType GetCorrespondingType (string fullName)
-               {
-                       switch (fullName) {
-                       case Constants.Boolean :
-                               return ElementType.Boolean;
-                       case Constants.Char :
-                               return ElementType.Char;
-                       case Constants.SByte :
-                               return ElementType.I1;
-                       case Constants.Int16 :
-                               return ElementType.I2;
-                       case Constants.Int32 :
-                               return ElementType.I4;
-                       case Constants.Int64 :
-                               return ElementType.I8;
-                       case Constants.Byte :
-                               return ElementType.U1;
-                       case Constants.UInt16 :
-                               return ElementType.U2;
-                       case Constants.UInt32 :
-                               return ElementType.U4;
-                       case Constants.UInt64 :
-                               return ElementType.U8;
-                       case Constants.Single :
-                               return ElementType.R4;
-                       case Constants.Double :
-                               return ElementType.R8;
-                       case Constants.String :
-                               return ElementType.String;
-                       case Constants.Type :
-                               return ElementType.Type;
-                       case Constants.Object :
-                               return ElementType.Object;
-                       default:
-                               return ElementType.Class;
-                       }
-               }
-
-               byte [] EncodeConstant (ElementType et, object value)
-               {
-                       m_constWriter.Empty ();
-
-                       if (value == null)
-                               et = ElementType.Class;
-
-                       IConvertible ic = value as IConvertible;
-                       IFormatProvider fp = CultureInfo.CurrentCulture.NumberFormat;
-
-                       switch (et) {
-                       case ElementType.Boolean :
-                               m_constWriter.Write ((byte) (ic.ToBoolean (fp) ? 1 : 0));
-                               break;
-                       case ElementType.Char :
-                               m_constWriter.Write ((ushort) ic.ToChar (fp));
-                               break;
-                       case ElementType.I1 :
-                               m_constWriter.Write (ic.ToSByte (fp));
-                               break;
-                       case ElementType.I2 :
-                               m_constWriter.Write (ic.ToInt16 (fp));
-                               break;
-                       case ElementType.I4 :
-                               m_constWriter.Write (ic.ToInt32 (fp));
-                               break;
-                       case ElementType.I8 :
-                               m_constWriter.Write (ic.ToInt64 (fp));
-                               break;
-                       case ElementType.U1 :
-                               m_constWriter.Write (ic.ToByte (fp));
-                               break;
-                       case ElementType.U2 :
-                               m_constWriter.Write (ic.ToUInt16 (fp));
-                               break;
-                       case ElementType.U4 :
-                               m_constWriter.Write (ic.ToUInt32 (fp));
-                               break;
-                       case ElementType.U8 :
-                               m_constWriter.Write (ic.ToUInt64 (fp));
-                               break;
-                       case ElementType.R4 :
-                               m_constWriter.Write (ic.ToSingle (fp));
-                               break;
-                       case ElementType.R8 :
-                               m_constWriter.Write (ic.ToDouble (fp));
-                               break;
-                       case ElementType.String :
-                               m_constWriter.Write (Encoding.Unicode.GetBytes ((string) value));
-                               break;
-                       case ElementType.Class :
-                               m_constWriter.Write (new byte [4]);
-                               break;
-                       default :
-                               throw new ArgumentException ("Non valid element for a constant");
-                       }
-
-                       return m_constWriter.ToArray ();
-               }
-
-               public SigType GetSigType (TypeReference type)
-               {
-                       string name = type.FullName;
-
-                       switch (name) {
-                       case Constants.Void :
-                               return new SigType (ElementType.Void);
-                       case Constants.Object :
-                               return new SigType (ElementType.Object);
-                       case Constants.Boolean :
-                               return new SigType (ElementType.Boolean);
-                       case Constants.String :
-                               return new SigType (ElementType.String);
-                       case Constants.Char :
-                               return new SigType (ElementType.Char);
-                       case Constants.SByte :
-                               return new SigType (ElementType.I1);
-                       case Constants.Byte :
-                               return new SigType (ElementType.U1);
-                       case Constants.Int16 :
-                               return new SigType (ElementType.I2);
-                       case Constants.UInt16 :
-                               return new SigType (ElementType.U2);
-                       case Constants.Int32 :
-                               return new SigType (ElementType.I4);
-                       case Constants.UInt32 :
-                               return new SigType (ElementType.U4);
-                       case Constants.Int64 :
-                               return new SigType (ElementType.I8);
-                       case Constants.UInt64 :
-                               return new SigType (ElementType.U8);
-                       case Constants.Single :
-                               return new SigType (ElementType.R4);
-                       case Constants.Double :
-                               return new SigType (ElementType.R8);
-                       case Constants.IntPtr :
-                               return new SigType (ElementType.I);
-                       case Constants.UIntPtr :
-                               return new SigType (ElementType.U);
-                       case Constants.TypedReference :
-                               return new SigType (ElementType.TypedByRef);
-                       }
-
-                       if (type is GenericParameter) {
-                               GenericParameter gp = type as GenericParameter;
-                               int pos = gp.Owner.GenericParameters.IndexOf (gp);
-                               if (gp.Owner is TypeReference)
-                                       return new VAR (pos);
-                               else if (gp.Owner is MethodReference)
-                                       return new MVAR (pos);
-                               else
-                                       throw new ReflectionException ("Unkown generic parameter type");
-                       } else if (type is GenericInstanceType) {
-                               GenericInstanceType git = type as GenericInstanceType;
-                               GENERICINST gi = new GENERICINST ();
-                               gi.ValueType = git.IsValueType;
-                               gi.Type = GetTypeDefOrRefToken (git.ElementType);
-                               gi.Signature = new GenericInstSignature ();
-                               gi.Signature.Arity = git.GenericArguments.Count;
-                               gi.Signature.Types = new GenericArg [gi.Signature.Arity];
-                               for (int i = 0; i < git.GenericArguments.Count; i++)
-                                       gi.Signature.Types [i] = GetGenericArgSig (git.GenericArguments [i]);
-
-                               return gi;
-                       } else if (type is ArrayType) {
-                               ArrayType aryType = type as ArrayType;
-                               if (aryType.IsSizedArray) {
-                                       SZARRAY szary = new SZARRAY ();
-                                       szary.CustomMods = GetCustomMods (aryType.ElementType);
-                                       szary.Type = GetSigType (aryType.ElementType);
-                                       return szary;
-                               }
-
-                               // not optimized
-                               ArrayShape shape = new ArrayShape ();
-                               shape.Rank = aryType.Dimensions.Count;
-                               shape.NumSizes = 0;
-
-                               for (int i = 0; i < shape.Rank; i++) {
-                                       ArrayDimension dim = aryType.Dimensions [i];
-                                       if (dim.UpperBound > 0)
-                                               shape.NumSizes++;
-                               }
-
-                               shape.Sizes = new int [shape.NumSizes];
-                               shape.NumLoBounds = shape.Rank;
-                               shape.LoBounds = new int [shape.NumLoBounds];
-
-                               for (int i = 0; i < shape.Rank; i++) {
-                                       ArrayDimension dim = aryType.Dimensions [i];
-                                       shape.LoBounds [i] = dim.LowerBound;
-                                       if (dim.UpperBound > 0)
-                                               shape.Sizes [i] = dim.UpperBound - dim.LowerBound + 1;
-                               }
-
-                               ARRAY ary = new ARRAY ();
-                               ary.Shape = shape;
-                               ary.CustomMods = GetCustomMods (aryType.ElementType);
-                               ary.Type = GetSigType (aryType.ElementType);
-                               return ary;
-                       } else if (type is PointerType) {
-                               PTR p = new PTR ();
-                               TypeReference elementType = (type as PointerType).ElementType;
-                               p.Void = elementType.FullName == Constants.Void;
-                               if (!p.Void) {
-                                       p.CustomMods = GetCustomMods (elementType);
-                                       p.PtrType = GetSigType (elementType);
-                               }
-                               return p;
-                       } else if (type is FunctionPointerType) {
-                               FNPTR fp = new FNPTR ();
-                               FunctionPointerType fptr = type as FunctionPointerType;
-
-                               int sentinel = fptr.GetSentinel ();
-                               if (sentinel < 0)
-                                       fp.Method = GetMethodDefSig (fptr);
-                               else
-                                       fp.Method = GetMethodRefSig (fptr);
-
-                               return fp;
-                       } else if (type is TypeSpecification) {
-                               return GetSigType ((type as TypeSpecification).ElementType);
-                       } else if (type.IsValueType) {
-                               VALUETYPE vt = new VALUETYPE ();
-                               vt.Type = GetTypeDefOrRefToken (type);
-                               return vt;
-                       } else {
-                               CLASS c = new CLASS ();
-                               c.Type = GetTypeDefOrRefToken (type);
-                               return c;
-                       }
-               }
-
-               public GenericArg GetGenericArgSig (TypeReference type)
-               {
-                       GenericArg arg = new GenericArg (GetSigType (type));
-                       arg.CustomMods = GetCustomMods (type);
-                       return arg;
-               }
-
-               public CustomMod [] GetCustomMods (TypeReference type)
-               {
-                       ModType modifier = type as ModType;
-                       if (modifier == null)
-                               return CustomMod.EmptyCustomMod;
-
-                       ArrayList cmods = new ArrayList ();
-                       do {
-                               CustomMod cmod = new CustomMod ();
-                               cmod.TypeDefOrRef = GetTypeDefOrRefToken (modifier.ModifierType);
-
-                               if (modifier is ModifierOptional)
-                                       cmod.CMOD = CustomMod.CMODType.OPT;
-                               else if (modifier is ModifierRequired)
-                                       cmod.CMOD = CustomMod.CMODType.REQD;
-
-                               cmods.Add (cmod);
-                               modifier = modifier.ElementType as ModType;
-                       } while (modifier != null);
-
-                       return cmods.ToArray (typeof (CustomMod)) as CustomMod [];
-               }
-
-               public Signature GetMemberRefSig (MemberReference member)
-               {
-                       if (member is FieldReference)
-                               return GetFieldSig (member as FieldReference);
-                       else
-                               return GetMemberRefSig (member as MethodReference);
-               }
-
-               public FieldSig GetFieldSig (FieldReference field)
-               {
-                       FieldSig sig = new FieldSig ();
-                       sig.CallingConvention |= 0x6;
-                       sig.Field = true;
-                       sig.CustomMods = GetCustomMods (field.FieldType);
-                       sig.Type = GetSigType (field.FieldType);
-                       return sig;
-               }
-
-               Param [] GetParametersSig (ParameterDefinitionCollection parameters)
-               {
-                       Param [] ret = new Param [parameters.Count];
-                       for (int i = 0; i < ret.Length; i++) {
-                               ParameterDefinition pDef = parameters [i];
-                               Param p = new Param ();
-                               p.CustomMods = GetCustomMods (pDef.ParameterType);
-                               if (pDef.ParameterType.FullName == Constants.TypedReference)
-                                       p.TypedByRef = true;
-                               else if (IsByReferenceType (pDef.ParameterType)) {
-                                       p.ByRef = true;
-                                       p.Type = GetSigType (pDef.ParameterType);
-                               } else
-                                       p.Type = GetSigType (pDef.ParameterType);
-                               ret [i] = p;
-                       }
-                       return ret;
-               }
-
-               void CompleteMethodSig (IMethodSignature meth, MethodSig sig)
-               {
-                       sig.HasThis = meth.HasThis;
-                       sig.ExplicitThis = meth.ExplicitThis;
-                       if (sig.HasThis)
-                               sig.CallingConvention |= 0x20;
-                       if (sig.ExplicitThis)
-                               sig.CallingConvention |= 0x40;
-
-                       if ((meth.CallingConvention & MethodCallingConvention.VarArg) != 0)
-                               sig.CallingConvention |= 0x5;
-
-                       sig.ParamCount = meth.Parameters.Count;
-                       sig.Parameters = GetParametersSig (meth.Parameters);
-
-                       RetType rtSig = new RetType ();
-                       rtSig.CustomMods = GetCustomMods (meth.ReturnType.ReturnType);
-
-                       if (meth.ReturnType.ReturnType.FullName == Constants.Void)
-                               rtSig.Void = true;
-                       else if (meth.ReturnType.ReturnType.FullName == Constants.TypedReference)
-                               rtSig.TypedByRef = true;
-                       else if (IsByReferenceType (meth.ReturnType.ReturnType)) {
-                               rtSig.ByRef = true;
-                               rtSig.Type = GetSigType (meth.ReturnType.ReturnType);
-                       } else
-                               rtSig.Type = GetSigType (meth.ReturnType.ReturnType);
-
-                       sig.RetType = rtSig;
-               }
-
-               static bool IsByReferenceType (TypeReference type)
-               {
-                       TypeSpecification ts = type as TypeSpecification;
-                       while (ts != null) {
-                               if (ts is ReferenceType)
-                                       return true;
-                               ts = ts.ElementType as TypeSpecification;
-                       }
-                       return false;
-               }
-
-               public MethodRefSig GetMethodRefSig (IMethodSignature meth)
-               {
-                       MethodReference methodRef = meth as MethodReference;
-                       if (methodRef != null && methodRef.GenericParameters.Count > 0)
-                               return GetMethodDefSig (meth);
-
-                       MethodRefSig methSig = new MethodRefSig ();
-
-                       CompleteMethodSig (meth, methSig);
-
-                       int sentinel = meth.GetSentinel ();
-                       if (sentinel >= 0)
-                               methSig.Sentinel = sentinel;
-
-                       if ((meth.CallingConvention & MethodCallingConvention.C) != 0)
-                               methSig.CallingConvention |= 0x1;
-                       else if ((meth.CallingConvention & MethodCallingConvention.StdCall) != 0)
-                               methSig.CallingConvention |= 0x2;
-                       else if ((meth.CallingConvention & MethodCallingConvention.ThisCall) != 0)
-                               methSig.CallingConvention |= 0x3;
-                       else if ((meth.CallingConvention & MethodCallingConvention.FastCall) != 0)
-                               methSig.CallingConvention |= 0x4;
-
-                       return methSig;
-               }
-
-               public MethodDefSig GetMethodDefSig (IMethodSignature meth)
-               {
-                       MethodDefSig sig = new MethodDefSig ();
-
-                       CompleteMethodSig (meth, sig);
-
-                       MethodReference methodRef = meth as MethodReference;
-                       if (methodRef != null && methodRef.GenericParameters.Count > 0) {
-                               sig.CallingConvention |= 0x10;
-                               sig.GenericParameterCount = methodRef.GenericParameters.Count;
-                       }
-
-                       return sig;
-               }
-
-               public PropertySig GetPropertySig (PropertyDefinition prop)
-               {
-                       PropertySig ps = new PropertySig ();
-                       ps.CallingConvention |= 0x8;
-
-                       bool hasThis;
-                       bool explicitThis;
-                       MethodCallingConvention mcc;
-                       ParameterDefinitionCollection parameters = prop.Parameters;
-
-                       MethodDefinition meth;
-                       if (prop.GetMethod != null)
-                               meth = prop.GetMethod;
-                       else if (prop.SetMethod != null)
-                               meth = prop.SetMethod;
-                       else
-                               meth = null;
-
-                       if (meth != null) {
-                               hasThis = meth.HasThis;
-                               explicitThis = meth.ExplicitThis;
-                               mcc = meth.CallingConvention;
-                       } else {
-                               hasThis = explicitThis = false;
-                               mcc = MethodCallingConvention.Default;
-                       }
-
-                       if (hasThis)
-                               ps.CallingConvention |= 0x20;
-                       if (explicitThis)
-                               ps.CallingConvention |= 0x40;
-
-                       if ((mcc & MethodCallingConvention.VarArg) != 0)
-                               ps.CallingConvention |= 0x5;
-
-                       int paramCount = parameters != null ? parameters.Count : 0;
-
-                       ps.ParamCount = paramCount;
-                       ps.Parameters = GetParametersSig (parameters);
-                       ps.CustomMods = GetCustomMods (prop.PropertyType);
-                       ps.Type = GetSigType (prop.PropertyType);
-
-                       return ps;
-               }
-
-               public TypeSpec GetTypeSpecSig (TypeReference type)
-               {
-                       TypeSpec ts = new TypeSpec ();
-                       ts.CustomMods = GetCustomMods (type);
-                       ts.Type = GetSigType (type);
-                       return ts;
-               }
-
-               public MethodSpec GetMethodSpecSig (GenericInstanceMethod gim)
-               {
-                       GenericInstSignature gis = new GenericInstSignature ();
-                       gis.Arity = gim.GenericArguments.Count;
-                       gis.Types = new GenericArg [gis.Arity];
-                       for (int i = 0; i < gis.Arity; i++)
-                               gis.Types [i] = GetGenericArgSig (gim.GenericArguments [i]);
-
-                       return new MethodSpec (gis);
-               }
-
-               static string GetObjectTypeName (object o)
-               {
-                       Type t = o.GetType ();
-                       return string.Concat (t.Namespace, ".", t.Name);
-               }
-
-               static CustomAttrib.Elem CreateElem (TypeReference type, object value)
-               {
-                       CustomAttrib.Elem elem = new CustomAttrib.Elem ();
-                       elem.Value = value;
-                       elem.ElemType = type;
-                       elem.FieldOrPropType = GetCorrespondingType (type.FullName);
-
-                       switch (elem.FieldOrPropType) {
-                       case ElementType.Boolean :
-                       case ElementType.Char :
-                       case ElementType.R4 :
-                       case ElementType.R8 :
-                       case ElementType.I1 :
-                       case ElementType.I2 :
-                       case ElementType.I4 :
-                       case ElementType.I8 :
-                       case ElementType.U1 :
-                       case ElementType.U2 :
-                       case ElementType.U4 :
-                       case ElementType.U8 :
-                               elem.Simple = true;
-                               break;
-                       case ElementType.String:
-                               elem.String = true;
-                               break;
-                       case ElementType.Type:
-                               elem.Type = true;
-                               break;
-                       case ElementType.Object:
-                               elem.BoxedValueType = true;
-                               if (value == null)
-                                       elem.FieldOrPropType = ElementType.String;
-                               else
-                                       elem.FieldOrPropType = GetCorrespondingType (
-                                               GetObjectTypeName (value));
-                               break;
-                       }
-
-                       return elem;
-               }
-
-               static CustomAttrib.FixedArg CreateFixedArg (TypeReference type, object value)
-               {
-                       CustomAttrib.FixedArg fa = new CustomAttrib.FixedArg ();
-                       if (value is object []) {
-                               fa.SzArray = true;
-                               object [] values = value as object [];
-                               TypeReference obj = ((ArrayType) type).ElementType;
-                               fa.NumElem = (uint) values.Length;
-                               fa.Elems = new CustomAttrib.Elem [values.Length];
-                               for (int i = 0; i < values.Length; i++)
-                                       fa.Elems [i] = CreateElem (obj, values [i]);
-                       } else {
-                               fa.Elems = new CustomAttrib.Elem [1];
-                               fa.Elems [0] = CreateElem (type, value);
-                       }
-
-                       return fa;
-               }
-
-               static CustomAttrib.NamedArg CreateNamedArg (TypeReference type, string name,
-                       object value, bool field)
-               {
-                       CustomAttrib.NamedArg na = new CustomAttrib.NamedArg ();
-                       na.Field = field;
-                       na.Property = !field;
-
-                       na.FieldOrPropName = name;
-                       na.FieldOrPropType = GetCorrespondingType (type.FullName);
-                       na.FixedArg = CreateFixedArg (type, value);
-
-                       return na;
-               }
-
-               public static CustomAttrib GetCustomAttributeSig (CustomAttribute ca)
-               {
-                       CustomAttrib cas = new CustomAttrib (ca.Constructor);
-                       cas.Prolog = CustomAttrib.StdProlog;
-
-                       cas.FixedArgs = new CustomAttrib.FixedArg [ca.Constructor.Parameters.Count];
-
-                       for (int i = 0; i < cas.FixedArgs.Length; i++)
-                               cas.FixedArgs [i] = CreateFixedArg (
-                                       ca.Constructor.Parameters [i].ParameterType, ca.ConstructorParameters [i]);
-
-                       int nn = ca.Fields.Count + ca.Properties.Count;
-                       cas.NumNamed = (ushort) nn;
-                       cas.NamedArgs = new CustomAttrib.NamedArg [nn];
-
-                       if (cas.NamedArgs.Length > 0) {
-                               int curs = 0;
-                               foreach (DictionaryEntry entry in ca.Fields) {
-                                       string field = (string) entry.Key;
-                                       cas.NamedArgs [curs++] = CreateNamedArg (
-                                               ca.GetFieldType (field), field, entry.Value, true);
-                               }
-
-                               foreach (DictionaryEntry entry in ca.Properties) {
-                                       string property = (string) entry.Key;
-                                       cas.NamedArgs [curs++] = CreateNamedArg (
-                                               ca.GetPropertyType (property), property, entry.Value, false);
-                               }
-                       }
-
-                       return cas;
-               }
-
-               static MarshalSig GetMarshalSig (MarshalSpec mSpec)
-               {
-                       MarshalSig ms = new MarshalSig (mSpec.NativeIntrinsic);
-
-                       if (mSpec is ArrayMarshalSpec) {
-                               ArrayMarshalSpec amd = mSpec as ArrayMarshalSpec;
-                               MarshalSig.Array ar = new MarshalSig.Array ();
-                               ar.ArrayElemType = amd.ElemType;
-                               ar.NumElem = amd.NumElem;
-                               ar.ParamNum = amd.ParamNum;
-                               ar.ElemMult = amd.ElemMult;
-                               ms.Spec = ar;
-                       } else if (mSpec is CustomMarshalerSpec) {
-                               CustomMarshalerSpec cmd = mSpec as CustomMarshalerSpec;
-                               MarshalSig.CustomMarshaler cm = new MarshalSig.CustomMarshaler ();
-                               cm.Guid = cmd.Guid.ToString ();
-                               cm.UnmanagedType = cmd.UnmanagedType;
-                               cm.ManagedType = cmd.ManagedType;
-                               cm.Cookie = cmd.Cookie;
-                               ms.Spec = cm;
-                       } else if (mSpec is FixedArraySpec) {
-                               FixedArraySpec fad = mSpec as FixedArraySpec;
-                               MarshalSig.FixedArray fa = new MarshalSig.FixedArray ();
-                               fa.ArrayElemType  = fad.ElemType;
-                               fa.NumElem = fad.NumElem;
-                               ms.Spec = fa;
-                       } else if (mSpec is FixedSysStringSpec) {
-                               MarshalSig.FixedSysString fss = new MarshalSig.FixedSysString ();
-                               fss.Size = (mSpec as FixedSysStringSpec).Size;
-                               ms.Spec = fss;
-                       } else if (mSpec is SafeArraySpec) {
-                               MarshalSig.SafeArray sa = new MarshalSig.SafeArray ();
-                               sa.ArrayElemType = (mSpec as SafeArraySpec).ElemType;
-                               ms.Spec = sa;
-                       }
-
-                       return ms;
-               }
-
-               public void WriteSymbols (ModuleDefinition module)
-               {
-                       if (!m_saveSymbols)
-                               return;
-
-                       if (m_asmOutput == null)
-                               m_asmOutput = module.Assembly.Name.Name + "." + (module.Assembly.Kind == AssemblyKind.Dll ? "dll" : "exe");
-
-                       if (m_symbolWriter == null)
-                               m_symbolWriter = SymbolStoreHelper.GetWriter (module, m_asmOutput);
-
-                       foreach (TypeDefinition type in module.Types) {
-                               if (type.HasMethods) {
-                                       foreach (MethodDefinition method in type.Methods)
-                                               WriteSymbols (method);
-                               }
-                               if (type.HasConstructors) {
-                                       foreach (MethodDefinition ctor in type.Constructors)
-                                               WriteSymbols (ctor);
-                               }
-                       }
-
-                       m_symbolWriter.Dispose ();
-               }
-
-               void WriteSymbols (MethodDefinition meth)
-               {
-                       if (!meth.HasBody)
-                               return;
-
-                       m_symbolWriter.Write (meth.Body);
-               }
-       }
-}
index 9790803e3000e838904e4fb77f694d877cfa57ea..0432ae78986e7cc71b57694f5df987ad8a3a3f0f 100644 (file)
@@ -1,10 +1,10 @@
 //
-// Resource.cs
+// ResourceType.cs
 //
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 namespace Mono.Cecil {
 
-       using System.Collections;
+       public enum ResourceType {
+               Linked,
+               Embedded,
+               AssemblyLinked,
+       }
 
-       public abstract class Resource : IAnnotationProvider, IReflectionStructureVisitable {
+       public abstract class Resource {
 
-               string m_name;
-               ManifestResourceAttributes m_attributes;
-               IDictionary m_annotations;
+               string name;
+               uint attributes;
 
                public string Name {
-                       get { return m_name; }
-                       set { m_name = value; }
+                       get { return name; }
+                       set { name = value; }
                }
 
-               public ManifestResourceAttributes Flags {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+               public ManifestResourceAttributes Attributes {
+                       get { return (ManifestResourceAttributes) attributes; }
+                       set { attributes = (uint) value; }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
-                       get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
-                       }
+               public abstract ResourceType ResourceType {
+                       get;
                }
 
                #region ManifestResourceAttributes
 
                public bool IsPublic {
-                       get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Public; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
-                                       m_attributes |= ManifestResourceAttributes.Public;
-                               } else
-                                       m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Public);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Public); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Public, value); }
                }
 
                public bool IsPrivate {
-                       get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
-                                       m_attributes |= ManifestResourceAttributes.Private;
-                               } else
-                                       m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Private);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Private); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Private, value); }
                }
 
                #endregion
 
                internal Resource (string name, ManifestResourceAttributes attributes)
                {
-                       m_name = name;
-                       m_attributes = attributes;
+                       this.name = name;
+                       this.attributes = (uint) attributes;
                }
-
-               public abstract void Accept (IReflectionStructureVisitor visitor);
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs
deleted file mode 100644 (file)
index 5a9696a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ResourceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Cil;
-
-       public sealed class ResourceCollection : CollectionBase, IReflectionStructureVisitable {
-
-               ModuleDefinition m_container;
-
-               public Resource this [int index] {
-                       get { return List [index] as Resource; }
-                       set { List [index] = value; }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public ResourceCollection (ModuleDefinition container)
-               {
-                       m_container = container;
-               }
-
-               public void Add (Resource value)
-               {
-                       List.Add (value);
-               }
-
-               public bool Contains (Resource value)
-               {
-                       return List.Contains (value);
-               }
-
-               public int IndexOf (Resource value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, Resource value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (Resource value)
-               {
-                       List.Remove (value);
-               }
-
-               protected override void OnValidate (object o)
-               {
-                       if (! (o is Resource))
-                               throw new ArgumentException ("Must be of type " + typeof (Resource).FullName);
-               }
-
-               public void Accept (IReflectionStructureVisitor visitor)
-               {
-                       visitor.VisitResourceCollection (this);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs
deleted file mode 100644 (file)
index b1ac330..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// SecurityAction.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       public enum SecurityAction : short {
-               Request = 1,
-               Demand = 2,
-               Assert = 3,
-               Deny = 4,
-               PermitOnly = 5,
-               LinkDemand = 6,
-               InheritDemand = 7,
-               RequestMinimum = 8,
-               RequestOptional = 9,
-               RequestRefuse = 10,
-               PreJitGrant = 11,
-               PreJitDeny = 12,
-               NonCasDemand = 13,
-               NonCasLinkDemand = 14,
-               NonCasInheritance = 15
-       }
-}
index aa7b93cf8366ba571a3d6b6d7135538b3fc67f21..4e57adae3e134e24f3f7fa212f83044b594ce09d 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       using System;
-       using System.Collections;
-       using System.Security;
+       public enum SecurityAction : ushort {
+               Request = 1,
+               Demand = 2,
+               Assert = 3,
+               Deny = 4,
+               PermitOnly = 5,
+               LinkDemand = 6,
+               InheritDemand = 7,
+               RequestMinimum = 8,
+               RequestOptional = 9,
+               RequestRefuse = 10,
+               PreJitGrant = 11,
+               PreJitDeny = 12,
+               NonCasDemand = 13,
+               NonCasLinkDemand = 14,
+               NonCasInheritance = 15
+       }
+
+       public interface ISecurityDeclarationProvider : IMetadataTokenProvider {
 
-       public sealed class SecurityDeclaration : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+               bool HasSecurityDeclarations { get; }
+               Collection<SecurityDeclaration> SecurityDeclarations { get; }
+       }
 
-               SecurityAction m_action;
-               SecurityDeclarationReader m_reader;
-               IDictionary m_annotations;
+       public sealed class SecurityAttribute : ICustomAttribute {
 
-#if !CF_1_0 && !CF_2_0
-               PermissionSet m_permSet;
-#endif
+               TypeReference attribute_type;
 
-               bool m_resolved;
-               byte [] m_blob;
+               internal Collection<CustomAttributeNamedArgument> fields;
+               internal Collection<CustomAttributeNamedArgument> properties;
 
-               public SecurityAction Action {
-                       get { return m_action; }
-                       set { m_action = value; }
+               public TypeReference AttributeType {
+                       get { return attribute_type; }
+                       set { attribute_type = value; }
+               }
+
+               public bool HasFields {
+                       get { return !fields.IsNullOrEmpty (); }
                }
 
-#if !CF_1_0 && !CF_2_0
-               public PermissionSet PermissionSet {
-                       get { return m_permSet; }
-                       set { m_permSet = value; }
+               public Collection<CustomAttributeNamedArgument> Fields {
+                       get { return fields ?? (fields = new Collection<CustomAttributeNamedArgument> ()); }
                }
-#endif
 
-               public bool Resolved {
-                       get { return m_resolved; }
-                       set { m_resolved = value; }
+               public bool HasProperties {
+                       get { return !properties.IsNullOrEmpty (); }
+               }
+
+               public Collection<CustomAttributeNamedArgument> Properties {
+                       get { return properties ?? (properties = new Collection<CustomAttributeNamedArgument> ()); }
+               }
+
+               public SecurityAttribute (TypeReference attributeType)
+               {
+                       this.attribute_type = attributeType;
+               }
+       }
+
+       public sealed class SecurityDeclaration {
+
+               readonly internal uint signature;
+               readonly ModuleDefinition module;
+
+               internal bool resolved;
+               SecurityAction action;
+               internal Collection<SecurityAttribute> security_attributes;
+
+               public SecurityAction Action {
+                       get { return action; }
+                       set { action = value; }
                }
 
-               public byte [] Blob {
-                       get { return m_blob; }
-                       set { m_blob = value; }
+               public bool HasSecurityAttributes {
+                       get {
+                               Resolve ();
+
+                               return !security_attributes.IsNullOrEmpty ();
+                       }
                }
 
-               IDictionary IAnnotationProvider.Annotations {
+               public Collection<SecurityAttribute> SecurityAttributes {
                        get {
-                               if (m_annotations == null)
-                                       m_annotations = new Hashtable ();
-                               return m_annotations;
+                               Resolve ();
+
+                               return security_attributes ?? (security_attributes = new Collection<SecurityAttribute> ());
                        }
                }
 
-               public SecurityDeclaration (SecurityAction action)
-               {
-                       m_action = action;
+               internal bool HasImage {
+                       get { return module != null && module.HasImage; }
                }
 
-               internal SecurityDeclaration (SecurityAction action, SecurityDeclarationReader reader)
+               internal SecurityDeclaration (SecurityAction action, uint signature, ModuleDefinition module)
                {
-                       m_action = action;
-                       m_reader = reader;
+                       this.action = action;
+                       this.signature = signature;
+                       this.module = module;
                }
 
-               public SecurityDeclaration Clone ()
+               public SecurityDeclaration (SecurityAction action)
                {
-                       return Clone (this);
+                       this.action = action;
+                       this.resolved = true;
                }
 
-               internal static SecurityDeclaration Clone (SecurityDeclaration sec)
+               public byte [] GetBlob ()
                {
-                       SecurityDeclaration sd = new SecurityDeclaration (sec.Action);
-                       if (!sec.Resolved) {
-                               sd.Resolved = false;
-                               sd.Blob = sec.Blob;
-                               return sd;
-                       }
+                       if (!HasImage || signature == 0)
+                               throw new NotSupportedException ();
 
-#if !CF_1_0 && !CF_2_0
-            sd.PermissionSet = sec.PermissionSet.Copy ();
-#endif
-                       return sd;
+                       return module.Read (this, (declaration, reader) => reader.ReadSecurityDeclarationBlob (declaration.signature)); ;
                }
 
-               public bool Resolve ()
+               void Resolve ()
                {
-                       if (m_resolved)
-                               return true;
+                       if (resolved || !HasImage)
+                               return;
 
-                       if (m_reader == null)
-                               return false;
+                       module.Read (this, (declaration, reader) => {
+                               reader.ReadSecurityDeclarationSignature (declaration);
+                               return this;
+                       });
 
-                       SecurityDeclaration clone = m_reader.FromByteArray (m_action, m_blob, true);
-                       if (!clone.Resolved)
-                               return false;
+                       resolved = true;
+               }
+       }
 
-                       m_action = clone.Action;
-#if !CF_1_0 && !CF_2_0
-                       m_permSet = clone.PermissionSet.Copy ();
-#endif
-                       m_resolved = true;
+       static partial class Mixin {
 
-                       return true;
+               public static bool GetHasSecurityDeclarations (
+                       this ISecurityDeclarationProvider self,
+                       ModuleDefinition module)
+               {
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.HasSecurityDeclarations (provider))
+                               : false;
                }
 
-               public void Accept (IReflectionVisitor visitor)
+               public static Collection<SecurityDeclaration> GetSecurityDeclarations (
+                       this ISecurityDeclarationProvider self,
+                       ModuleDefinition module)
                {
-                       visitor.VisitSecurityDeclaration (this);
+                       return module.HasImage ()
+                               ? module.Read (self, (provider, reader) => reader.ReadSecurityDeclarations (provider))
+                               : new Collection<SecurityDeclaration> ();
                }
        }
 }
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs
deleted file mode 100644 (file)
index a5fa166..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-// SecurityDeclarationCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       public sealed class SecurityDeclarationCollection : IReflectionVisitable, IEnumerable {
-
-               IDictionary m_items;
-               IHasSecurity m_container;
-
-               public SecurityDeclaration this [int index] {
-                       get { return m_items [index] as SecurityDeclaration; }
-                       set { m_items [index] = value; }
-               }
-
-               public SecurityDeclaration this [SecurityAction action] {
-                       get { return m_items [action] as SecurityDeclaration; }
-                       set { m_items [action] = value; }
-               }
-
-               public IHasSecurity Container {
-                       get { return m_container; }
-               }
-
-               public int Count {
-                       get { return m_items.Count; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               public SecurityDeclarationCollection (IHasSecurity container)
-               {
-                       m_container = container;
-                       m_items = new Hashtable ();
-               }
-
-               public void Add (SecurityDeclaration value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       // Each action can only be added once so...
-                       SecurityDeclaration current = (SecurityDeclaration) m_items[value.Action];
-                       if (current != null) {
-                               // ... further additions are transformed into unions
-#if !CF_1_0 && !CF_2_0
-                current.PermissionSet = current.PermissionSet.Union (value.PermissionSet);
-#endif
-                       } else {
-                               m_items.Add (value.Action, value);
-                               SetHasSecurity (true);
-                       }
-               }
-
-               public void Clear ()
-               {
-                       m_items.Clear ();
-                       SetHasSecurity (false);
-               }
-
-               public bool Contains (SecurityAction action)
-               {
-                       return (m_items [action] != null);
-               }
-
-               public bool Contains (SecurityDeclaration value)
-               {
-                       if (value == null)
-                               return (m_items.Count == 0);
-
-                       SecurityDeclaration item = (SecurityDeclaration) m_items[value.Action];
-                       if (item == null)
-                               return false;
-
-#if !CF_1_0 && !CF_2_0
-                       return value.PermissionSet.IsSubsetOf (item.PermissionSet);
-#else
-            // XXX For CF, this concept does not exist--so always be true
-            return true;
-#endif
-               }
-
-               public void Remove (SecurityAction action)
-               {
-                       m_items.Remove (action);
-                       SetHasSecurity (this.Count > 0);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       m_items.Values.CopyTo (ary, index);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return m_items.Values.GetEnumerator ();
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitSecurityDeclarationCollection (this);
-               }
-
-               private void SetHasSecurity (bool value)
-               {
-                       TypeDefinition td = (m_container as TypeDefinition);
-                       if (td != null) {
-                               if (value)
-                                       td.Attributes |= TypeAttributes.HasSecurity;
-                               else
-                                       td.Attributes &= ~TypeAttributes.HasSecurity;
-                               return;
-                       }
-                       MethodDefinition md = (m_container as MethodDefinition);
-                       if (md != null) {
-                               if (value)
-                                       md.Attributes |= MethodAttributes.HasSecurity;
-                               else
-                                       md.Attributes &= ~MethodAttributes.HasSecurity;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationReader.cs
deleted file mode 100644 (file)
index 77a0cb9..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// SecurityDeclarationReader.cs
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.IO;
-       using System.Reflection;
-       using System.Security;
-       using SSP = System.Security.Permissions;
-       using System.Text;
-
-       using Mono.Cecil.Metadata;
-       using Mono.Cecil.Signatures;
-       using Mono.Xml;
-
-       internal sealed class SecurityDeclarationReader {
-
-               private SecurityParser m_parser;
-               private SignatureReader sr;
-
-               public SecurityDeclarationReader (MetadataRoot root, ReflectionReader reader)
-               {
-                       sr = new SignatureReader (root, reader);
-               }
-
-               public SecurityParser Parser {
-                       get {
-                               if (m_parser == null)
-                                       m_parser = new SecurityParser ();
-                               return m_parser;
-                       }
-               }
-
-               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
-               {
-                       return FromByteArray (action, declaration, false);
-               }
-
-               static bool IsEmptyDeclaration (byte [] declaration)
-               {
-                       return declaration == null || declaration.Length == 0 ||
-                               (declaration.Length == 1 && declaration [0] == 0);
-               }
-
-               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration, bool resolve)
-               {
-                       SecurityDeclaration dec = new SecurityDeclaration (action, this);
-#if !CF_1_0 && !CF_2_0
-                       dec.PermissionSet = new PermissionSet (SSP.PermissionState.None);
-
-                       if (IsEmptyDeclaration (declaration))
-                               return dec;
-
-                       if (declaration[0] == 0x2e) {
-                               // new binary format introduced in 2.0
-                               int pos = 1;
-                               int start;
-                               int numattr = Utilities.ReadCompressedInteger (declaration, pos, out start);
-                               if (numattr == 0)
-                                       return dec;
-
-                               BinaryReader br = new BinaryReader (new MemoryStream (declaration));
-                               for (int i = 0; i < numattr; i++) {
-                                       pos = start;
-                                       SSP.SecurityAttribute sa = CreateSecurityAttribute (action, br, declaration, pos, out start, resolve);
-                                       if (sa == null) {
-                                               dec.Resolved = false;
-                                               dec.Blob = declaration;
-                                               return dec;
-                                       }
-
-                                       try {
-                                               IPermission p = sa.CreatePermission ();
-                                               dec.PermissionSet.AddPermission (p);
-                                       } catch {
-                                               dec.Resolved = false;
-                                               dec.Blob = declaration;
-                                               return dec;
-                                       }
-                               }
-
-                               dec.Resolved = true;
-                       } else {
-                               Parser.LoadXml (Encoding.Unicode.GetString (declaration));
-                               try {
-                                       dec.PermissionSet.FromXml (Parser.ToXml ());
-                                       dec.PermissionSet.ToXml ();
-                                       dec.Resolved = true;
-                               } catch {
-                                       dec.Resolved = false;
-                                       dec.Blob = declaration;
-                               }
-                       }
-#endif
-                       return dec;
-               }
-
-#if !CF_1_0 && !CF_2_0
-               private SSP.SecurityAttribute CreateSecurityAttribute (SecurityAction action, BinaryReader br, byte [] permset, int pos, out int start, bool resolve)
-               {
-                       string cname = SignatureReader.ReadUTF8String (permset, pos, out start);
-                       Type secattr = null;
-
-                       // note: the SecurityAction parameter isn't important to generate the XML
-                       SSP.SecurityAttribute sa = null;
-                       try {
-                               secattr = Type.GetType (cname, false);
-                               if (secattr == null)
-                                       return null;
-
-                               sa = Activator.CreateInstance (secattr, new object [] {(SSP.SecurityAction) action}) as SSP.SecurityAttribute;
-                       } catch {}
-
-                       if (sa == null)
-                               return null;
-
-                       // encoded length of all parameters (we don't need the value - except the updated pos)
-                       Utilities.ReadCompressedInteger (permset, start, out pos);
-                       int numparams = Utilities.ReadCompressedInteger (permset, pos, out start);
-                       if (numparams == 0)
-                               return sa;
-
-                       br.BaseStream.Position = start;
-                       for (int j = 0; j < numparams; j++) {
-                               bool read = true;
-                               CustomAttrib.NamedArg na = sr.ReadNamedArg (permset, br, ref read, resolve);
-                               if (!read)
-                                       return null;
-
-                               if (na.Field) {
-                                       FieldInfo fi = secattr.GetField (na.FieldOrPropName);
-                                       fi.SetValue (sa, na.FixedArg.Elems[0].Value);
-                               } else if (na.Property) {
-                                       PropertyInfo pi = secattr.GetProperty (na.FieldOrPropName);
-                                       pi.SetValue (sa, na.FixedArg.Elems[0].Value, null);
-                               }
-                       }
-
-                       start = (int) br.BaseStream.Position;
-
-                       return sa;
-               }
-#endif
-       }
-}
index 1aed1609a33beb2acaacb09417892af07dd8e6d7..d0d5a1d1ea8fc456856d3eaa06623e2d5b6b576e 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
        public sealed class SentinelType : TypeSpecification {
 
-               public SentinelType (TypeReference elementType) : base (elementType)
+               public override bool IsValueType {
+                       get { return false; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool IsSentinel {
+                       get { return true; }
+               }
+
+               public SentinelType (TypeReference type)
+                       : base (type)
                {
+                       Mixin.CheckType (type);
+                       this.etype = MD.ElementType.Sentinel;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/StructureReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/StructureReader.cs
deleted file mode 100644 (file)
index 6085cdb..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-//
-// StructureReader.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.IO;
-
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Metadata;
-
-       internal sealed class StructureReader : BaseStructureVisitor {
-
-               ImageReader m_ir;
-               Image m_img;
-               bool m_manifestOnly;
-               AssemblyDefinition m_asmDef;
-               ModuleDefinition m_module;
-               MetadataStreamCollection m_streams;
-               TablesHeap m_tHeap;
-               MetadataTableReader m_tableReader;
-
-               public bool ManifestOnly {
-                       get { return m_manifestOnly; }
-               }
-
-               public ImageReader ImageReader {
-                       get { return m_ir; }
-               }
-
-               public Image Image {
-                       get { return m_img; }
-               }
-
-               public StructureReader (ImageReader ir)
-               {
-                       if (ir.Image.CLIHeader == null)
-                               throw new ImageFormatException ("The image is not a managed assembly");
-
-                       m_ir = ir;
-                       m_img = ir.Image;
-                       m_streams = m_img.MetadataRoot.Streams;
-                       m_tHeap = m_streams.TablesHeap;
-                       m_tableReader = ir.MetadataReader.TableReader;
-               }
-
-               public StructureReader (ImageReader ir, bool manifestOnly) : this (ir)
-               {
-                       m_manifestOnly = manifestOnly;
-               }
-
-               byte [] ReadBlob (uint pointer)
-               {
-                       if (pointer == 0)
-                               return new byte [0];
-
-                       return m_streams.BlobHeap.Read (pointer);
-               }
-
-               string ReadString (uint pointer)
-               {
-                       return m_streams.StringsHeap [pointer];
-               }
-
-               public override void VisitAssemblyDefinition (AssemblyDefinition asm)
-               {
-                       if (!m_tHeap.HasTable (AssemblyTable.RId))
-                               throw new ReflectionException ("No assembly manifest");
-
-                       asm.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
-                       m_asmDef = asm;
-
-                       switch (m_img.MetadataRoot.Header.Version) {
-                       case "v1.0.3705" :
-                               asm.Runtime = TargetRuntime.NET_1_0;
-                               break;
-                       case "v1.1.4322" :
-                               asm.Runtime = TargetRuntime.NET_1_1;
-                               break;
-                       case "v2.0.50727":
-                               asm.Runtime = TargetRuntime.NET_2_0;
-                               break;
-                       case "v4.0.30319" :
-                               asm.Runtime = TargetRuntime.NET_4_0;
-                               break;
-                       }
-
-                       if ((m_img.PEFileHeader.Characteristics & ImageCharacteristics.Dll) != 0)
-                               asm.Kind = AssemblyKind.Dll;
-                       else if (m_img.PEOptionalHeader.NTSpecificFields.SubSystem == SubSystem.WindowsGui ||
-                               m_img.PEOptionalHeader.NTSpecificFields.SubSystem == SubSystem.WindowsCeGui)
-                               asm.Kind = AssemblyKind.Windows;
-                       else
-                               asm.Kind = AssemblyKind.Console;
-               }
-
-               public override void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
-               {
-                       AssemblyTable atable = m_tableReader.GetAssemblyTable ();
-                       AssemblyRow arow = atable [0];
-                       name.Name = ReadString (arow.Name);
-                       name.Flags = arow.Flags;
-                       name.PublicKey = ReadBlob (arow.PublicKey);
-
-                       name.Culture = ReadString (arow.Culture);
-                       name.Version = new Version (
-                               arow.MajorVersion, arow.MinorVersion,
-                               arow.BuildNumber, arow.RevisionNumber);
-                       name.HashAlgorithm = arow.HashAlgId;
-                       name.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
-               }
-
-               public override void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
-               {
-                       if (!m_tHeap.HasTable (AssemblyRefTable.RId))
-                               return;
-
-                       AssemblyRefTable arTable = m_tableReader.GetAssemblyRefTable ();
-                       for (int i = 0; i < arTable.Rows.Count; i++) {
-                               AssemblyRefRow arRow = arTable [i];
-                               AssemblyNameReference aname = new AssemblyNameReference (
-                                       ReadString (arRow.Name),
-                                       ReadString (arRow.Culture),
-                                       new Version (arRow.MajorVersion, arRow.MinorVersion,
-                                                                arRow.BuildNumber, arRow.RevisionNumber));
-                               aname.PublicKeyToken = ReadBlob (arRow.PublicKeyOrToken);
-                               aname.Hash = ReadBlob (arRow.HashValue);
-                               aname.Flags = arRow.Flags;
-                               aname.MetadataToken = new MetadataToken (TokenType.AssemblyRef, (uint) i + 1);
-                               names.Add (aname);
-                       }
-               }
-
-               public override void VisitResourceCollection (ResourceCollection resources)
-               {
-                       if (!m_tHeap.HasTable (ManifestResourceTable.RId))
-                               return;
-
-                       ManifestResourceTable mrTable = m_tableReader.GetManifestResourceTable ();
-                       FileTable fTable = m_tableReader.GetFileTable ();
-
-                       for (int i = 0; i < mrTable.Rows.Count; i++) {
-                               ManifestResourceRow mrRow = mrTable [i];
-                               if (mrRow.Implementation.RID == 0) {
-                                       EmbeddedResource eres = new EmbeddedResource (
-                                               ReadString (mrRow.Name), mrRow.Flags);
-
-                                       BinaryReader br = m_ir.MetadataReader.GetDataReader (
-                                               m_img.CLIHeader.Resources.VirtualAddress);
-                                       br.BaseStream.Position += mrRow.Offset;
-
-                                       eres.Data = br.ReadBytes (br.ReadInt32 ());
-
-                                       resources.Add (eres);
-                                       continue;
-                               }
-
-                               switch (mrRow.Implementation.TokenType) {
-                               case TokenType.File :
-                                       FileRow fRow = fTable [(int) mrRow.Implementation.RID - 1];
-                                       LinkedResource lres = new LinkedResource (
-                                               ReadString (mrRow.Name), mrRow.Flags,
-                                               ReadString (fRow.Name));
-                                       lres.Hash = ReadBlob (fRow.HashValue);
-                                       resources.Add (lres);
-                                       break;
-                               case TokenType.AssemblyRef :
-                                       AssemblyNameReference asm =
-                                               m_module.AssemblyReferences [(int) mrRow.Implementation.RID - 1];
-                                       AssemblyLinkedResource alr = new AssemblyLinkedResource (
-                                               ReadString (mrRow.Name),
-                                               mrRow.Flags, asm);
-                                       resources.Add (alr);
-                                       break;
-                               }
-                       }
-               }
-
-               public override void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
-               {
-                       ModuleTable mt = m_tableReader.GetModuleTable ();
-                       if (mt == null || mt.Rows.Count != 1)
-                               throw new ReflectionException ("Can not read main module");
-
-                       ModuleRow mr = mt [0];
-                       string name = ReadString (mr.Name);
-                       ModuleDefinition main = new ModuleDefinition (name, m_asmDef, this, true);
-                       main.Mvid = m_streams.GuidHeap [mr.Mvid];
-                       main.MetadataToken = new MetadataToken (TokenType.Module, 1);
-                       modules.Add (main);
-                       m_module = main;
-                       m_module.Accept (this);
-
-                       FileTable ftable = m_tableReader.GetFileTable ();
-                       if (ftable == null || ftable.Rows.Count == 0)
-                               return;
-
-                       foreach (FileRow frow in ftable.Rows) {
-                               if (frow.Flags != FileAttributes.ContainsMetaData)
-                                       continue;
-
-                               name = ReadString (frow.Name);
-                               FileInfo location = new FileInfo (
-                                       m_img.FileInformation != null ? Path.Combine (m_img.FileInformation.DirectoryName, name) : name);
-                               if (!File.Exists (location.FullName))
-                                       throw new FileNotFoundException ("Module not found : " + name);
-
-                               try {
-                                       ImageReader module = ImageReader.Read (location.FullName);
-                                       mt = module.Image.MetadataRoot.Streams.TablesHeap [ModuleTable.RId] as ModuleTable;
-                                       if (mt == null || mt.Rows.Count != 1)
-                                               throw new ReflectionException ("Can not read module : " + name);
-
-                                       mr = mt [0];
-                                       ModuleDefinition modext = new ModuleDefinition (name, m_asmDef,
-                                               new StructureReader (module, m_manifestOnly), false);
-                                       modext.Mvid = module.Image.MetadataRoot.Streams.GuidHeap [mr.Mvid];
-
-                                       modules.Add (modext);
-                                       modext.Accept (this);
-                               } catch (ReflectionException) {
-                                       throw;
-                               } catch (Exception e) {
-                                       throw new ReflectionException ("Can not read module : " + name, e);
-                               }
-                       }
-               }
-
-               public override void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
-               {
-                       if (!m_tHeap.HasTable (ModuleRefTable.RId))
-                               return;
-
-                       ModuleRefTable mrTable = m_tableReader.GetModuleRefTable ();
-                       for (int i = 0; i < mrTable.Rows.Count; i++) {
-                               ModuleRefRow mrRow = mrTable [i];
-                               ModuleReference mod = new ModuleReference (ReadString (mrRow.Name));
-                               mod.MetadataToken = MetadataToken.FromMetadataRow (TokenType.ModuleRef, i);
-                               modules.Add (mod);
-                       }
-               }
-
-               public override void TerminateAssemblyDefinition (AssemblyDefinition asm)
-               {
-                       if (m_manifestOnly)
-                               return;
-
-                       foreach (ModuleDefinition mod in asm.Modules)
-                               mod.Controller.Reader.VisitModuleDefinition (mod);
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/StructureWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/StructureWriter.cs
deleted file mode 100644 (file)
index b2a4330..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-//
-// StructureWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.IO;
-
-       using Mono.Cecil.Binary;
-       using Mono.Cecil.Metadata;
-
-       internal sealed class StructureWriter : BaseStructureVisitor {
-
-               MetadataWriter m_mdWriter;
-               MetadataTableWriter m_tableWriter;
-               MetadataRowWriter m_rowWriter;
-
-               AssemblyDefinition m_asm;
-               BinaryWriter m_binaryWriter;
-
-               public AssemblyDefinition Assembly {
-                       get { return m_asm; }
-               }
-
-               static void ResetImage (ModuleDefinition mod)
-               {
-                       Image ni = Image.CreateImage ();
-                       ni.Accept (new CopyImageVisitor (mod.Image));
-                       mod.Image = ni;
-               }
-
-               public StructureWriter (AssemblyDefinition asm, BinaryWriter writer)
-               {
-                       m_asm = asm;
-                       m_binaryWriter = writer;
-               }
-
-               public BinaryWriter GetWriter ()
-               {
-                       return m_binaryWriter;
-               }
-
-               public override void VisitAssemblyDefinition (AssemblyDefinition asm)
-               {
-                       if (asm.Kind != AssemblyKind.Dll && asm.EntryPoint == null)
-                               throw new ReflectionException ("Assembly does not have an entry point defined");
-
-                       if ((asm.MainModule.Image.CLIHeader.Flags & RuntimeImage.ILOnly) == 0)
-                               throw new NotSupportedException ("Can not write a mixed mode assembly");
-
-                       foreach (ModuleDefinition module in asm.Modules)
-                               if (module.Image.CLIHeader.Metadata.VirtualAddress != RVA.Zero)
-                                       ResetImage (module);
-
-                       asm.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
-                       ReflectionWriter rw = asm.MainModule.Controller.Writer;
-                       rw.StructureWriter = this;
-
-                       m_mdWriter = rw.MetadataWriter;
-                       m_tableWriter = rw.MetadataTableWriter;
-                       m_rowWriter = rw.MetadataRowWriter;
-
-                       if (!rw.SaveSymbols)
-                               return;
-
-                       FileStream fs = m_binaryWriter.BaseStream as FileStream;
-                       if (fs != null)
-                               rw.OutputFile = fs.Name;
-               }
-
-               public override void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
-               {
-                       AssemblyTable asmTable = m_tableWriter.GetAssemblyTable ();
-
-                       if (name.PublicKey != null && name.PublicKey.Length > 0)
-                               name.Flags |= AssemblyFlags.PublicKey;
-
-                       AssemblyRow asmRow = m_rowWriter.CreateAssemblyRow (
-                               name.HashAlgorithm,
-                               (ushort) name.Version.Major,
-                               (ushort) name.Version.Minor,
-                               (ushort) name.Version.Build,
-                               (ushort) name.Version.Revision,
-                               name.Flags,
-                               m_mdWriter.AddBlob (name.PublicKey),
-                               m_mdWriter.AddString (name.Name),
-                               m_mdWriter.AddString (name.Culture));
-
-                       asmTable.Rows.Add (asmRow);
-               }
-
-               public override void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection references)
-               {
-                       foreach (AssemblyNameReference name in references)
-                               VisitAssemblyNameReference (name);
-               }
-
-               public override void VisitAssemblyNameReference (AssemblyNameReference name)
-               {
-                       byte [] pkortoken;
-                       if (name.PublicKey != null && name.PublicKey.Length > 0)
-                               pkortoken = name.PublicKey;
-                       else if (name.PublicKeyToken != null && name.PublicKeyToken.Length > 0)
-                               pkortoken = name.PublicKeyToken;
-                       else
-                               pkortoken = new byte [0];
-
-                       AssemblyRefTable arTable = m_tableWriter.GetAssemblyRefTable ();
-                       AssemblyRefRow arRow = m_rowWriter.CreateAssemblyRefRow (
-                               (ushort) name.Version.Major,
-                               (ushort) name.Version.Minor,
-                               (ushort) name.Version.Build,
-                               (ushort) name.Version.Revision,
-                               name.Flags,
-                               m_mdWriter.AddBlob (pkortoken),
-                               m_mdWriter.AddString (name.Name),
-                               m_mdWriter.AddString (name.Culture),
-                               m_mdWriter.AddBlob (name.Hash));
-
-                       arTable.Rows.Add (arRow);
-               }
-
-               public override void VisitResourceCollection (ResourceCollection resources)
-               {
-                       VisitCollection (resources);
-               }
-
-               public override void VisitEmbeddedResource (EmbeddedResource res)
-               {
-                       AddManifestResource (
-                               m_mdWriter.AddResource (res.Data),
-                               res.Name, res.Flags,
-                               new MetadataToken (TokenType.ManifestResource, 0));
-               }
-
-               public override void VisitLinkedResource (LinkedResource res)
-               {
-                       FileTable fTable = m_tableWriter.GetFileTable ();
-                       FileRow fRow = m_rowWriter.CreateFileRow (
-                               Mono.Cecil.FileAttributes.ContainsNoMetaData,
-                               m_mdWriter.AddString (res.File),
-                               m_mdWriter.AddBlob (res.Hash));
-
-                       fTable.Rows.Add (fRow);
-
-                       AddManifestResource (
-                               0, res.Name, res.Flags,
-                               new MetadataToken (TokenType.File, (uint) fTable.Rows.IndexOf (fRow) + 1));
-               }
-
-               public override void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
-               {
-                       MetadataToken impl = new MetadataToken (TokenType.AssemblyRef,
-                               (uint) m_asm.MainModule.AssemblyReferences.IndexOf (res.Assembly) + 1);
-
-                       AddManifestResource (0, res.Name, res.Flags, impl);
-               }
-
-               void AddManifestResource (uint offset, string name, ManifestResourceAttributes flags, MetadataToken impl)
-               {
-                       ManifestResourceTable mrTable = m_tableWriter.GetManifestResourceTable ();
-                       ManifestResourceRow mrRow = m_rowWriter.CreateManifestResourceRow (
-                               offset,
-                               flags,
-                               m_mdWriter.AddString (name),
-                               impl);
-
-                       mrTable.Rows.Add (mrRow);
-               }
-
-               public override void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
-               {
-                       VisitCollection (modules);
-               }
-
-               public override void VisitModuleDefinition (ModuleDefinition module)
-               {
-                       if (module.Main) {
-                               ModuleTable modTable = m_tableWriter.GetModuleTable ();
-                               ModuleRow modRow = m_rowWriter.CreateModuleRow (
-                                       0,
-                                       m_mdWriter.AddString (module.Name),
-                                       m_mdWriter.AddGuid (module.Mvid),
-                                       0,
-                                       0);
-
-                               modTable.Rows.Add (modRow);
-                               module.MetadataToken = new MetadataToken (TokenType.Module, 1);
-                       } else {
-                               // multiple module assemblies
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               public override void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
-               {
-                       VisitCollection (modules);
-               }
-
-               public override void VisitModuleReference (ModuleReference module)
-               {
-                       ModuleRefTable mrTable = m_tableWriter.GetModuleRefTable ();
-                       ModuleRefRow mrRow = m_rowWriter.CreateModuleRefRow (
-                               m_mdWriter.AddString (module.Name));
-
-                       mrTable.Rows.Add (mrRow);
-               }
-
-               public override void TerminateAssemblyDefinition (AssemblyDefinition asm)
-               {
-                       foreach (ModuleDefinition mod in asm.Modules) {
-                               ReflectionWriter writer = mod.Controller.Writer;
-                               writer.VisitModuleDefinition (mod);
-                               writer.VisitTypeReferenceCollection (mod.TypeReferences);
-                               writer.VisitTypeDefinitionCollection (mod.Types);
-                               writer.VisitMemberReferenceCollection (mod.MemberReferences);
-                               writer.CompleteTypeDefinitions ();
-
-                               writer.TerminateModuleDefinition (mod);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs
deleted file mode 100644 (file)
index 81bbffc..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-//
-// TableComparers.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-
-       using Mono.Cecil.Metadata;
-
-       sealed class TableComparers {
-
-               public sealed class TypeDef : IComparer {
-
-                       public static readonly TypeDef Instance = new TypeDef ();
-
-                       public int Compare (object x, object y)
-                       {
-                               TypeDefinition a = x as TypeDefinition;
-                               TypeDefinition b = y as TypeDefinition;
-
-                               if (a == null || b == null)
-                                       throw new ReflectionException ("TypeDefComparer can only compare TypeDefinition");
-
-                               if (a.Name == Constants.ModuleType && b.Name == Constants.ModuleType)
-                                       return 0;
-                               else if (a.Name == Constants.ModuleType)
-                                       return -1;
-                               else if (b.Name == Constants.ModuleType)
-                                       return 1;
-
-                               return Comparer.Default.Compare (a.FullName, b.FullName);
-                       }
-               }
-
-               public sealed class TypeRef : IComparer {
-
-                       public static readonly TypeRef Instance = new TypeRef ();
-
-                       public int Compare (object x, object y)
-                       {
-                               TypeReference a = x as TypeReference;
-                               TypeReference b = y as TypeReference;
-
-                               if (a == null || b == null)
-                                       throw new ReflectionException ("TypeRefComparer can only compare TypeReference");
-
-                               if (b.DeclaringType == a)
-                                       return -1;
-                               else if (a.DeclaringType == b)
-                                       return 1;
-
-                               return Comparer.Default.Compare (a.FullName, b.FullName);
-                       }
-               }
-
-               public sealed class NestedClass : IComparer {
-
-                       public static readonly NestedClass Instance = new NestedClass ();
-
-                       public int Compare (object x, object y)
-                       {
-                               NestedClassRow a = x as NestedClassRow;
-                               NestedClassRow b = y as NestedClassRow;
-
-                               return Comparer.Default.Compare (a.NestedClass, b.NestedClass);
-                       }
-               }
-
-               public sealed class Constant : IComparer {
-
-                       public static readonly Constant Instance = new Constant ();
-
-                       public int Compare (object x, object y)
-                       {
-                               ConstantRow a = x as ConstantRow;
-                               ConstantRow b = y as ConstantRow;
-
-                               return Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.HasConstant, a.Parent),
-                                       Utilities.CompressMetadataToken (CodedIndex.HasConstant, b.Parent));
-                       }
-
-               }
-
-               public sealed class InterfaceImpl : IComparer {
-
-                       public static readonly InterfaceImpl Instance = new InterfaceImpl ();
-
-                       public int Compare (object x, object y)
-                       {
-                               InterfaceImplRow a = x as InterfaceImplRow;
-                               InterfaceImplRow b = y as InterfaceImplRow;
-
-                               int klass = Comparer.Default.Compare (a.Class, b.Class);
-
-                               if (klass == 0)
-                                       return Comparer.Default.Compare (
-                                               Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, a.Interface),
-                                               Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, b.Interface));
-
-                               return klass;
-                       }
-               }
-
-               public sealed class MethodSem : IComparer {
-
-                       public static readonly MethodSem Instance = new MethodSem ();
-
-                       public int Compare (object x, object y)
-                       {
-                               MethodSemanticsRow a = x as MethodSemanticsRow;
-                               MethodSemanticsRow b = y as MethodSemanticsRow;
-
-                               return Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.HasSemantics, a.Association),
-                                       Utilities.CompressMetadataToken (CodedIndex.HasSemantics, b.Association));
-                       }
-               }
-
-               public sealed class CustomAttribute : IComparer {
-
-                       public static readonly CustomAttribute Instance = new CustomAttribute ();
-
-                       public int Compare (object x, object y)
-                       {
-                               CustomAttributeRow a = x as CustomAttributeRow;
-                               CustomAttributeRow b = y as CustomAttributeRow;
-
-                               return Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, a.Parent),
-                                       Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, b.Parent));
-                       }
-               }
-
-               public sealed class SecurityDeclaration : IComparer {
-
-                       public static readonly SecurityDeclaration Instance = new SecurityDeclaration ();
-
-                       public int Compare (object x, object y)
-                       {
-                               DeclSecurityRow a = x as DeclSecurityRow;
-                               DeclSecurityRow b = y as DeclSecurityRow;
-
-                               return Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, a.Parent),
-                                       Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, b.Parent));
-                       }
-               }
-
-               public sealed class Override : IComparer {
-
-                       public static readonly Override Instance = new Override ();
-
-                       public int Compare (object x, object y)
-                       {
-                               MethodImplRow a = x as MethodImplRow;
-                               MethodImplRow b = y as MethodImplRow;
-
-                               return Comparer.Default.Compare (a.Class, b.Class);
-                       }
-               }
-
-               public sealed class PInvoke : IComparer {
-
-                       public static readonly PInvoke Instance = new PInvoke ();
-
-                       public int Compare (object x, object y)
-                       {
-                               ImplMapRow a = x as ImplMapRow;
-                               ImplMapRow b = y as ImplMapRow;
-
-                               return Comparer.Default.Compare (a.MemberForwarded.RID, b.MemberForwarded.RID);
-                       }
-               }
-
-               public sealed class FieldRVA : IComparer {
-
-                       public static readonly FieldRVA Instance = new FieldRVA ();
-
-                       public int Compare (object x, object y)
-                       {
-                               FieldRVARow a = x as FieldRVARow;
-                               FieldRVARow b = y as FieldRVARow;
-
-                               return Comparer.Default.Compare (a.Field, b.Field);
-                       }
-               }
-
-               public sealed class FieldLayout : IComparer {
-
-                       public static readonly FieldLayout Instance = new FieldLayout ();
-
-                       public int Compare (object x, object y)
-                       {
-                               FieldLayoutRow a = x as FieldLayoutRow;
-                               FieldLayoutRow b = y as FieldLayoutRow;
-
-                               return Comparer.Default.Compare (a.Field, b.Field);
-                       }
-               }
-
-               public sealed class FieldMarshal : IComparer {
-
-                       public static readonly FieldMarshal Instance = new FieldMarshal ();
-
-                       public int Compare (object x, object y)
-                       {
-                               FieldMarshalRow a = x as FieldMarshalRow;
-                               FieldMarshalRow b = y as FieldMarshalRow;
-
-                               return Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, a.Parent),
-                                       Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, b.Parent));
-                       }
-               }
-
-               public sealed class TypeLayout : IComparer {
-
-                       public static readonly TypeLayout Instance = new TypeLayout ();
-
-                       public int Compare (object x, object y)
-                       {
-                               ClassLayoutRow a = x as ClassLayoutRow;
-                               ClassLayoutRow b = y as ClassLayoutRow;
-
-                               return Comparer.Default.Compare (a.Parent, b.Parent);
-                       }
-               }
-
-               public sealed class GenericParam : IComparer {
-
-                       public static readonly GenericParam Instance = new GenericParam ();
-
-                       public int Compare (object x, object y)
-                       {
-                               GenericParameter a = x as GenericParameter;
-                               GenericParameter b = y as GenericParameter;
-
-                               int token = Comparer.Default.Compare (
-                                       Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, a.Owner.MetadataToken),
-                                       Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, b.Owner.MetadataToken));
-
-                               if (token == 0)
-                                       return Comparer.Default.Compare (a.Position, b.Position);
-
-                               return token;
-                       }
-               }
-       }
-}
index d7856f5b2f220b2efcea736f6952f6cc0b83e68d..9931fc6113d472d42365154c8f4126056d2134a1 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,9 +29,9 @@
 namespace Mono.Cecil {
 
        public enum TargetRuntime {
-               NET_1_0,
-               NET_1_1,
-               NET_2_0,
-               NET_4_0,
+               Net_1_0,
+               Net_1_1,
+               Net_2_0,
+               Net_4_0,
        }
 }
index 2e1ef50b2f4a8bf5add59a7e26aeb6ab12054fe3..6e263e8e64c6695f362a417efde47a1b38d025fd 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-       using System;
+namespace Mono.Cecil {
 
        [Flags]
        public enum TypeAttributes : uint {
index 36943062968aa974ff8ba5b3dd32d25d83d116f8..c83531a0567a5adf8ff038b2733b1f948cbc9541 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       public sealed class TypeDefinition : TypeReference, IMemberDefinition, IHasSecurity {
+       public sealed class TypeDefinition : TypeReference, IMemberDefinition, ISecurityDeclarationProvider {
 
-               TypeAttributes m_attributes;
-               TypeReference m_baseType;
+               uint attributes;
+               TypeReference base_type;
+               internal Range fields_range;
+               internal Range methods_range;
 
-               bool m_hasInfo;
-               ushort m_packingSize;
-               uint m_classSize;
+               short packing_size = Mixin.NotResolvedMarker;
+               int class_size = Mixin.NotResolvedMarker;
 
-               InterfaceCollection m_interfaces;
-               NestedTypeCollection m_nestedTypes;
-               MethodDefinitionCollection m_methods;
-               ConstructorCollection m_ctors;
-               FieldDefinitionCollection m_fields;
-               EventDefinitionCollection m_events;
-               PropertyDefinitionCollection m_properties;
-               SecurityDeclarationCollection m_secDecls;
+               Collection<TypeReference> interfaces;
+               Collection<TypeDefinition> nested_types;
+               Collection<MethodDefinition> methods;
+               Collection<FieldDefinition> fields;
+               Collection<EventDefinition> events;
+               Collection<PropertyDefinition> properties;
+               Collection<CustomAttribute> custom_attributes;
+               Collection<SecurityDeclaration> security_declarations;
 
                public TypeAttributes Attributes {
-                       get { return m_attributes; }
-                       set { m_attributes = value; }
+                       get { return (TypeAttributes) attributes; }
+                       set { attributes = (uint) value; }
                }
 
                public TypeReference BaseType {
-                       get { return m_baseType; }
-                       set { m_baseType = value; }
+                       get { return base_type; }
+                       set { base_type = value; }
+               }
+
+               void ResolveLayout ()
+               {
+                       if (packing_size != Mixin.NotResolvedMarker || class_size != Mixin.NotResolvedMarker)
+                               return;
+
+                       if (!HasImage) {
+                               packing_size = Mixin.NoDataMarker;
+                               class_size = Mixin.NoDataMarker;
+                               return;
+                       }
+
+                       var row = Module.Read (this, (type, reader) => reader.ReadTypeLayout (type));
+
+                       packing_size = row.Col1;
+                       class_size = row.Col2;
                }
 
                public bool HasLayoutInfo {
-                       get { return m_hasInfo; }
+                       get {
+                               if (packing_size >= 0 || class_size >= 0)
+                                       return true;
+
+                               ResolveLayout ();
+
+                               return packing_size >= 0 || class_size >= 0;
+                       }
                }
 
-               public ushort PackingSize {
-                       get { return m_packingSize; }
-                       set {
-                               m_hasInfo = true;
-                               m_packingSize = value;
+               public short PackingSize {
+                       get {
+                               if (packing_size >= 0)
+                                       return packing_size;
+
+                               ResolveLayout ();
+
+                               return packing_size >= 0 ? packing_size : (short) -1;
                        }
+                       set { packing_size = value; }
                }
 
-               public uint ClassSize {
-                       get { return m_classSize; }
-                       set {
-                               m_hasInfo = true;
-                               m_classSize = value;
+               public int ClassSize {
+                       get {
+                               if (class_size >= 0)
+                                       return class_size;
+
+                               ResolveLayout ();
+
+                               return class_size >= 0 ? class_size : -1;
                        }
+                       set { class_size = value; }
                }
 
                public bool HasInterfaces {
-                       get { return (m_interfaces == null) ? false : (m_interfaces.Count > 0); }
+                       get {
+                               if (interfaces != null)
+                                       return interfaces.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (type, reader) => reader.HasInterfaces (type));
+
+                               return false;
+                       }
                }
 
-               public InterfaceCollection Interfaces {
+               public Collection<TypeReference> Interfaces {
                        get {
-                               if (m_interfaces == null)
-                                       m_interfaces = new InterfaceCollection (this);
+                               if (interfaces != null)
+                                       return interfaces;
 
-                               return m_interfaces;
+                               if (HasImage)
+                                       return interfaces = Module.Read (this, (type, reader) => reader.ReadInterfaces (type));
+
+                               return interfaces = new Collection<TypeReference> ();
                        }
                }
 
                public bool HasNestedTypes {
-                       get { return (m_nestedTypes == null) ? false : (m_nestedTypes.Count > 0); }
+                       get {
+                               if (nested_types != null)
+                                       return nested_types.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (type, reader) => reader.HasNestedTypes (type));
+
+                               return false;
+                       }
                }
 
-               public NestedTypeCollection NestedTypes {
+               public Collection<TypeDefinition> NestedTypes {
                        get {
-                               if (m_nestedTypes == null)
-                                       m_nestedTypes = new NestedTypeCollection (this);
+                               if (nested_types != null)
+                                       return nested_types;
 
-                               return m_nestedTypes;
+                               if (HasImage)
+                                       return nested_types = Module.Read (this, (type, reader) => reader.ReadNestedTypes (type));
+
+                               return nested_types = new MemberDefinitionCollection<TypeDefinition> (this);
                        }
                }
 
-               public bool HasMethods {
-                       get { return (m_methods == null) ? false : (m_methods.Count > 0); }
+               internal new bool HasImage {
+                       get { return Module != null && Module.HasImage; }
                }
 
-               public MethodDefinitionCollection Methods {
+               public bool HasMethods {
                        get {
-                               if (m_methods == null)
-                                       m_methods = new MethodDefinitionCollection (this);
+                               if (methods != null)
+                                       return methods.Count > 0;
 
-                               return m_methods;
-                       }
-               }
+                               if (HasImage)
+                                       return methods_range.Length > 0;
 
-               public bool HasConstructors {
-                       get { return (m_ctors == null) ? false : (m_ctors.Count > 0); }
+                               return false;
+                       }
                }
 
-               public ConstructorCollection Constructors {
+               public Collection<MethodDefinition> Methods {
                        get {
-                               if (m_ctors == null)
-                                       m_ctors = new ConstructorCollection (this);
+                               if (methods != null)
+                                       return methods;
+
+                               if (HasImage)
+                                       return methods = Module.Read (this, (type, reader) => reader.ReadMethods (type));
 
-                               return m_ctors;
+                               return methods = new MemberDefinitionCollection<MethodDefinition> (this);
                        }
                }
 
                public bool HasFields {
-                       get { return (m_fields == null) ? false : (m_fields.Count > 0); }
+                       get {
+                               if (fields != null)
+                                       return fields.Count > 0;
+
+                               if (HasImage)
+                                       return fields_range.Length > 0;
+
+                               return false;
+                       }
                }
 
-               public FieldDefinitionCollection Fields {
+               public Collection<FieldDefinition> Fields {
                        get {
-                               if (m_fields == null)
-                                       m_fields = new FieldDefinitionCollection (this);
+                               if (fields != null)
+                                       return fields;
 
-                               return m_fields;
+                               if (HasImage)
+                                       return fields = Module.Read (this, (type, reader) => reader.ReadFields (type));
+
+                               return fields = new MemberDefinitionCollection<FieldDefinition> (this);
                        }
                }
 
                public bool HasEvents {
-                       get { return (m_events == null) ? false : (m_events.Count > 0); }
+                       get {
+                               if (events != null)
+                                       return events.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (type, reader) => reader.HasEvents (type));
+
+                               return false;
+                       }
                }
 
-               public EventDefinitionCollection Events {
+               public Collection<EventDefinition> Events {
                        get {
-                               if (m_events == null)
-                                       m_events = new EventDefinitionCollection (this);
+                               if (events != null)
+                                       return events;
 
-                               return m_events;
+                               if (HasImage)
+                                       return events = Module.Read (this, (type, reader) => reader.ReadEvents (type));
+
+                               return events = new MemberDefinitionCollection<EventDefinition> (this);
                        }
                }
 
                public bool HasProperties {
-                       get { return (m_properties == null) ? false : (m_properties.Count > 0); }
+                       get {
+                               if (properties != null)
+                                       return properties.Count > 0;
+
+                               if (HasImage)
+                                       return Module.Read (this, (type, reader) => reader.HasProperties (type));
+
+                               return false;
+                       }
                }
 
-               public PropertyDefinitionCollection Properties {
+               public Collection<PropertyDefinition> Properties {
                        get {
-                               if (m_properties == null)
-                                       m_properties = new PropertyDefinitionCollection (this);
+                               if (properties != null)
+                                       return properties;
 
-                               return m_properties;
+                               if (HasImage)
+                                       return properties = Module.Read (this, (type, reader) => reader.ReadProperties (type));
+
+                               return properties = new MemberDefinitionCollection<PropertyDefinition> (this);
                        }
                }
 
                public bool HasSecurityDeclarations {
-                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+                       get {
+                               if (security_declarations != null)
+                                       return security_declarations.Count > 0;
+
+                               return this.GetHasSecurityDeclarations (Module);
+                       }
                }
 
-               public SecurityDeclarationCollection SecurityDeclarations {
+               public Collection<SecurityDeclaration> SecurityDeclarations {
+                       get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (Module)); }
+               }
+
+               public bool HasCustomAttributes {
                        get {
-                               if (m_secDecls == null)
-                                       m_secDecls = new SecurityDeclarationCollection (this);
+                               if (custom_attributes != null)
+                                       return custom_attributes.Count > 0;
 
-                               return m_secDecls;
+                               return this.GetHasCustomAttributes (Module);
                        }
                }
 
+               public Collection<CustomAttribute> CustomAttributes {
+                       get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+               }
+
+               public override bool HasGenericParameters {
+                       get {
+                               if (generic_parameters != null)
+                                       return generic_parameters.Count > 0;
+
+                               return this.GetHasGenericParameters (Module);
+                       }
+               }
+
+               public override Collection<GenericParameter> GenericParameters {
+                       get { return generic_parameters ?? (generic_parameters = this.GetGenericParameters (Module)); }
+               }
+
                #region TypeAttributes
 
                public bool IsNotPublic {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NotPublic; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NotPublic;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NotPublic);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic, value); }
                }
 
                public bool IsPublic {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.Public;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.Public);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public, value); }
                }
 
                public bool IsNestedPublic {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedPublic;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPublic);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic, value); }
                }
 
                public bool IsNestedPrivate {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedPrivate;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPrivate);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate, value); }
                }
 
                public bool IsNestedFamily {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamily; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedFamily;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamily);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily, value); }
                }
 
                public bool IsNestedAssembly {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedAssembly; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedAssembly;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedAssembly);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly, value); }
                }
 
                public bool IsNestedFamilyAndAssembly {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamANDAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedFamANDAssem;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamANDAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem, value); }
                }
 
                public bool IsNestedFamilyOrAssembly {
-                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamORAssem; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.VisibilityMask;
-                                       m_attributes |= TypeAttributes.NestedFamORAssem;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamORAssem);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem, value); }
                }
 
                public bool IsAutoLayout {
-                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.LayoutMask;
-                                       m_attributes |= TypeAttributes.AutoLayout;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.AutoLayout);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout, value); }
                }
 
                public bool IsSequentialLayout {
-                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.LayoutMask;
-                                       m_attributes |= TypeAttributes.SequentialLayout;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.SequentialLayout);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout, value); }
                }
 
                public bool IsExplicitLayout {
-                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.LayoutMask;
-                                       m_attributes |= TypeAttributes.ExplicitLayout;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.ExplicitLayout);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout, value); }
                }
 
                public bool IsClass {
-                       get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Class; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.ClassSemanticMask;
-                                       m_attributes |= TypeAttributes.Class;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Class);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class, value); }
                }
 
                public bool IsInterface {
-                       get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Interface; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.ClassSemanticMask;
-                                       m_attributes |= TypeAttributes.Interface;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Interface);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface, value); }
                }
 
                public bool IsAbstract {
-                       get { return (m_attributes & TypeAttributes.Abstract) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.Abstract;
-                               else
-                                       m_attributes &= ~TypeAttributes.Abstract;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Abstract); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Abstract, value); }
                }
 
                public bool IsSealed {
-                       get { return (m_attributes & TypeAttributes.Sealed) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.Sealed;
-                               else
-                                       m_attributes &= ~TypeAttributes.Sealed;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Sealed); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Sealed, value); }
                }
 
                public bool IsSpecialName {
-                       get { return (m_attributes & TypeAttributes.SpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.SpecialName;
-                               else
-                                       m_attributes &= ~TypeAttributes.SpecialName;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.SpecialName); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.SpecialName, value); }
                }
 
                public bool IsImport {
-                       get { return (m_attributes & TypeAttributes.Import) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.Import;
-                               else
-                                       m_attributes &= ~TypeAttributes.Import;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Import); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Import, value); }
                }
 
                public bool IsSerializable {
-                       get { return (m_attributes & TypeAttributes.Serializable) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.Serializable;
-                               else
-                                       m_attributes &= ~TypeAttributes.Serializable;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.Serializable); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Serializable, value); }
                }
 
                public bool IsAnsiClass {
-                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AnsiClass; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.StringFormatMask;
-                                       m_attributes |= TypeAttributes.AnsiClass;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AnsiClass);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass, value); }
                }
 
                public bool IsUnicodeClass {
-                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.UnicodeClass; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.StringFormatMask;
-                                       m_attributes |= TypeAttributes.UnicodeClass;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.UnicodeClass);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass, value); }
                }
 
                public bool IsAutoClass {
-                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AutoClass; }
-                       set {
-                               if (value) {
-                                       m_attributes &= ~TypeAttributes.StringFormatMask;
-                                       m_attributes |= TypeAttributes.AutoClass;
-                               } else
-                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AutoClass);
-                       }
+                       get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass); }
+                       set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass, value); }
                }
 
                public bool IsBeforeFieldInit {
-                       get { return (m_attributes & TypeAttributes.BeforeFieldInit) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.BeforeFieldInit;
-                               else
-                                       m_attributes &= ~TypeAttributes.BeforeFieldInit;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.BeforeFieldInit); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.BeforeFieldInit, value); }
                }
 
                public bool IsRuntimeSpecialName {
-                       get { return (m_attributes & TypeAttributes.RTSpecialName) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.RTSpecialName;
-                               else
-                                       m_attributes &= ~TypeAttributes.RTSpecialName;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.RTSpecialName); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.RTSpecialName, value); }
                }
 
                public bool HasSecurity {
-                       get { return (m_attributes & TypeAttributes.HasSecurity) != 0; }
-                       set {
-                               if (value)
-                                       m_attributes |= TypeAttributes.HasSecurity;
-                               else
-                                       m_attributes &= ~TypeAttributes.HasSecurity;
-                       }
+                       get { return attributes.GetAttributes ((uint) TypeAttributes.HasSecurity); }
+                       set { attributes = attributes.SetAttributes ((uint) TypeAttributes.HasSecurity, value); }
                }
 
                #endregion
 
                public bool IsEnum {
-                       get { return m_baseType != null && m_baseType.FullName == Constants.Enum; }
+                       get { return base_type != null && base_type.IsTypeOf ("System", "Enum"); }
                }
 
                public override bool IsValueType {
                        get {
-                               return m_baseType != null && ((m_baseType.FullName == Constants.Enum) ||
-                                       (m_baseType.FullName == Constants.ValueType && this.FullName != Constants.Enum));
+                               if (base_type == null)
+                                       return false;
+
+                               return base_type.IsTypeOf ("System", "Enum") || (base_type.IsTypeOf ("System", "ValueType") && !this.IsTypeOf ("System", "Enum"));
                        }
                }
 
+               public override bool IsDefinition {
+                       get { return true; }
+               }
+
                public new TypeDefinition DeclaringType {
                        get { return (TypeDefinition) base.DeclaringType; }
                        set { base.DeclaringType = value; }
                }
 
-               internal TypeDefinition (string name, string ns, TypeAttributes attrs) :
-                       base (name, ns)
+               public TypeDefinition (string @namespace, string name, TypeAttributes attributes)
+                       : base (@namespace, name)
                {
-                       m_hasInfo = false;
-                       m_attributes = attrs;
+                       this.attributes = (uint) attributes;
+                       this.token = new MetadataToken (TokenType.TypeDef);
                }
 
-               public TypeDefinition (string name, string ns,
-                       TypeAttributes attributes, TypeReference baseType) :
-                       this (name, ns, attributes)
+               public TypeDefinition (string @namespace, string name, TypeAttributes attributes, TypeReference baseType) :
+                       this (@namespace, name, attributes)
                {
                        this.BaseType = baseType;
                }
@@ -474,89 +463,37 @@ namespace Mono.Cecil {
                {
                        return this;
                }
+       }
 
-               public TypeDefinition Clone ()
-               {
-                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
-               }
+       static partial class Mixin {
 
-               internal static TypeDefinition Clone (TypeDefinition type, ImportContext context)
+               public static TypeReference GetEnumUnderlyingType (this TypeDefinition self)
                {
-                       TypeDefinition nt = new TypeDefinition (
-                               type.Name,
-                               type.Namespace,
-                               type.Attributes);
+                       var fields = self.Fields;
 
-                       TypeReference contextType = context.GenericContext.Type;
+                       for (int i = 0; i < fields.Count; i++) {
+                               var field = fields [i];
+                               if (!field.IsStatic)
+                                       return field.FieldType;
+                       }
 
-                       context.GenericContext.Type = nt;
+                       throw new ArgumentException ();
+               }
 
-                       GenericParameter.CloneInto (type, nt, context);
+               public static TypeDefinition GetNestedType (this TypeDefinition self, string name)
+               {
+                       if (!self.HasNestedTypes)
+                               return null;
 
-                       if (type.BaseType != null)
-                               nt.BaseType = context.Import (type.BaseType);
+                       var nested_types = self.NestedTypes;
 
-                       if (type.HasLayoutInfo) {
-                               nt.ClassSize = type.ClassSize;
-                               nt.PackingSize = type.PackingSize;
+                       for (int i = 0; i < nested_types.Count; i++) {
+                               var nested_type = nested_types [i];
+                               if (nested_type.Name == name)
+                                       return nested_type;
                        }
 
-                       if (type.HasFields) {
-                               foreach (FieldDefinition field in type.Fields)
-                                       nt.Fields.Add (FieldDefinition.Clone (field, context));
-                       }
-                       if (type.HasConstructors) {
-                               foreach (MethodDefinition ctor in type.Constructors)
-                                       nt.Constructors.Add (MethodDefinition.Clone (ctor, context));
-                       }
-                       if (type.HasMethods) {
-                               foreach (MethodDefinition meth in type.Methods)
-                                       nt.Methods.Add (MethodDefinition.Clone (meth, context));
-                       }
-                       if (type.HasEvents) {
-                               foreach (EventDefinition evt in type.Events)
-                                       nt.Events.Add (EventDefinition.Clone (evt, context));
-                       }
-                       if (type.HasProperties) {
-                               foreach (PropertyDefinition prop in type.Properties)
-                                       nt.Properties.Add (PropertyDefinition.Clone (prop, context));
-                       }
-                       if (type.HasInterfaces) {
-                               foreach (TypeReference intf in type.Interfaces)
-                                       nt.Interfaces.Add (context.Import (intf));
-                       }
-                       if (type.HasNestedTypes) {
-                               foreach (TypeDefinition nested in type.NestedTypes)
-                                       nt.NestedTypes.Add (Clone (nested, context));
-                       }
-                       if (type.HasCustomAttributes) {
-                               foreach (CustomAttribute ca in type.CustomAttributes)
-                                       nt.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-                       }
-                       if (type.HasSecurityDeclarations) {
-                               foreach (SecurityDeclaration dec in type.SecurityDeclarations)
-                                       nt.SecurityDeclarations.Add (SecurityDeclaration.Clone (dec));
-                       }
-
-                       context.GenericContext.Type = contextType;
-
-                       return nt;
-               }
-
-               public override void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitTypeDefinition (this);
-
-                       this.GenericParameters.Accept (visitor);
-                       this.Interfaces.Accept (visitor);
-                       this.Constructors.Accept (visitor);
-                       this.Methods.Accept (visitor);
-                       this.Fields.Accept (visitor);
-                       this.Properties.Accept (visitor);
-                       this.Events.Accept (visitor);
-                       this.NestedTypes.Accept (visitor);
-                       this.CustomAttributes.Accept (visitor);
-                       this.SecurityDeclarations.Accept (visitor);
+                       return null;
                }
        }
 }
index 6bd233b511af05930a24a9fb72c93707662a889d..702fe271e6afefc87cc1510d9ed2076bebc71eb5 100644 (file)
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-       using System.Collections.Specialized;
-
-       using Mono.Cecil.Cil;
+using System;
+using System.Collections.Generic;
 
-       using Hcp = Mono.Cecil.HashCodeProvider;
-       using Cmp = System.Collections.Comparer;
+using Mono.Cecil.Metadata;
 
-       public sealed class TypeDefinitionCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-               ModuleDefinition m_container;
-
-               public TypeDefinition this [int index] {
-                       get { return this.BaseGet (index) as TypeDefinition; }
-                       set { this.BaseSet (index, value); }
-               }
-
-               public TypeDefinition this [string fullName] {
-                       get { return this.BaseGet (fullName) as TypeDefinition; }
-                       set { this.BaseSet (fullName, value); }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
+using Mono.Collections.Generic;
 
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               bool IList.IsReadOnly {
-                       get { return false; }
-               }
+namespace Mono.Cecil {
 
-               bool IList.IsFixedSize {
-                       get { return false; }
-               }
+       using Slot = Row<string, string>;
 
-               object IList.this [int index] {
-                       get { return BaseGet (index); }
-                       set {
-                               Check (value);
-                               BaseSet (index, value);
-                       }
-               }
+       sealed class TypeDefinitionCollection : Collection<TypeDefinition> {
 
-               public TypeDefinitionCollection (ModuleDefinition container) :
-                       base (Hcp.Instance, Cmp.Default)
-               {
-                       m_container = container;
-               }
+               readonly ModuleDefinition container;
+               readonly Dictionary<Slot, TypeDefinition> name_cache;
 
-               public void Add (TypeDefinition value)
+               internal TypeDefinitionCollection (ModuleDefinition container)
                {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       Attach (value);
-
-                       this.BaseAdd (value.FullName, value);
+                       this.container = container;
+                       this.name_cache = new Dictionary<Slot, TypeDefinition> (new RowEqualityComparer ());
                }
 
-               public void Clear ()
+               internal TypeDefinitionCollection (ModuleDefinition container, int capacity)
+                       : base (capacity)
                {
-                       foreach (TypeDefinition item in this)
-                               Detach (item);
-
-                       this.BaseClear ();
+                       this.container = container;
+                       this.name_cache = new Dictionary<Slot, TypeDefinition> (capacity, new RowEqualityComparer ());
                }
 
-               public bool Contains (TypeDefinition value)
+               protected override void OnAdd (TypeDefinition item, int index)
                {
-                       return Contains (value.FullName);
+                       Attach (item);
                }
 
-               public bool Contains (string fullName)
+               protected override void OnSet (TypeDefinition item, int index)
                {
-                       return this.BaseGet (fullName) != null;
+                       Attach (item);
                }
 
-               public int IndexOf (TypeDefinition value)
+               protected override void OnInsert (TypeDefinition item, int index)
                {
-                       string [] keys = this.BaseGetAllKeys ();
-                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+                       Attach (item);
                }
 
-               public void Remove (TypeDefinition value)
+               protected override void OnRemove (TypeDefinition item, int index)
                {
-                       this.BaseRemove (value.FullName);
-
-                       Detach (value);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       TypeDefinition item = this [index];
-                       Remove (item);
-
                        Detach (item);
                }
 
-               public void CopyTo (Array ary, int index)
-               {
-                       this.BaseGetAllValues ().CopyTo (ary, index);
-               }
-
-               public new IEnumerator GetEnumerator ()
-               {
-                       return this.BaseGetAllValues ().GetEnumerator ();
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitTypeDefinitionCollection (this);
-               }
-
-#if CF_1_0 || CF_2_0
-               internal object [] BaseGetAllValues ()
-               {
-                       object [] values = new object [this.Count];
-                       for (int i=0; i < values.Length; ++i) {
-                               values [i] = this.BaseGet (i);
-                       }
-                       return values;
-               }
-#endif
-
-               void Check (object value)
-               {
-                       if (!(value is TypeDefinition))
-                               throw new ArgumentException ();
-               }
-
-               int IList.Add (object value)
+               protected override void OnClear ()
                {
-                       Check (value);
-                       Add (value as TypeDefinition);
-                       return 0;
+                       foreach (var type in this)
+                               Detach (type);
                }
 
-               bool IList.Contains (object value)
+               void Attach (TypeDefinition type)
                {
-                       Check (value);
-                       return Contains (value as TypeDefinition);
-               }
+                       if (type.Module != null && type.Module != container)
+                               throw new ArgumentException ("Type already attached");
 
-               int IList.IndexOf (object value)
-               {
-                       throw new NotSupportedException ();
+                       type.module = container;
+                       type.scope = container;
+                       name_cache [new Slot (type.Namespace, type.Name)] = type;
                }
 
-               void IList.Insert (int index, object value)
+               void Detach (TypeDefinition type)
                {
-                       throw new NotSupportedException ();
+                       type.module = null;
+                       type.scope = null;
+                       name_cache.Remove (new Slot (type.Namespace, type.Name));
                }
 
-               void IList.Remove (object value)
+               public TypeDefinition GetType (string fullname)
                {
-                       Check (value);
-                       Remove (value as TypeDefinition);
-               }
+                       string @namespace, name;
+                       TypeParser.SplitFullName (fullname, out @namespace, out name);
 
-               void Detach (TypeReference type)
-               {
-                       type.Module = null;
+                       return GetType (@namespace, name);
                }
 
-               void Attach (TypeReference type)
+               public TypeDefinition GetType (string @namespace, string name)
                {
-                       if (type.Module != null)
-                               throw new ReflectionException ("Type is already attached, clone it instead");
-
-                       type.Module = m_container;
-                       type.AttachToScope (m_container);
+                       TypeDefinition type;
+                       if (name_cache.TryGetValue (new Slot (@namespace, name), out type))
+                               return type;
 
+                       return null;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs
new file mode 100644 (file)
index 0000000..df6acf3
--- /dev/null
@@ -0,0 +1,554 @@
+//
+// TypeParser.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Text;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+       class TypeParser {
+
+               class Type {
+                       public const int Ptr = -1;
+                       public const int ByRef = -2;
+                       public const int SzArray = -3;
+
+                       public string type_fullname;
+                       public string [] nested_names;
+                       public int arity;
+                       public int [] specs;
+                       public Type [] generic_arguments;
+                       public string assembly;
+               }
+
+               readonly string fullname;
+               readonly int length;
+
+               int position;
+
+               TypeParser (string fullname)
+               {
+                       this.fullname = fullname;
+                       this.length = fullname.Length;
+               }
+
+               Type ParseType (bool fq_name)
+               {
+                       var type = new Type ();
+                       type.type_fullname = ParsePart ();
+
+                       type.nested_names = ParseNestedNames ();
+
+                       if (TryGetArity (type))
+                               type.generic_arguments = ParseGenericArguments (type.arity);
+
+                       type.specs = ParseSpecs ();
+
+                       if (fq_name)
+                               type.assembly = ParseAssemblyName ();
+
+                       return type;
+               }
+
+               static bool TryGetArity (Type type)
+               {
+                       int arity = 0;
+
+                       TryAddArity (type.type_fullname, ref arity);
+
+                       var nested_names = type.nested_names;
+                       if (!nested_names.IsNullOrEmpty ()) {
+                               for (int i = 0; i < nested_names.Length; i++)
+                                       TryAddArity (nested_names [i], ref arity);
+                       }
+
+                       type.arity = arity;
+                       return arity > 0;
+               }
+
+               static bool TryGetArity (string name, out int arity)
+               {
+                       arity = 0;
+                       var index = name.LastIndexOf ('`');
+                       if (index == -1)
+                               return false;
+
+                       return ParseInt32 (name.Substring (index + 1), out arity);
+               }
+
+               static bool ParseInt32 (string value, out int result)
+               {
+#if CF
+                       try {
+                               result = int.Parse (value);
+                               return true;
+                       } catch {
+                               result = 0;
+                               return false;
+                       }
+#else
+                       return int.TryParse (value, out result);
+#endif
+               }
+
+               static void TryAddArity (string name, ref int arity)
+               {
+                       int type_arity;
+                       if (!TryGetArity (name, out type_arity))
+                               return;
+
+                       arity += type_arity;
+               }
+
+               string ParsePart ()
+               {
+                       int start = position;
+                       while (position < length && !IsDelimiter (fullname [position]))
+                               position++;
+
+                       return fullname.Substring (start, position - start);
+               }
+
+               static bool IsDelimiter (char chr)
+               {
+                       return "+,[]*&".IndexOf (chr) != -1;
+               }
+
+               void TryParseWhiteSpace ()
+               {
+                       while (position < length && Char.IsWhiteSpace (fullname [position]))
+                               position++;
+               }
+
+               string [] ParseNestedNames ()
+               {
+                       string [] nested_names = null;
+                       while (TryParse ('+'))
+                               Add (ref nested_names, ParsePart ());
+
+                       return nested_names;
+               }
+
+               bool TryParse (char chr)
+               {
+                       if (position < length && fullname [position] == chr) {
+                               position++;
+                               return true;
+                       }
+
+                       return false;
+               }
+
+               static void Add<T> (ref T [] array, T item)
+               {
+                       if (array == null) {
+                               array = new [] { item };
+                               return;
+                       }
+
+#if !CF
+                       Array.Resize (ref array, array.Length + 1);
+#else
+                       var copy = new T [array.Length + 1];
+                       Array.Copy (array, copy, array.Length);
+                       array = copy;
+#endif
+                       array [array.Length - 1] = item;
+               }
+
+               int [] ParseSpecs ()
+               {
+                       int [] specs = null;
+
+                       while (position < length) {
+                               switch (fullname [position]) {
+                               case '*':
+                                       position++;
+                                       Add (ref specs, Type.Ptr);
+                                       break;
+                               case '&':
+                                       position++;
+                                       Add (ref specs, Type.ByRef);
+                                       break;
+                               case '[':
+                                       position++;
+                                       switch (fullname [position]) {
+                                       case ']':
+                                               position++;
+                                               Add (ref specs, Type.SzArray);
+                                               break;
+                                       case '*':
+                                               position++;
+                                               Add (ref specs, 1);
+                                               break;
+                                       default:
+                                               var rank = 1;
+                                               while (TryParse (','))
+                                                       rank++;
+
+                                               Add (ref specs, rank);
+
+                                               TryParse (']');
+                                               break;
+                                       }
+                                       break;
+                               default:
+                                       return specs;
+                               }
+                       }
+
+                       return specs;
+               }
+
+               Type [] ParseGenericArguments (int arity)
+               {
+                       Type [] generic_arguments = null;
+
+                       if (position == length || fullname [position] != '[')
+                               return generic_arguments;
+
+                       TryParse ('[');
+
+                       for (int i = 0; i < arity; i++) {
+                               var fq_argument = TryParse ('[');
+                               Add (ref generic_arguments, ParseType (fq_argument));
+                               if (fq_argument)
+                                       TryParse (']');
+
+                               TryParse (',');
+                               TryParseWhiteSpace ();
+                       }
+
+                       TryParse (']');
+
+                       return generic_arguments;
+               }
+
+               string ParseAssemblyName ()
+               {
+                       if (!TryParse (','))
+                               return string.Empty;
+
+                       TryParseWhiteSpace ();
+
+                       var start = position;
+                       while (position < length) {
+                               var chr = fullname [position];
+                               if (chr == '[' || chr == ']')
+                                       break;
+
+                               position++;
+                       }
+
+                       return fullname.Substring (start, position - start);
+               }
+
+               public static TypeReference ParseType (ModuleDefinition module, string fullname)
+               {
+                       if (fullname == null)
+                               return null;
+
+                       var parser = new TypeParser (fullname);
+                       return GetTypeReference (module, parser.ParseType (true));
+               }
+
+               static TypeReference GetTypeReference (ModuleDefinition module, Type type_info)
+               {
+                       TypeReference type;
+                       if (!TryGetDefinition (module, type_info, out type))
+                               type = CreateReference (type_info, module, GetMetadataScope (module, type_info));
+
+                       return CreateSpecs (type, type_info);
+               }
+
+               static TypeReference CreateSpecs (TypeReference type, Type type_info)
+               {
+                       type = TryCreateGenericInstanceType (type, type_info);
+
+                       var specs = type_info.specs;
+                       if (specs.IsNullOrEmpty ())
+                               return type;
+
+                       for (int i = 0; i < specs.Length; i++) {
+                               switch (specs [i]) {
+                               case Type.Ptr:
+                                       type = new PointerType (type);
+                                       break;
+                               case Type.ByRef:
+                                       type = new ByReferenceType (type);
+                                       break;
+                               case Type.SzArray:
+                                       type = new ArrayType (type);
+                                       break;
+                               default:
+                                       var array = new ArrayType (type);
+                                       array.Dimensions.Clear ();
+
+                                       for (int j = 0; j < specs [i]; j++)
+                                               array.Dimensions.Add (new ArrayDimension ());
+
+                                       type = array;
+                                       break;
+                               }
+                       }
+
+                       return type;
+               }
+
+               static TypeReference TryCreateGenericInstanceType (TypeReference type, Type type_info)
+               {
+                       var generic_arguments = type_info.generic_arguments;
+                       if (generic_arguments.IsNullOrEmpty ())
+                               return type;
+
+                       var instance = new GenericInstanceType (type);
+                       var instance_arguments = instance.GenericArguments;
+
+                       for (int i = 0; i < generic_arguments.Length; i++)
+                               instance_arguments.Add (GetTypeReference (type.Module, generic_arguments [i]));
+
+                       return instance;
+               }
+
+               public static void SplitFullName (string fullname, out string @namespace, out string name)
+               {
+                       var last_dot = fullname.LastIndexOf ('.');
+
+                       if (last_dot == -1) {
+                               @namespace = string.Empty;
+                               name = fullname;
+                       } else {
+                               @namespace = fullname.Substring (0, last_dot);
+                               name = fullname.Substring (last_dot + 1);
+                       }
+               }
+
+               static TypeReference CreateReference (Type type_info, ModuleDefinition module, IMetadataScope scope)
+               {
+                       string @namespace, name;
+                       SplitFullName (type_info.type_fullname, out @namespace, out name);
+
+                       var type = new TypeReference (@namespace, name, module, scope);
+
+                       AdjustGenericParameters (type);
+
+                       var nested_names = type_info.nested_names;
+                       if (nested_names.IsNullOrEmpty ())
+                               return type;
+
+                       for (int i = 0; i < nested_names.Length; i++) {
+                               type = new TypeReference (string.Empty, nested_names [i], module, null) {
+                                       DeclaringType = type,
+                               };
+
+                               AdjustGenericParameters (type);
+                       }
+
+                       return type;
+               }
+
+               static void AdjustGenericParameters (TypeReference type)
+               {
+                       int arity;
+                       if (!TryGetArity (type.Name, out arity))
+                               return;
+
+                       for (int i = 0; i < arity; i++)
+                               type.GenericParameters.Add (new GenericParameter (type));
+               }
+
+               static IMetadataScope GetMetadataScope (ModuleDefinition module, Type type_info)
+               {
+                       if (string.IsNullOrEmpty (type_info.assembly))
+                               return module.TypeSystem.Corlib;
+
+                       return MatchReference (module, AssemblyNameReference.Parse (type_info.assembly));
+               }
+
+               static AssemblyNameReference MatchReference (ModuleDefinition module, AssemblyNameReference pattern)
+               {
+                       var references = module.AssemblyReferences;
+
+                       for (int i = 0; i < references.Count; i++) {
+                               var reference = references [i];
+                               if (reference.FullName == pattern.FullName)
+                                       return reference;
+                       }
+
+                       return pattern;
+               }
+
+               static bool TryGetDefinition (ModuleDefinition module, Type type_info, out TypeReference type)
+               {
+                       type = null;
+                       if (!TryCurrentModule (module, type_info))
+                               return false;
+
+                       var typedef = module.GetType (type_info.type_fullname);
+                       if (typedef == null)
+                               return false;
+
+                       var nested_names = type_info.nested_names;
+                       if (!nested_names.IsNullOrEmpty ()) {
+                               for (int i = 0; i < nested_names.Length; i++)
+                                       typedef = typedef.GetNestedType (nested_names [i]);
+                       }
+
+                       type = typedef;
+                       return true;
+               }
+
+               static bool TryCurrentModule (ModuleDefinition module, Type type_info)
+               {
+                       if (string.IsNullOrEmpty (type_info.assembly))
+                               return true;
+
+                       if (module.assembly != null && module.assembly.Name.FullName == type_info.assembly)
+                               return true;
+
+                       return false;
+               }
+
+               public static string ToParseable (TypeReference type)
+               {
+                       if (type == null)
+                               return null;
+
+                       var name = new StringBuilder ();
+                       AppendType (type, name, true, true);
+                       return name.ToString ();
+               }
+
+               static void AppendType (TypeReference type, StringBuilder name, bool fq_name, bool top_level)
+               {
+                       var declaring_type = type.DeclaringType;
+                       if (declaring_type != null) {
+                               AppendType (declaring_type, name, false, top_level);
+                               name.Append ('+');
+                       }
+
+                       var @namespace = type.Namespace;
+                       if (!string.IsNullOrEmpty (@namespace)) {
+                               name.Append (@namespace);
+                               name.Append ('.');
+                       }
+
+                       name.Append (type.GetElementType ().Name);
+
+                       if (!fq_name)
+                               return;
+
+                       if (type.IsTypeSpecification ())
+                               AppendTypeSpecification ((TypeSpecification) type, name);
+
+                       if (RequiresFullyQualifiedName (type, top_level)) {
+                               name.Append (", ");
+                               name.Append (GetScopeFullName (type));
+                       }
+               }
+
+               static string GetScopeFullName (TypeReference type)
+               {
+                       var scope = type.Scope;
+                       switch (scope.MetadataScopeType) {
+                       case MetadataScopeType.AssemblyNameReference:
+                               return ((AssemblyNameReference) scope).FullName;
+                       case MetadataScopeType.ModuleDefinition:
+                               return ((ModuleDefinition) scope).Assembly.Name.FullName;
+                       }
+
+                       throw new ArgumentException ();
+               }
+
+               static void AppendTypeSpecification (TypeSpecification type, StringBuilder name)
+               {
+                       if (type.ElementType.IsTypeSpecification ())
+                               AppendTypeSpecification ((TypeSpecification) type.ElementType, name);
+
+                       switch (type.etype) {
+                       case ElementType.Ptr:
+                               name.Append ('*');
+                               break;
+                       case ElementType.ByRef:
+                               name.Append ('&');
+                               break;
+                       case ElementType.SzArray:
+                       case ElementType.Array:
+                               var array = (ArrayType) type;
+                               if (array.IsVector) {
+                                       name.Append ("[]");
+                               } else {
+                                       name.Append ('[');
+                                       for (int i = 1; i < array.Rank; i++)
+                                               name.Append (',');
+                                       name.Append (']');
+                               }
+                               break;
+                       case ElementType.GenericInst:
+                               var instance = (GenericInstanceType) type;
+                               var arguments = instance.GenericArguments;
+
+                               name.Append ('[');
+
+                               for (int i = 0; i < arguments.Count; i++) {
+                                       if (i > 0)
+                                               name.Append (',');
+
+                                       var argument = arguments [i];
+                                       var requires_fqname = argument.Scope != argument.Module;
+
+                                       if (requires_fqname)
+                                               name.Append ('[');
+
+                                       AppendType (argument, name, true, false);
+
+                                       if (requires_fqname)
+                                               name.Append (']');
+                               }
+
+                               name.Append (']');
+                               break;
+                       default:
+                               return;
+                       }
+               }
+
+               static bool RequiresFullyQualifiedName (TypeReference type, bool top_level)
+               {
+                       if (type.Scope == type.Module)
+                               return false;
+
+                       if (type.Scope.Name == "mscorlib" && top_level)
+                               return false;
+
+                       return true;
+               }
+       }
+}
index ae863f7180fe37b33a9e48b804d76076978dc17f..e45d82303b92cb9b83a1bf1970dc813968d814ea 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Cecil.Metadata;
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-       public class TypeReference : MemberReference, IGenericParameterProvider, ICustomAttributeProvider {
+       public enum MetadataType : byte {
+               Void = ElementType.Void,
+               Boolean = ElementType.Boolean,
+               Char = ElementType.Char,
+               SByte = ElementType.I1,
+               Byte = ElementType.U1,
+               Int16 = ElementType.I2,
+               UInt16 = ElementType.U2,
+               Int32 = ElementType.I4,
+               UInt32 = ElementType.U4,
+               Int64 = ElementType.I8,
+               UInt64 = ElementType.U8,
+               Single = ElementType.R4,
+               Double = ElementType.R8,
+               String = ElementType.String,
+               Pointer = ElementType.Ptr,
+               ByReference = ElementType.ByRef,
+               ValueType = ElementType.ValueType,
+               Class = ElementType.Class,
+               Var = ElementType.Var,
+               Array = ElementType.Array,
+               GenericInstance = ElementType.GenericInst,
+               TypedByReference = ElementType.TypedByRef,
+               IntPtr = ElementType.I,
+               UIntPtr = ElementType.U,
+               FunctionPointer = ElementType.FnPtr,
+               Object = ElementType.Object,
+               MVar = ElementType.MVar,
+               RequiredModifier = ElementType.CModReqD,
+               OptionalModifier = ElementType.CModOpt,
+               Sentinel = ElementType.Sentinel,
+               Pinned = ElementType.Pinned,
+       }
+
+       public class TypeReference : MemberReference, IGenericParameterProvider, IGenericContext {
 
-               string m_namespace;
-               bool m_fullNameDiscarded;
-               string m_fullName;
-               protected bool m_isValueType;
-               IMetadataScope m_scope;
-               ModuleDefinition m_module;
+               string @namespace;
+               bool value_type;
+               internal IMetadataScope scope;
+               internal ModuleDefinition module;
 
-               CustomAttributeCollection m_customAttrs;
-               GenericParameterCollection m_genparams;
+               internal ElementType etype = ElementType.None;
+
+               string fullname;
+
+               protected Collection<GenericParameter> generic_parameters;
 
                public override string Name {
                        get { return base.Name; }
                        set {
                                base.Name = value;
-                               m_fullNameDiscarded = true;
+                               fullname = null;
                        }
                }
 
                public virtual string Namespace {
-                       get { return m_namespace; }
+                       get { return @namespace; }
                        set {
-                               m_namespace = value;
-                               m_fullNameDiscarded = true;
+                               @namespace = value;
+                               fullname = null;
                        }
                }
 
                public virtual bool IsValueType {
-                       get { return m_isValueType; }
-                       set { m_isValueType = value; }
+                       get { return value_type; }
+                       set { value_type = value; }
                }
 
-               public virtual ModuleDefinition Module {
-                       get { return m_module; }
-                       set { m_module = value; }
+               public override ModuleDefinition Module {
+                       get {
+                               if (module != null)
+                                       return module;
+
+                               var declaring_type = this.DeclaringType;
+                               if (declaring_type != null)
+                                       return declaring_type.Module;
+
+                               return null;
+                       }
                }
 
-               public bool HasCustomAttributes {
-                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               IGenericParameterProvider IGenericContext.Type {
+                       get { return this; }
                }
 
-               public CustomAttributeCollection CustomAttributes {
-                       get {
-                               if (m_customAttrs == null)
-                                       m_customAttrs = new CustomAttributeCollection (this);
+               IGenericParameterProvider IGenericContext.Method {
+                       get { return null; }
+               }
 
-                               return m_customAttrs;
-                       }
+               GenericParameterType IGenericParameterProvider.GenericParameterType {
+                       get { return GenericParameterType.Type; }
                }
 
-               public bool HasGenericParameters {
-                       get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+               public virtual bool HasGenericParameters {
+                       get { return !generic_parameters.IsNullOrEmpty (); }
                }
 
-               public GenericParameterCollection GenericParameters {
+               public virtual Collection<GenericParameter> GenericParameters {
                        get {
-                               if (m_genparams == null)
-                                       m_genparams = new GenericParameterCollection (this);
-                               return m_genparams;
+                               if (generic_parameters != null)
+                                       return generic_parameters;
+
+                               return generic_parameters = new Collection<GenericParameter> ();
                        }
                }
 
                public virtual IMetadataScope Scope {
                        get {
-                               if (this.DeclaringType != null)
-                                       return this.DeclaringType.Scope;
+                               var declaring_type = this.DeclaringType;
+                               if (declaring_type != null)
+                                       return declaring_type.Scope;
 
-                               return m_scope;
+                               return scope;
                        }
                }
 
@@ -104,67 +153,175 @@ namespace Mono.Cecil {
                        get { return this.DeclaringType != null; }
                }
 
-               public virtual string FullName {
+               public override TypeReference DeclaringType {
+                       get { return base.DeclaringType; }
+                       set {
+                               base.DeclaringType = value;
+                               fullname = null;
+                       }
+               }
+
+               public override string FullName {
                        get {
-                               if (m_fullName != null && !m_fullNameDiscarded)
-                                       return m_fullName;
+                               if (fullname != null)
+                                       return fullname;
 
-                               if (this.IsNested)
-                                       return string.Concat (this.DeclaringType.FullName, "/", this.Name);
+                               if (IsNested)
+                                       return fullname = DeclaringType.FullName + "/" + Name;
 
-                               if (m_namespace == null || m_namespace.Length == 0)
-                                       return this.Name;
+                               if (string.IsNullOrEmpty (@namespace))
+                                       return fullname = Name;
 
-                               m_fullName = string.Concat (m_namespace, ".", this.Name);
-                               m_fullNameDiscarded = false;
-                               return m_fullName;
+                               return fullname = @namespace + "." + Name;
                        }
                }
 
-               protected TypeReference (string name, string ns) : base (name)
+               public virtual bool IsByReference {
+                       get { return false; }
+               }
+
+               public virtual bool IsPointer {
+                       get { return false; }
+               }
+
+               public virtual bool IsSentinel {
+                       get { return false; }
+               }
+
+               public virtual bool IsArray {
+                       get { return false; }
+               }
+
+               public virtual bool IsGenericParameter {
+                       get { return false; }
+               }
+
+               public virtual bool IsGenericInstance {
+                       get { return false; }
+               }
+
+               public virtual bool IsRequiredModifier {
+                       get { return false; }
+               }
+
+               public virtual bool IsOptionalModifier {
+                       get { return false; }
+               }
+
+               public virtual bool IsPinned {
+                       get { return false; }
+               }
+
+               public virtual bool IsFunctionPointer {
+                       get { return false; }
+               }
+
+               public bool IsPrimitive {
+                       get {
+                               switch (etype) {
+                               case ElementType.Boolean:
+                               case ElementType.Char:
+                               case ElementType.I:
+                               case ElementType.U:
+                               case ElementType.I1:
+                               case ElementType.U1:
+                               case ElementType.I2:
+                               case ElementType.U2:
+                               case ElementType.I4:
+                               case ElementType.U4:
+                               case ElementType.I8:
+                               case ElementType.U8:
+                               case ElementType.R4:
+                               case ElementType.R8:
+                                       return true;
+                               default:
+                                       return false;
+                               }
+                       }
+               }
+
+               public virtual MetadataType MetadataType {
+                       get {
+                               switch (etype) {
+                               case ElementType.None:
+                                       return IsValueType ? MetadataType.ValueType : MetadataType.Class;
+                               default:
+                                       return (MetadataType) etype;
+                               }
+                       }
+               }
+
+               protected TypeReference (string @namespace, string name)
+                       : base (name)
                {
-                       m_namespace = ns;
-                       m_fullNameDiscarded = false;
+                       this.@namespace = @namespace ?? string.Empty;
+                       this.token = new MetadataToken (TokenType.TypeRef, 0);
                }
 
-               internal TypeReference (string name, string ns, IMetadataScope scope) : this (name, ns)
+               public TypeReference (string @namespace, string name, ModuleDefinition module, IMetadataScope scope)
+                       : this (@namespace, name)
                {
-                       m_scope = scope;
+                       this.module = module;
+                       this.scope = scope;
                }
 
-               public TypeReference (string name, string ns, IMetadataScope scope, bool valueType) :
-                       this (name, ns, scope)
+               public TypeReference (string @namespace, string name, ModuleDefinition module, IMetadataScope scope, bool valueType) :
+                       this (@namespace, name, module, scope)
                {
-                       m_isValueType = valueType;
+                       value_type = valueType;
+               }
+
+               public virtual TypeReference GetElementType ()
+               {
+                       return this;
                }
 
                public virtual TypeDefinition Resolve ()
                {
-                       ModuleDefinition module = Module;
+                       var module = this.Module;
                        if (module == null)
-                               return null;
+                               throw new NotSupportedException ();
 
-                       return module.Resolver.Resolve (this);
+                       return module.Resolve (this);
                }
+       }
 
-               public virtual TypeReference GetOriginalType ()
-               {
-                       return this;
-               }
+       static partial class Mixin {
 
-               internal void AttachToScope (IMetadataScope scope)
+               public static bool IsTypeOf (this TypeReference self, string @namespace, string name)
                {
-                       m_scope = scope;
+                       return self.Name == name
+                               && self.Namespace == @namespace;
                }
 
-               public override void Accept (IReflectionVisitor visitor)
+               public static bool IsTypeSpecification (this TypeReference type)
                {
-                       visitor.VisitTypeReference (this);
+                       switch (type.etype) {
+                       case ElementType.Array:
+                       case ElementType.ByRef:
+                       case ElementType.CModOpt:
+                       case ElementType.CModReqD:
+                       case ElementType.FnPtr:
+                       case ElementType.GenericInst:
+                       case ElementType.MVar:
+                       case ElementType.Pinned:
+                       case ElementType.Ptr:
+                       case ElementType.SzArray:
+                       case ElementType.Sentinel:
+                       case ElementType.Var:
+                               return true;
+                       }
+
+                       return false;
                }
 
-               public override string ToString ()
+               public static TypeDefinition CheckedResolve (this TypeReference self)
                {
-                       return this.FullName;
+                       var type = self.Resolve ();
+                       if (type == null)
+                               throw new InvalidOperationException (string.Format ("Failed to resolve type: {0}", self.FullName));
+
+                       return type;
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs
deleted file mode 100644 (file)
index 2482e38..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// TypeReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-       using System;
-       using System.Collections;
-       using System.Collections.Specialized;
-
-       using Mono.Cecil.Cil;
-
-       using Hcp = Mono.Cecil.HashCodeProvider;
-       using Cmp = System.Collections.Comparer;
-
-       public sealed class TypeReferenceCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-               ModuleDefinition m_container;
-
-               public TypeReference this [int index] {
-                       get { return this.BaseGet (index) as TypeReference; }
-                       set { this.BaseSet (index, value); }
-               }
-
-               public TypeReference this [string fullName] {
-                       get { return this.BaseGet (fullName) as TypeReference; }
-                       set { this.BaseSet (fullName, value); }
-               }
-
-               public ModuleDefinition Container {
-                       get { return m_container; }
-               }
-
-               public bool IsSynchronized {
-                       get { return false; }
-               }
-
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-               bool IList.IsReadOnly {
-                       get { return false; }
-               }
-
-               bool IList.IsFixedSize {
-                       get { return false; }
-               }
-
-               object IList.this [int index] {
-                       get { return BaseGet (index); }
-                       set {
-                               Check (value);
-                               BaseSet (index, value);
-                       }
-               }
-
-               public TypeReferenceCollection (ModuleDefinition container) :
-                       base (Hcp.Instance, Cmp.Default)
-               {
-                       m_container = container;
-               }
-
-               public void Add (TypeReference value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       Attach (value);
-
-                       this.BaseAdd (value.FullName, value);
-               }
-
-               public void Clear ()
-               {
-                       foreach (TypeReference item in this)
-                               Detach (item);
-
-                       this.BaseClear ();
-               }
-
-               public bool Contains (TypeReference value)
-               {
-                       return Contains (value.FullName);
-               }
-
-               public bool Contains (string fullName)
-               {
-                       return this.BaseGet (fullName) != null;
-               }
-
-               public int IndexOf (TypeReference value)
-               {
-                       string [] keys = this.BaseGetAllKeys ();
-                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
-               }
-
-               public void Remove (TypeReference value)
-               {
-                       this.BaseRemove (value.FullName);
-
-                       Detach (value);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       TypeReference item = this [index];
-                       Remove (item);
-
-                       Detach (item);
-               }
-
-               public void CopyTo (Array ary, int index)
-               {
-                       this.BaseGetAllValues ().CopyTo (ary, index);
-               }
-
-               public new IEnumerator GetEnumerator ()
-               {
-                       return this.BaseGetAllValues ().GetEnumerator ();
-               }
-
-               public void Accept (IReflectionVisitor visitor)
-               {
-                       visitor.VisitTypeReferenceCollection (this);
-               }
-
-#if CF_1_0 || CF_2_0
-               internal object [] BaseGetAllValues ()
-               {
-                       object [] values = new object [this.Count];
-                       for (int i=0; i < values.Length; ++i) {
-                               values [i] = this.BaseGet (i);
-                       }
-                       return values;
-               }
-#endif
-
-               void Check (object value)
-               {
-                       if (!(value is TypeReference))
-                               throw new ArgumentException ();
-               }
-
-               int IList.Add (object value)
-               {
-                       Check (value);
-                       Add (value as TypeReference);
-                       return 0;
-               }
-
-               bool IList.Contains (object value)
-               {
-                       Check (value);
-                       return Contains (value as TypeReference);
-               }
-
-               int IList.IndexOf (object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Insert (int index, object value)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               void IList.Remove (object value)
-               {
-                       Check (value);
-                       Remove (value as TypeReference);
-               }
-
-               void Detach (TypeReference type)
-               {
-                       type.Module = null;
-               }
-
-               void Attach (TypeReference type)
-               {
-                       if (type.Module != null)
-                               throw new ReflectionException ("Type is already attached, clone it instead");
-
-                       type.Module = m_container;
-               }
-       }
-}
index 9648a4b173e4a80a8165961d551da7f9350fb74c..d484eff0a1a038a3e91fd82bf04df118ced116de 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Cecil.Metadata;
 
-       using System;
+namespace Mono.Cecil {
 
        public abstract class TypeSpecification : TypeReference {
 
-               private TypeReference m_elementType;
+               readonly TypeReference element_type;
+
+               public TypeReference ElementType {
+                       get { return element_type; }
+               }
 
                public override string Name {
-                       get { return m_elementType.Name; }
+                       get { return element_type.Name; }
                        set { throw new NotSupportedException (); }
                }
 
                public override string Namespace {
-                       get { return m_elementType.Namespace; }
+                       get { return element_type.Namespace; }
                        set { throw new NotSupportedException (); }
                }
 
-               public override bool IsValueType {
-                       get { return m_elementType.IsValueType; }
-                       set { throw new InvalidOperationException (); }
-               }
-
                public override IMetadataScope Scope {
-                       get { return m_elementType.Scope; }
+                       get { return element_type.Scope; }
                }
 
                public override ModuleDefinition Module {
-                       get { return m_elementType.Module; }
-                       set { throw new InvalidOperationException (); }
+                       get { return element_type.Module; }
                }
 
-               public TypeReference ElementType {
-                       get { return m_elementType; }
-                       set { m_elementType = value; }
+               public override string FullName {
+                       get { return element_type.FullName; }
                }
 
-               public override string FullName {
-                       get { return m_elementType.FullName; }
+               internal override bool ContainsGenericParameter {
+                       get { return element_type.ContainsGenericParameter; }
                }
 
-               internal TypeSpecification (TypeReference elementType) : base (string.Empty, string.Empty)
+               public override MetadataType MetadataType {
+                       get { return (MetadataType) etype; }
+               }
+
+               internal TypeSpecification (TypeReference type)
+                       : base (null, null)
                {
-                       m_elementType = elementType;
+                       this.element_type = type;
+                       this.token = new MetadataToken (TokenType.TypeSpec);
                }
 
-               public override TypeReference GetOriginalType ()
+               public sealed override TypeReference GetElementType ()
+               {
+                       return element_type.GetElementType ();
+               }
+       }
+
+       static partial class Mixin {
+
+               public static void CheckType (TypeReference type)
                {
-                       return m_elementType.GetOriginalType ();
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
                }
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs
new file mode 100644 (file)
index 0000000..d818d57
--- /dev/null
@@ -0,0 +1,270 @@
+//
+// TypeSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+       public abstract class TypeSystem {
+
+               sealed class CorlibTypeSystem : TypeSystem {
+
+                       public CorlibTypeSystem (ModuleDefinition module)
+                               : base (module)
+                       {
+                       }
+
+                       internal override TypeReference LookupType (string @namespace, string name)
+                       {
+                               var metadata = module.MetadataSystem;
+                               if (metadata.Types == null)
+                                       Initialize (module.Types);
+
+                               var types = metadata.Types;
+
+                               for (int i = 0; i < types.Length; i++) {
+                                       var type = types [i];
+                                       if (type == null)
+                                               continue;
+
+                                       if (type.Name == name && type.Namespace == @namespace)
+                                               return type;
+                               }
+
+                               return null;
+                       }
+
+                       static void Initialize (object obj)
+                       {
+                       }
+               }
+
+               sealed class CommonTypeSystem : TypeSystem {
+
+                       AssemblyNameReference corlib;
+
+                       public CommonTypeSystem (ModuleDefinition module)
+                               : base (module)
+                       {
+                       }
+
+                       internal override TypeReference LookupType (string @namespace, string name)
+                       {
+                               return CreateTypeReference (@namespace, name);
+                       }
+
+                       public AssemblyNameReference GetCorlibReference ()
+                       {
+                               if (corlib != null)
+                                       return corlib;
+
+                               const string mscorlib = "mscorlib";
+
+                               var references = module.AssemblyReferences;
+
+                               for (int i = 0; i < references.Count; i++) {
+                                       var reference = references [i];
+                                       if (reference.Name == mscorlib)
+                                               return corlib = reference;
+                               }
+
+                               corlib = new AssemblyNameReference {
+                                       Name = mscorlib,
+                                       Version = GetCorlibVersion (),
+                                       PublicKeyToken = new byte [] { 0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89 },
+                               };
+
+                               references.Add (corlib);
+
+                               return corlib;
+                       }
+
+                       Version GetCorlibVersion ()
+                       {
+                               switch (module.Runtime) {
+                               case TargetRuntime.Net_1_0:
+                               case TargetRuntime.Net_1_1:
+                                       return new Version (1, 0, 0, 0);
+                               case TargetRuntime.Net_2_0:
+                                       return new Version (2, 0, 0, 0);
+                               case TargetRuntime.Net_4_0:
+                                       return new Version (4, 0, 0, 0);
+                               default:
+                                       throw new NotSupportedException ();
+                               }
+                       }
+
+                       TypeReference CreateTypeReference (string @namespace, string name)
+                       {
+                               return new TypeReference (@namespace, name, module, GetCorlibReference ());
+                       }
+               }
+
+               readonly ModuleDefinition module;
+
+               TypeReference type_object;
+               TypeReference type_void;
+               TypeReference type_bool;
+               TypeReference type_char;
+               TypeReference type_sbyte;
+               TypeReference type_byte;
+               TypeReference type_int16;
+               TypeReference type_uint16;
+               TypeReference type_int32;
+               TypeReference type_uint32;
+               TypeReference type_int64;
+               TypeReference type_uint64;
+               TypeReference type_single;
+               TypeReference type_double;
+               TypeReference type_intptr;
+               TypeReference type_uintptr;
+               TypeReference type_string;
+               TypeReference type_typedref;
+
+               TypeSystem (ModuleDefinition module)
+               {
+                       this.module = module;
+               }
+
+               internal static TypeSystem CreateTypeSystem (ModuleDefinition module)
+               {
+                       if (IsCorlib (module))
+                               return new CorlibTypeSystem (module);
+
+                       return new CommonTypeSystem (module);
+               }
+
+               static bool IsCorlib (ModuleDefinition module)
+               {
+                       if (module.Assembly == null)
+                               return false;
+
+                       return module.Assembly.Name.Name == "mscorlib";
+               }
+
+               internal abstract TypeReference LookupType (string @namespace, string name);
+
+               TypeReference LookupSystemType (string name, ElementType element_type)
+               {
+                       var type = LookupType ("System", name);
+                       type.etype = element_type;
+                       return type;
+               }
+
+               TypeReference LookupSystemValueType (string name, ElementType element_type)
+               {
+                       var type = LookupSystemType (name, element_type);
+                       type.IsValueType = true;
+                       return type;
+               }
+
+               public IMetadataScope Corlib {
+                       get {
+                               var common = this as CommonTypeSystem;
+                               if (common == null)
+                                       return module;
+
+                               return common.GetCorlibReference ();
+                       }
+               }
+
+               public TypeReference Object {
+                       get { return type_object ?? (type_object = LookupSystemType ("Object", ElementType.Object)); }
+               }
+
+               public TypeReference Void {
+                       get { return type_void ?? (type_void = LookupSystemType ("Void", ElementType.Void)); }
+               }
+
+               public TypeReference Boolean {
+                       get { return type_bool ?? (type_bool = LookupSystemValueType ("Boolean", ElementType.Boolean)); }
+               }
+
+               public TypeReference Char {
+                       get { return type_char ?? (type_char = LookupSystemValueType ("Char", ElementType.Char)); }
+               }
+
+               public TypeReference SByte {
+                       get { return type_sbyte ?? (type_sbyte = LookupSystemValueType ("SByte", ElementType.I1)); }
+               }
+
+               public TypeReference Byte {
+                       get { return type_byte ?? (type_byte = LookupSystemValueType ("Byte", ElementType.U1)); }
+               }
+
+               public TypeReference Int16 {
+                       get { return type_int16 ?? (type_int16 = LookupSystemValueType ("Int16", ElementType.I2)); }
+               }
+
+               public TypeReference UInt16 {
+                       get { return type_uint16 ?? (type_uint16 = LookupSystemValueType ("UInt16", ElementType.U2)); }
+               }
+
+               public TypeReference Int32 {
+                       get { return type_int32 ?? (type_int32 = LookupSystemValueType ("Int32", ElementType.I4)); }
+               }
+
+               public TypeReference UInt32 {
+                       get { return type_uint32 ?? (type_uint32 = LookupSystemValueType ("UInt32", ElementType.U4)); }
+               }
+
+               public TypeReference Int64 {
+                       get { return type_int64 ?? (type_int64 = LookupSystemValueType ("Int64", ElementType.I8)); }
+               }
+
+               public TypeReference UInt64 {
+                       get { return type_uint64 ?? (type_uint64 = LookupSystemValueType ("UInt64", ElementType.U8)); }
+               }
+
+               public TypeReference Single {
+                       get { return type_single ?? (type_single = LookupSystemValueType ("Single", ElementType.R4)); }
+               }
+
+               public TypeReference Double {
+                       get { return type_double ?? (type_double = LookupSystemValueType ("Double", ElementType.R8)); }
+               }
+
+               public TypeReference IntPtr {
+                       get { return type_intptr ?? (type_intptr = LookupSystemValueType ("IntPtr", ElementType.I)); }
+               }
+
+               public TypeReference UIntPtr {
+                       get { return type_uintptr ?? (type_uintptr = LookupSystemValueType ("UIntPtr", ElementType.U)); }
+               }
+
+               public TypeReference String {
+                       get { return type_string ?? (type_string = LookupSystemType ("String", ElementType.String)); }
+               }
+
+               public TypeReference TypedReference {
+                       get { return type_typedref ?? (type_typedref = LookupSystemValueType ("TypedReference", ElementType.TypedByRef)); }
+               }
+       }
+}
index eeeff2a002df3de9b2ba8b0c851b88fa1bccc367..86d6daaa6a662ed5177724b5d7f8df399652c276 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain@gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 namespace Mono.Cecil {
 
        public enum VariantType {
+               None = 0,
                I2 = 2,
                I4 = 3,
                R4 = 4,
                R8 = 5,
                CY = 6,
-               DATE = 7,
-               BSTR = 8,
-               DISPATCH = 9,
-               ERROR = 10,
-               BOOL = 11,
-               VARIANT = 12,
-               UNKNOWN = 13,
-               DECIMAL = 14,
+               Date = 7,
+               BStr = 8,
+               Dispatch = 9,
+               Error = 10,
+               Bool = 11,
+               Variant = 12,
+               Unknown = 13,
+               Decimal = 14,
                I1 = 16,
                UI1 = 17,
                UI2 = 18,
                UI4 = 19,
-               INT = 22,
-               UINT = 23
+               Int = 22,
+               UInt = 23
        }
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs b/mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs
new file mode 100644 (file)
index 0000000..1137978
--- /dev/null
@@ -0,0 +1,417 @@
+//
+// Collection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Mono.Collections.Generic {
+
+       public class Collection<T> : IList<T>, IList {
+
+               internal T [] items;
+               internal int size;
+               int version;
+
+               public int Count {
+                       get { return size; }
+               }
+
+               public T this [int index] {
+                       get {
+                               if (index >= size)
+                                       throw new ArgumentOutOfRangeException ();
+
+                               return items [index];
+                       }
+                       set {
+                               CheckIndex (index);
+                               if (index == size)
+                                       throw new ArgumentOutOfRangeException ();
+
+                               OnSet (value, index);
+
+                               items [index] = value;
+                       }
+               }
+
+               bool ICollection<T>.IsReadOnly {
+                       get { return false; }
+               }
+
+               bool IList.IsFixedSize {
+                       get { return false; }
+               }
+
+               bool IList.IsReadOnly {
+                       get { return false; }
+               }
+
+               object IList.this [int index] {
+                       get { return this [index]; }
+                       set {
+                               CheckIndex (index);
+
+                               try {
+                                       this [index] = (T) value;
+                                       return;
+                               } catch (InvalidCastException) {
+                               } catch (NullReferenceException) {
+                               }
+
+                               throw new ArgumentException ();
+                       }
+               }
+
+               int ICollection.Count {
+                       get { return Count; }
+               }
+
+               bool ICollection.IsSynchronized {
+                       get { return false; }
+               }
+
+               object ICollection.SyncRoot {
+                       get { return this; }
+               }
+
+               public Collection ()
+               {
+                       items = Empty<T>.Array;
+               }
+
+               public Collection (int capacity)
+               {
+                       if (capacity < 0)
+                               throw new ArgumentOutOfRangeException ();
+
+                       items = new T [capacity];
+               }
+
+               public Collection (ICollection<T> items)
+               {
+                       this.items = new T [items.Count];
+                       items.CopyTo (this.items, 0);
+                       this.size = this.items.Length;
+               }
+
+               public void Add (T item)
+               {
+                       if (size == items.Length)
+                               Grow (1);
+
+                       OnAdd (item, size);
+
+                       items [size++] = item;
+                       version++;
+               }
+
+               public bool Contains (T item)
+               {
+                       return IndexOf (item) != -1;
+               }
+
+               public int IndexOf (T item)
+               {
+                       return Array.IndexOf (items, item, 0, size);
+               }
+
+               public void Insert (int index, T item)
+               {
+                       CheckIndex (index);
+                       if (size == items.Length)
+                               Grow (1);
+
+                       OnInsert (item, index);
+
+                       Shift (index, 1);
+                       items [index] = item;
+                       version++;
+               }
+
+               public void RemoveAt (int index)
+               {
+                       if (index < 0 || index >= size)
+                               throw new ArgumentOutOfRangeException ();
+
+                       var item = items [index];
+
+                       OnRemove (item, index);
+
+                       Shift (index, -1);
+                       Array.Clear (items, size, 1);
+                       version++;
+               }
+
+               public bool Remove (T item)
+               {
+                       var index = IndexOf (item);
+                       if (index == -1)
+                               return false;
+
+                       OnRemove (item, index);
+
+                       Shift (index, -1);
+                       Array.Clear (items, size, 1);
+                       version++;
+
+                       return true;
+               }
+
+               public void Clear ()
+               {
+                       OnClear ();
+
+                       Array.Clear (items, 0, size);
+                       size = 0;
+                       version++;
+               }
+
+               public void CopyTo (T [] array, int arrayIndex)
+               {
+                       Array.Copy (items, 0, array, arrayIndex, size);
+               }
+
+               public T [] ToArray ()
+               {
+                       var array = new T [size];
+                       Array.Copy (items, 0, array, 0, size);
+                       return array;
+               }
+
+               void CheckIndex (int index)
+               {
+                       if (index < 0 || index > size)
+                               throw new ArgumentOutOfRangeException ();
+               }
+
+               void Shift (int start, int delta)
+               {
+                       if (delta < 0)
+                               start -= delta;
+
+                       if (start < size)
+                               Array.Copy (items, start, items, start + delta, size - start);
+
+                       size += delta;
+
+                       if (delta < 0)
+                               Array.Clear (items, size, -delta);
+               }
+
+               protected virtual void OnAdd (T item, int index)
+               {
+               }
+
+               protected virtual void OnInsert (T item, int index)
+               {
+               }
+
+               protected virtual void OnSet (T item, int index)
+               {
+               }
+
+               protected virtual void OnRemove (T item, int index)
+               {
+               }
+
+               protected virtual void OnClear ()
+               {
+               }
+
+               internal virtual void Grow (int desired)
+               {
+                       int new_size = size + desired;
+                       if (new_size <= items.Length)
+                               return;
+
+                       const int default_capacity = 4;
+
+                       new_size = System.Math.Max (
+                               System.Math.Max (items.Length * 2, default_capacity),
+                               new_size);
+
+#if !CF
+                       Array.Resize (ref items, new_size);
+#else
+                       var array = new T [new_size];
+                       Array.Copy (items, array, size);
+                       items = array;
+#endif
+               }
+
+               int IList.Add (object value)
+               {
+                       try {
+                               Add ((T) value);
+                               return size - 1;
+                       } catch (InvalidCastException) {
+                       } catch (NullReferenceException) {
+                       }
+
+                       throw new ArgumentException ();
+               }
+
+               void IList.Clear ()
+               {
+                       Clear ();
+               }
+
+               bool IList.Contains (object value)
+               {
+                       return ((IList) this).IndexOf (value) > -1;
+               }
+
+               int IList.IndexOf (object value)
+               {
+                       try {
+                               return IndexOf ((T) value);
+                       } catch (InvalidCastException) {
+                       } catch (NullReferenceException) {
+                       }
+
+                       return -1;
+               }
+
+               void IList.Insert (int index, object value)
+               {
+                       CheckIndex (index);
+
+                       try {
+                               Insert (index, (T) value);
+                               return;
+                       } catch (InvalidCastException) {
+                       } catch (NullReferenceException) {
+                       }
+
+                       throw new ArgumentException ();
+               }
+
+               void IList.Remove (object value)
+               {
+                       try {
+                               Remove ((T) value);
+                       } catch (InvalidCastException) {
+                       } catch (NullReferenceException) {
+                       }
+               }
+
+               void IList.RemoveAt (int index)
+               {
+                       RemoveAt (index);
+               }
+
+               void ICollection.CopyTo (Array array, int index)
+               {
+                       Array.Copy (items, 0, array, index, size);
+               }
+
+               public Enumerator GetEnumerator ()
+               {
+                       return new Enumerator (this);
+               }
+
+               IEnumerator IEnumerable.GetEnumerator ()
+               {
+                       return new Enumerator (this);
+               }
+
+               IEnumerator<T> IEnumerable<T>.GetEnumerator ()
+               {
+                       return new Enumerator (this);
+               }
+
+               public struct Enumerator : IEnumerator<T>, IDisposable {
+
+                       Collection<T> collection;
+                       T current;
+
+                       int next;
+                       readonly int version;
+
+                       public T Current {
+                               get { return current; }
+                       }
+
+                       object IEnumerator.Current {
+                               get {
+                                       CheckState ();
+
+                                       if (next <= 0)
+                                               throw new InvalidOperationException ();
+
+                                       return current;
+                               }
+                       }
+
+                       internal Enumerator (Collection<T> collection)
+                               : this ()
+                       {
+                               this.collection = collection;
+                               this.version = collection.version;
+                       }
+
+                       public bool MoveNext ()
+                       {
+                               CheckState ();
+
+                               if (next < 0)
+                                       return false;
+
+                               if (next < collection.size) {
+                                       current = collection.items [next++];
+                                       return true;
+                               }
+
+                               next = -1;
+                               return false;
+                       }
+
+                       public void Reset ()
+                       {
+                               CheckState ();
+
+                               next = 0;
+                       }
+
+                       void CheckState ()
+                       {
+                               if (collection == null)
+                                       throw new ObjectDisposedException (GetType ().FullName);
+
+                               if (version != collection.version)
+                                       throw new InvalidOperationException ();
+                       }
+
+                       public void Dispose ()
+                       {
+                               collection = null;
+                       }
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs b/mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs
new file mode 100644 (file)
index 0000000..35c9cd8
--- /dev/null
@@ -0,0 +1,98 @@
+//
+// ReadOnlyCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace Mono.Collections.Generic {
+
+       public sealed class ReadOnlyCollection<T> : Collection<T>, IList {
+
+               static ReadOnlyCollection<T> empty;
+
+               public static ReadOnlyCollection<T> Empty {
+                       get { return empty ?? (empty = new ReadOnlyCollection<T> ()); }
+               }
+
+               bool IList.IsReadOnly {
+                       get { return true; }
+               }
+
+               private ReadOnlyCollection ()
+               {
+               }
+
+               public ReadOnlyCollection (T [] array)
+               {
+                       if (array == null)
+                               throw new ArgumentNullException ();
+
+                       this.items = array;
+                       this.size = array.Length;
+               }
+
+               public ReadOnlyCollection (Collection<T> collection)
+               {
+                       if (collection == null)
+                               throw new ArgumentNullException ();
+
+                       this.items = collection.items;
+                       this.size = collection.size;
+               }
+
+               internal override void Grow (int desired)
+               {
+                       throw new InvalidOperationException ();
+               }
+
+               protected override void OnAdd (T item, int index)
+               {
+                       throw new InvalidOperationException ();
+               }
+
+               protected override void OnClear ()
+               {
+                       throw new InvalidOperationException ();
+               }
+
+               protected override void OnInsert (T item, int index)
+               {
+                       throw new InvalidOperationException ();
+               }
+
+               protected override void OnRemove (T item, int index)
+               {
+                       throw new InvalidOperationException ();
+               }
+
+               protected override void OnSet (T item, int index)
+               {
+                       throw new InvalidOperationException ();
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs
new file mode 100644 (file)
index 0000000..26a4ba2
--- /dev/null
@@ -0,0 +1,243 @@
+//
+// CryptoConvert.cs - Crypto Convertion Routines
+//
+// Author:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Security.Cryptography;
+
+#if !(SILVERLIGHT || READ_ONLY)
+
+namespace Mono.Security.Cryptography {
+
+       static class CryptoConvert {
+
+               static private int ToInt32LE (byte [] bytes, int offset)
+               {
+                       return (bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset];
+               }
+
+               static private uint ToUInt32LE (byte [] bytes, int offset)
+               {
+                       return (uint)((bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset]);
+               }
+
+               static private byte[] Trim (byte[] array)
+               {
+                       for (int i=0; i < array.Length; i++) {
+                               if (array [i] != 0x00) {
+                                       byte[] result = new byte [array.Length - i];
+                                       Buffer.BlockCopy (array, i, result, 0, result.Length);
+                                       return result;
+                               }
+                       }
+                       return null;
+               }
+
+               static RSA FromCapiPrivateKeyBlob (byte[] blob, int offset)
+               {
+                       RSAParameters rsap = new RSAParameters ();
+                       try {
+                               if ((blob [offset]   != 0x07) ||                                // PRIVATEKEYBLOB (0x07)
+                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
+                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
+                                   (blob [offset+3] != 0x00) ||
+                                   (ToUInt32LE (blob, offset+8) != 0x32415352))        // DWORD magic = RSA2
+                                       throw new CryptographicException ("Invalid blob header");
+
+                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+                               // int algId = ToInt32LE (blob, offset+4);
+
+                               // DWORD bitlen
+                               int bitLen = ToInt32LE (blob, offset+12);
+
+                               // DWORD public exponent
+                               byte[] exp = new byte [4];
+                               Buffer.BlockCopy (blob, offset+16, exp, 0, 4);
+                               Array.Reverse (exp);
+                               rsap.Exponent = Trim (exp);
+
+                               int pos = offset+20;
+                               // BYTE modulus[rsapubkey.bitlen/8];
+                               int byteLen = (bitLen >> 3);
+                               rsap.Modulus = new byte [byteLen];
+                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+                               Array.Reverse (rsap.Modulus);
+                               pos += byteLen;
+
+                               // BYTE prime1[rsapubkey.bitlen/16];
+                               int byteHalfLen = (byteLen >> 1);
+                               rsap.P = new byte [byteHalfLen];
+                               Buffer.BlockCopy (blob, pos, rsap.P, 0, byteHalfLen);
+                               Array.Reverse (rsap.P);
+                               pos += byteHalfLen;
+
+                               // BYTE prime2[rsapubkey.bitlen/16];
+                               rsap.Q = new byte [byteHalfLen];
+                               Buffer.BlockCopy (blob, pos, rsap.Q, 0, byteHalfLen);
+                               Array.Reverse (rsap.Q);
+                               pos += byteHalfLen;
+
+                               // BYTE exponent1[rsapubkey.bitlen/16];
+                               rsap.DP = new byte [byteHalfLen];
+                               Buffer.BlockCopy (blob, pos, rsap.DP, 0, byteHalfLen);
+                               Array.Reverse (rsap.DP);
+                               pos += byteHalfLen;
+
+                               // BYTE exponent2[rsapubkey.bitlen/16];
+                               rsap.DQ = new byte [byteHalfLen];
+                               Buffer.BlockCopy (blob, pos, rsap.DQ, 0, byteHalfLen);
+                               Array.Reverse (rsap.DQ);
+                               pos += byteHalfLen;
+
+                               // BYTE coefficient[rsapubkey.bitlen/16];
+                               rsap.InverseQ = new byte [byteHalfLen];
+                               Buffer.BlockCopy (blob, pos, rsap.InverseQ, 0, byteHalfLen);
+                               Array.Reverse (rsap.InverseQ);
+                               pos += byteHalfLen;
+
+                               // ok, this is hackish but CryptoAPI support it so...
+                               // note: only works because CRT is used by default
+                               // http://bugzilla.ximian.com/show_bug.cgi?id=57941
+                               rsap.D = new byte [byteLen]; // must be allocated
+                               if (pos + byteLen + offset <= blob.Length) {
+                                       // BYTE privateExponent[rsapubkey.bitlen/8];
+                                       Buffer.BlockCopy (blob, pos, rsap.D, 0, byteLen);
+                                       Array.Reverse (rsap.D);
+                               }
+                       }
+                       catch (Exception e) {
+                               throw new CryptographicException ("Invalid blob.", e);
+                       }
+
+                       RSA rsa = null;
+                       try {
+                               rsa = RSA.Create ();
+                               rsa.ImportParameters (rsap);
+                       }
+                       catch (CryptographicException ce) {
+                               // this may cause problem when this code is run under
+                               // the SYSTEM identity on Windows (e.g. ASP.NET). See
+                               // http://bugzilla.ximian.com/show_bug.cgi?id=77559
+                               try {
+                                       CspParameters csp = new CspParameters ();
+                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
+                                       rsa = new RSACryptoServiceProvider (csp);
+                                       rsa.ImportParameters (rsap);
+                               }
+                               catch {
+                                       // rethrow original, not the later, exception if this fails
+                                       throw ce;
+                               }
+                       }
+                       return rsa;
+               }
+
+               static RSA FromCapiPublicKeyBlob (byte[] blob, int offset)
+               {
+                       try {
+                               if ((blob [offset]   != 0x06) ||                                // PUBLICKEYBLOB (0x06)
+                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
+                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
+                                   (blob [offset+3] != 0x00) ||
+                                   (ToUInt32LE (blob, offset+8) != 0x31415352))        // DWORD magic = RSA1
+                                       throw new CryptographicException ("Invalid blob header");
+
+                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+                               // int algId = ToInt32LE (blob, offset+4);
+
+                               // DWORD bitlen
+                               int bitLen = ToInt32LE (blob, offset+12);
+
+                               // DWORD public exponent
+                               RSAParameters rsap = new RSAParameters ();
+                               rsap.Exponent = new byte [3];
+                               rsap.Exponent [0] = blob [offset+18];
+                               rsap.Exponent [1] = blob [offset+17];
+                               rsap.Exponent [2] = blob [offset+16];
+
+                               int pos = offset+20;
+                               // BYTE modulus[rsapubkey.bitlen/8];
+                               int byteLen = (bitLen >> 3);
+                               rsap.Modulus = new byte [byteLen];
+                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+                               Array.Reverse (rsap.Modulus);
+
+                               RSA rsa = null;
+                               try {
+                                       rsa = RSA.Create ();
+                                       rsa.ImportParameters (rsap);
+                               }
+                               catch (CryptographicException) {
+                                       // this may cause problem when this code is run under
+                                       // the SYSTEM identity on Windows (e.g. ASP.NET). See
+                                       // http://bugzilla.ximian.com/show_bug.cgi?id=77559
+                                       CspParameters csp = new CspParameters ();
+                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
+                                       rsa = new RSACryptoServiceProvider (csp);
+                                       rsa.ImportParameters (rsap);
+                               }
+                               return rsa;
+                       }
+                       catch (Exception e) {
+                               throw new CryptographicException ("Invalid blob.", e);
+                       }
+               }
+
+               // PRIVATEKEYBLOB
+               // PUBLICKEYBLOB
+               static public RSA FromCapiKeyBlob (byte[] blob)
+               {
+                       return FromCapiKeyBlob (blob, 0);
+               }
+
+               static public RSA FromCapiKeyBlob (byte[] blob, int offset)
+               {
+                       if (blob == null)
+                               throw new ArgumentNullException ("blob");
+                       if (offset >= blob.Length)
+                               throw new ArgumentException ("blob is too small.");
+
+                       switch (blob [offset]) {
+                               case 0x00:
+                                       // this could be a public key inside an header
+                                       // like "sn -e" would produce
+                                       if (blob [offset + 12] == 0x06) {
+                                               return FromCapiPublicKeyBlob (blob, offset + 12);
+                                       }
+                                       break;
+                               case 0x06:
+                                       return FromCapiPublicKeyBlob (blob, offset);
+                               case 0x07:
+                                       return FromCapiPrivateKeyBlob (blob, offset);
+                       }
+                       throw new CryptographicException ("Unknown blob format.");
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs
new file mode 100644 (file)
index 0000000..f504f5e
--- /dev/null
@@ -0,0 +1,177 @@
+//
+// CryptoService.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Reflection;
+using System.Security.Cryptography;
+
+#if !READ_ONLY
+
+#if !SILVERLIGHT && !CF
+using System.Runtime.Serialization;
+using Mono.Security.Cryptography;
+#endif
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil {
+
+       // Most of this code has been adapted
+       // from Jeroen Frijters' fantastic work
+       // in IKVM.Reflection.Emit. Thanks!
+
+       static class CryptoService {
+
+#if !SILVERLIGHT && !CF
+               public static void StrongName (Stream stream, ImageWriter writer, StrongNameKeyPair key_pair)
+               {
+                       int strong_name_pointer;
+
+                       var strong_name = CreateStrongName (key_pair, HashStream (stream, writer, out strong_name_pointer));
+                       PatchStrongName (stream, strong_name_pointer, strong_name);
+               }
+
+               static void PatchStrongName (Stream stream, int strong_name_pointer, byte [] strong_name)
+               {
+                       stream.Seek (strong_name_pointer, SeekOrigin.Begin);
+                       stream.Write (strong_name, 0, strong_name.Length);
+               }
+
+               static byte [] CreateStrongName (StrongNameKeyPair key_pair, byte [] hash)
+               {
+                       const string hash_algo = "SHA1";
+
+                       using (var rsa = key_pair.CreateRSA ()) {
+                               var formatter = new RSAPKCS1SignatureFormatter (rsa);
+                               formatter.SetHashAlgorithm (hash_algo);
+
+                               byte [] signature = formatter.CreateSignature (hash);
+                               Array.Reverse (signature);
+
+                               return signature;
+                       }
+               }
+
+               static byte [] HashStream (Stream stream, ImageWriter writer, out int strong_name_pointer)
+               {
+                       const int buffer_size = 8192;
+
+                       var text = writer.text;
+                       var header_size = (int) writer.GetHeaderSize ();
+                       var text_section_pointer = (int) text.PointerToRawData;
+                       var strong_name_directory = writer.GetStrongNameSignatureDirectory ();
+
+                       if (strong_name_directory.Size == 0)
+                               throw new InvalidOperationException ();
+
+                       strong_name_pointer = (int) (text_section_pointer
+                               + (strong_name_directory.VirtualAddress - text.VirtualAddress));
+                       var strong_name_length = (int) strong_name_directory.Size;
+
+                       var sha1 = new SHA1Managed ();
+                       var buffer = new byte [buffer_size];
+                       using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write)) {
+
+                               stream.Seek (0, SeekOrigin.Begin);
+                               CopyStreamChunk (stream, crypto_stream, buffer, header_size);
+
+                               stream.Seek (text_section_pointer, SeekOrigin.Begin);
+                               CopyStreamChunk (stream, crypto_stream, buffer, (int) strong_name_pointer - text_section_pointer);
+
+                               stream.Seek (strong_name_length, SeekOrigin.Current);
+                               CopyStreamChunk (stream, crypto_stream, buffer, (int) (stream.Length - (strong_name_pointer + strong_name_length)));
+                       }
+
+                       return sha1.Hash;
+               }
+#endif
+               static void CopyStreamChunk (Stream stream, Stream dest_stream, byte [] buffer, int length)
+               {
+                       while (length > 0) {
+                               int read = stream.Read (buffer, 0, System.Math.Min (buffer.Length, length));
+                               dest_stream.Write (buffer, 0, read);
+                               length -= read;
+                       }
+               }
+
+               public static byte [] ComputeHash (string file)
+               {
+                       if (!File.Exists (file))
+                               return Empty<byte>.Array;
+
+                       const int buffer_size = 8192;
+
+                       var sha1 = new SHA1Managed ();
+
+                       using (var stream = new FileStream (file, FileMode.Open, FileAccess.Read, FileShare.Read)) {
+
+                               var buffer = new byte [buffer_size];
+
+                               using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write))
+                                       CopyStreamChunk (stream, crypto_stream, buffer, (int) stream.Length);
+                       }
+
+                       return sha1.Hash;
+               }
+       }
+
+#if !SILVERLIGHT && !CF
+       static partial class Mixin {
+
+               public static RSA CreateRSA (this StrongNameKeyPair key_pair)
+               {
+                       byte [] key;
+                       string key_container;
+
+                       if (!TryGetKeyContainer (key_pair, out key, out key_container))
+                               return CryptoConvert.FromCapiKeyBlob (key);
+
+                       var parameters = new CspParameters {
+                               Flags = CspProviderFlags.UseMachineKeyStore,
+                               KeyContainerName = key_container,
+                               KeyNumber = 2,
+                       };
+
+                       return new RSACryptoServiceProvider (parameters);
+               }
+
+               static bool TryGetKeyContainer (ISerializable key_pair, out byte [] key, out string key_container)
+               {
+                       var info = new SerializationInfo (typeof (StrongNameKeyPair), new FormatterConverter ());
+                       key_pair.GetObjectData (info, new StreamingContext ());
+
+                       key = (byte []) info.GetValue ("_keyPairArray", typeof (byte []));
+                       key_container = info.GetString ("_keyPairContainer");
+                       return key_container != null;
+               }
+       }
+#endif
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/ChangeLog b/mcs/class/Mono.Cecil/Mono.Xml/ChangeLog
deleted file mode 100644 (file)
index 2fbc0ef..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-2005-06-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SmallXmlParser.cs, SecurityParser.cs : they can be CLSCompliant now.
-
-2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SmallXmlParser.cs,
-         SecurityParser.cs : Use new SmallXmlParser.cs instead of MiniParser.
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * MiniParser.cs: Fixed warning (l4) for unused variables. Removed
-       duplicate (and identical) license.
-
-2004-05-14  Marek Safar  <marek.safar@seznam.cz>
-
-       * MiniParser.cs, SecurityParser.cs: [CLSCompliant (false)]
-       only for public mode.
-
-2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * SecurityParser.cs: Parse an XML string and convert it to a
-       SecurityElement object.
-
-2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * MiniParser.cs: Renamed namespace to match new location.
-
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/SecurityParser.cs b/mcs/class/Mono.Cecil/Mono.Xml/SecurityParser.cs
deleted file mode 100644 (file)
index 311a316..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// Mono.Xml.SecurityParser.cs class implementation
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Security;
-
-namespace Mono.Xml {
-
-       // convert an XML document into SecurityElement objects
-       internal sealed class SecurityParser : SmallXmlParser, SmallXmlParser.IContentHandler {
-
-               private SecurityElement root;
-
-               public SecurityParser () : base ()
-               {
-                       stack = new Stack ();
-               }
-
-               public void LoadXml (string xml)
-               {
-                       root = null;
-#if CF_1_0
-                       stack = new Stack ();
-#else
-                       stack.Clear ();
-#endif
-                       Parse (new StringReader (xml), this);
-               }
-
-               public SecurityElement ToXml ()
-               {
-                       return root;
-               }
-
-               // IContentHandler
-
-               private SecurityElement current;
-               private Stack stack;
-
-               public void OnStartParsing (SmallXmlParser parser) {}
-
-               public void OnProcessingInstruction (string name, string text) {}
-
-               public void OnIgnorableWhitespace (string s) {}
-
-               public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
-               {
-                       SecurityElement newel = new SecurityElement (name);
-                       if (root == null) {
-                               root = newel;
-                               current = newel;
-                       }
-                       else {
-                               SecurityElement parent = (SecurityElement) stack.Peek ();
-                               parent.AddChild (newel);
-                       }
-                       stack.Push (newel);
-                       current = newel;
-                       // attributes
-                       int n = attrs.Length;
-                       for (int i=0; i < n; i++)
-                               current.AddAttribute (attrs.GetName (i), attrs.GetValue (i));
-               }
-
-               public void OnEndElement (string name)
-               {
-                       current = (SecurityElement) stack.Pop ();
-               }
-
-               public void OnChars (string ch)
-               {
-                       current.Text = ch;
-               }
-
-               public void OnEndParsing (SmallXmlParser parser) {}
-       }
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs b/mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs
deleted file mode 100644 (file)
index 1766708..0000000
+++ /dev/null
@@ -1,637 +0,0 @@
-//
-// SmallXmlParser.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// small xml parser that is mostly compatible with
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Text;
-
-namespace Mono.Xml
-{
-       internal sealed class DefaultHandler : SmallXmlParser.IContentHandler
-       {
-               public void OnStartParsing (SmallXmlParser parser)
-               {
-               }
-
-               public void OnEndParsing (SmallXmlParser parser)
-               {
-               }
-
-               public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
-               {
-               }
-
-               public void OnEndElement (string name)
-               {
-               }
-
-               public void OnChars (string s)
-               {
-               }
-
-               public void OnIgnorableWhitespace (string s)
-               {
-               }
-
-               public void OnProcessingInstruction (string name, string text)
-               {
-               }
-       }
-
-       internal class SmallXmlParser
-       {
-               public interface IContentHandler
-               {
-                       void OnStartParsing (SmallXmlParser parser);
-                       void OnEndParsing (SmallXmlParser parser);
-                       void OnStartElement (string name, IAttrList attrs);
-                       void OnEndElement (string name);
-                       void OnProcessingInstruction (string name, string text);
-                       void OnChars (string text);
-                       void OnIgnorableWhitespace (string text);
-               }
-
-               public interface IAttrList
-               {
-                       int Length { get; }
-                       bool IsEmpty { get; }
-                       string GetName (int i);
-                       string GetValue (int i);
-                       string GetValue (string name);
-                       string [] Names { get; }
-                       string [] Values { get; }
-               }
-
-               sealed class AttrListImpl : IAttrList
-               {
-                       public int Length {
-                               get { return attrNames.Count; }
-                       }
-                       public bool IsEmpty {
-                               get { return attrNames.Count == 0; }
-                       }
-                       public string GetName (int i)
-                       {
-                               return (string) attrNames [i];
-                       }
-                       public string GetValue (int i)
-                       {
-                               return (string) attrValues [i];
-                       }
-                       public string GetValue (string name)
-                       {
-                               for (int i = 0; i < attrNames.Count; i++)
-                                       if ((string) attrNames [i] == name)
-                                               return (string) attrValues [i];
-                               return null;
-                       }
-                       public string [] Names {
-                               get { return (string []) attrNames.ToArray (typeof (string)); }
-                       }
-                       public string [] Values {
-                               get { return (string []) attrValues.ToArray (typeof (string)); }
-                       }
-
-                       ArrayList attrNames = new ArrayList ();
-                       ArrayList attrValues = new ArrayList ();
-
-                       internal void Clear ()
-                       {
-                               attrNames.Clear ();
-                               attrValues.Clear ();
-                       }
-
-                       internal void Add (string name, string value)
-                       {
-                               attrNames.Add (name);
-                               attrValues.Add (value);
-                       }
-               }
-
-               IContentHandler handler;
-               TextReader reader;
-               Stack elementNames = new Stack ();
-               Stack xmlSpaces = new Stack ();
-               string xmlSpace;
-               StringBuilder buffer = new StringBuilder (200);
-               char [] nameBuffer = new char [30];
-               bool isWhitespace;
-
-               AttrListImpl attributes = new AttrListImpl ();
-               int line = 1, column;
-               bool resetColumn;
-
-               public SmallXmlParser ()
-               {
-               }
-
-               private Exception Error (string msg)
-               {
-                       return new SmallXmlParserException (msg, line, column);
-               }
-
-               private Exception UnexpectedEndError ()
-               {
-                       string [] arr = new string [elementNames.Count];
-                       // COMPACT FRAMEWORK NOTE: CopyTo is not visible through the Stack class
-                       (elementNames as ICollection).CopyTo (arr, 0);
-                       return Error (String.Format (
-                                                         "Unexpected end of stream. Element stack content is {0}", String.Join (",", arr)));
-               }
-
-
-               private bool IsNameChar (char c, bool start)
-               {
-                       switch (c) {
-                       case ':':
-                       case '_':
-                               return true;
-                       case '-':
-                       case '.':
-                               return !start;
-                       }
-                       if (c > 0x100) { // optional condition for optimization
-                               switch (c) {
-                               case '\u0559':
-                               case '\u06E5':
-                               case '\u06E6':
-                                       return true;
-                               }
-                               if ('\u02BB' <= c && c <= '\u02C1')
-                                       return true;
-                       }
-                       switch (Char.GetUnicodeCategory (c)) {
-                       case UnicodeCategory.LowercaseLetter:
-                       case UnicodeCategory.UppercaseLetter:
-                       case UnicodeCategory.OtherLetter:
-                       case UnicodeCategory.TitlecaseLetter:
-                       case UnicodeCategory.LetterNumber:
-                               return true;
-                       case UnicodeCategory.SpacingCombiningMark:
-                       case UnicodeCategory.EnclosingMark:
-                       case UnicodeCategory.NonSpacingMark:
-                       case UnicodeCategory.ModifierLetter:
-                       case UnicodeCategory.DecimalDigitNumber:
-                               return !start;
-                       default:
-                               return false;
-                       }
-               }
-
-               private bool IsWhitespace (int c)
-               {
-                       switch (c) {
-                       case ' ':
-                       case '\r':
-                       case '\t':
-                       case '\n':
-                               return true;
-                       default:
-                               return false;
-                       }
-               }
-
-
-               public void SkipWhitespaces ()
-               {
-                       SkipWhitespaces (false);
-               }
-
-               private void HandleWhitespaces ()
-               {
-                       while (IsWhitespace (Peek ()))
-                               buffer.Append ((char) Read ());
-                       if (Peek () != '<' && Peek () >= 0)
-                               isWhitespace = false;
-               }
-
-               public void SkipWhitespaces (bool expected)
-               {
-                       while (true) {
-                               switch (Peek ()) {
-                               case ' ':
-                               case '\r':
-                               case '\t':
-                               case '\n':
-                                       Read ();
-                                       if (expected)
-                                               expected = false;
-                                       continue;
-                               }
-                               if (expected)
-                                       throw Error ("Whitespace is expected.");
-                               return;
-                       }
-               }
-
-
-               private int Peek ()
-               {
-                       return reader.Peek ();
-               }
-
-               private int Read ()
-               {
-                       int i = reader.Read ();
-                       if (i == '\n')
-                               resetColumn = true;
-                       if (resetColumn) {
-                               line++;
-                               resetColumn = false;
-                               column = 1;
-                       }
-                       else
-                               column++;
-                       return i;
-               }
-
-               public void Expect (int c)
-               {
-                       int p = Read ();
-                       if (p < 0)
-                               throw UnexpectedEndError ();
-                       else if (p != c)
-                               throw Error (String.Format ("Expected '{0}' but got {1}", (char) c, (char) p));
-               }
-
-               private string ReadUntil (char until, bool handleReferences)
-               {
-                       while (true) {
-                               if (Peek () < 0)
-                                       throw UnexpectedEndError ();
-                               char c = (char) Read ();
-                               if (c == until)
-                                       break;
-                               else if (handleReferences && c == '&')
-                                       ReadReference ();
-                               else
-                                       buffer.Append (c);
-                       }
-                       string ret = buffer.ToString ();
-                       buffer.Length = 0;
-                       return ret;
-               }
-
-               public string ReadName ()
-               {
-                       int idx = 0;
-                       if (Peek () < 0 || !IsNameChar ((char) Peek (), true))
-                               throw Error ("XML name start character is expected.");
-                       for (int i = Peek (); i >= 0; i = Peek ()) {
-                               char c = (char) i;
-                               if (!IsNameChar (c, false))
-                                       break;
-                               if (idx == nameBuffer.Length) {
-                                       char [] tmp = new char [idx * 2];
-                                       // COMPACT FRAMEWORK NOTE: Array.Copy(sourceArray, destinationArray, count) is not available.
-                                       Array.Copy (nameBuffer, 0, tmp, 0, idx);
-                                       nameBuffer = tmp;
-                               }
-                               nameBuffer [idx++] = c;
-                               Read ();
-                       }
-                       if (idx == 0)
-                               throw Error ("Valid XML name is expected.");
-                       return new string (nameBuffer, 0, idx);
-               }
-
-
-               public void Parse (TextReader input, IContentHandler handler)
-               {
-                       this.reader = input;
-                       this.handler = handler;
-
-                       handler.OnStartParsing (this);
-
-                       while (Peek () >= 0)
-                               ReadContent ();
-                       HandleBufferedContent ();
-                       if (elementNames.Count > 0)
-                               throw Error (String.Format ("Insufficient close tag: {0}", elementNames.Peek ()));
-
-                       handler.OnEndParsing (this);
-
-                       Cleanup ();
-               }
-
-               private void Cleanup ()
-               {
-                       line = 1;
-                       column = 0;
-                       handler = null;
-                       reader = null;
-#if CF_1_0
-                       elementNames = new Stack ();
-                       xmlSpaces = new Stack ();
-#else
-                       elementNames.Clear ();
-                       xmlSpaces.Clear ();
-#endif
-                       attributes.Clear ();
-                       buffer.Length = 0;
-                       xmlSpace = null;
-                       isWhitespace = false;
-               }
-
-               public void ReadContent ()
-               {
-                       string name;
-                       if (IsWhitespace (Peek ())) {
-                               if (buffer.Length == 0)
-                                       isWhitespace = true;
-                               HandleWhitespaces ();
-                       }
-                       if (Peek () == '<') {
-                               Read ();
-                               switch (Peek ()) {
-                               case '!': // declarations
-                                       Read ();
-                                       if (Peek () == '[') {
-                                               Read ();
-                                               if (ReadName () != "CDATA")
-                                                       throw Error ("Invalid declaration markup");
-                                               Expect ('[');
-                                               ReadCDATASection ();
-                                               return;
-                                       }
-                                       else if (Peek () == '-') {
-                                               ReadComment ();
-                                               return;
-                                       }
-                                       else if (ReadName () != "DOCTYPE")
-                                               throw Error ("Invalid declaration markup.");
-                                       else
-                                               throw Error ("This parser does not support document type.");
-                               case '?': // PIs
-                                       HandleBufferedContent ();
-                                       Read ();
-                                       name = ReadName ();
-                                       SkipWhitespaces ();
-                                       string text = String.Empty;
-                                       if (Peek () != '?') {
-                                               while (true) {
-                                                       text += ReadUntil ('?', false);
-                                                       if (Peek () == '>')
-                                                               break;
-                                                       text += "?";
-                                               }
-                                       }
-                                       handler.OnProcessingInstruction (
-                                               name, text);
-                                       Expect ('>');
-                                       return;
-                               case '/': // end tags
-                                       HandleBufferedContent ();
-                                       if (elementNames.Count == 0)
-                                               throw UnexpectedEndError ();
-                                       Read ();
-                                       name = ReadName ();
-                                       SkipWhitespaces ();
-                                       string expected = (string) elementNames.Pop ();
-                                       xmlSpaces.Pop ();
-                                       if (xmlSpaces.Count > 0)
-                                               xmlSpace = (string) xmlSpaces.Peek ();
-                                       else
-                                               xmlSpace = null;
-                                       if (name != expected)
-                                               throw Error (String.Format ("End tag mismatch: expected {0} but found {1}", expected, name));
-                                       handler.OnEndElement (name);
-                                       Expect ('>');
-                                       return;
-                               default: // start tags (including empty tags)
-                                       HandleBufferedContent ();
-                                       name = ReadName ();
-                                       while (Peek () != '>' && Peek () != '/')
-                                               ReadAttribute (attributes);
-                                       handler.OnStartElement (name, attributes);
-                                       attributes.Clear ();
-                                       SkipWhitespaces ();
-                                       if (Peek () == '/') {
-                                               Read ();
-                                               handler.OnEndElement (name);
-                                       }
-                                       else {
-                                               elementNames.Push (name);
-                                               xmlSpaces.Push (xmlSpace);
-                                       }
-                                       Expect ('>');
-                                       return;
-                               }
-                       }
-                       else
-                               ReadCharacters ();
-               }
-
-               private void HandleBufferedContent ()
-               {
-                       if (buffer.Length == 0)
-                               return;
-                       if (isWhitespace)
-                               handler.OnIgnorableWhitespace (buffer.ToString ());
-                       else
-                               handler.OnChars (buffer.ToString ());
-                       buffer.Length = 0;
-                       isWhitespace = false;
-               }
-
-               private void ReadCharacters ()
-               {
-                       isWhitespace = false;
-                       while (true) {
-                               int i = Peek ();
-                               switch (i) {
-                               case -1:
-                                       return;
-                               case '<':
-                                       return;
-                               case '&':
-                                       Read ();
-                                       ReadReference ();
-                                       continue;
-                               default:
-                                       buffer.Append ((char) Read ());
-                                       continue;
-                               }
-                       }
-               }
-
-               private void ReadReference ()
-               {
-                       if (Peek () == '#') {
-                               // character reference
-                               Read ();
-                               ReadCharacterReference ();
-                       } else {
-                               string name = ReadName ();
-                               Expect (';');
-                               switch (name) {
-                               case "amp":
-                                       buffer.Append ('&');
-                                       break;
-                               case "quot":
-                                       buffer.Append ('"');
-                                       break;
-                               case "apos":
-                                       buffer.Append ('\'');
-                                       break;
-                               case "lt":
-                                       buffer.Append ('<');
-                                       break;
-                               case "gt":
-                                       buffer.Append ('>');
-                                       break;
-                               default:
-                                       throw Error ("General non-predefined entity reference is not supported in this parser.");
-                               }
-                       }
-               }
-
-               private int ReadCharacterReference ()
-               {
-                       int n = 0;
-                       if (Peek () == 'x') { // hex
-                               Read ();
-                               for (int i = Peek (); i >= 0; i = Peek ()) {
-                                       if ('0' <= i && i <= '9')
-                                               n = n << 4 + i - '0';
-                                       else if ('A' <= i && i <='F')
-                                               n = n << 4 + i - 'A' + 10;
-                                       else if ('a' <= i && i <='f')
-                                               n = n << 4 + i - 'a' + 10;
-                                       else
-                                               break;
-                                       Read ();
-                               }
-                       } else {
-                               for (int i = Peek (); i >= 0; i = Peek ()) {
-                                       if ('0' <= i && i <= '9')
-                                               n = n << 4 + i - '0';
-                                       else
-                                               break;
-                                       Read ();
-                               }
-                       }
-                       return n;
-               }
-
-               private void ReadAttribute (AttrListImpl a)
-               {
-                       SkipWhitespaces (true);
-                       if (Peek () == '/' || Peek () == '>')
-                       // came here just to spend trailing whitespaces
-                               return;
-
-                       string name = ReadName ();
-                       string value;
-                       SkipWhitespaces ();
-                       Expect ('=');
-                       SkipWhitespaces ();
-                       switch (Read ()) {
-                       case '\'':
-                               value = ReadUntil ('\'', true);
-                               break;
-                       case '"':
-                               value = ReadUntil ('"', true);
-                               break;
-                       default:
-                               throw Error ("Invalid attribute value markup.");
-                       }
-                       if (name == "xml:space")
-                               xmlSpace = value;
-                       a.Add (name, value);
-               }
-
-               private void ReadCDATASection ()
-               {
-                       int nBracket = 0;
-                       while (true) {
-                               if (Peek () < 0)
-                                       throw UnexpectedEndError ();
-                               char c = (char) Read ();
-                               if (c == ']')
-                                       nBracket++;
-                               else if (c == '>' && nBracket > 1) {
-                                       for (int i = nBracket; i > 2; i--)
-                                               buffer.Append (']');
-                                       break;
-                               }
-                               else {
-                                       for (int i = 0; i < nBracket; i++)
-                                               buffer.Append (']');
-                                       nBracket = 0;
-                                       buffer.Append (c);
-                               }
-                       }
-               }
-
-               private void ReadComment ()
-               {
-                       Expect ('-');
-                       Expect ('-');
-                       while (true) {
-                               if (Read () != '-')
-                                       continue;
-                               if (Read () != '-')
-                                       continue;
-                               if (Read () != '>')
-                                       throw Error ("'--' is not allowed inside comment markup.");
-                               break;
-                       }
-               }
-       }
-
-       internal sealed class SmallXmlParserException : SystemException
-       {
-               int line;
-               int column;
-
-               public SmallXmlParserException (string msg, int line, int column)
-               : base (String.Format ("{0}. At ({1},{2})", msg, line, column))
-               {
-                       this.line = line;
-                       this.column = column;
-               }
-
-               public int Line {
-                       get { return line; }
-               }
-
-               public int Column {
-                       get { return column; }
-               }
-       }
-}
-
-
-
diff --git a/mcs/class/Mono.Cecil/Mono/Actions.cs b/mcs/class/Mono.Cecil/Mono/Actions.cs
new file mode 100644 (file)
index 0000000..071b149
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// Actions.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !NET_3_5 && !NET_4_0
+
+namespace Mono {
+       //delegate void Action ();
+       //delegate void Action<T1, T2> (T1 arg1, T2 arg2);
+       //delegate void Action<T1, T2, T3> (T1 arg1, T2 arg2, T3 arg3);
+       //delegate void Action<T1, T2, T3, T4> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono/Empty.cs b/mcs/class/Mono.Cecil/Mono/Empty.cs
new file mode 100644 (file)
index 0000000..70739af
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// Empty.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Mono {
+
+       static class Empty<T> {
+
+               public static readonly T [] Array = new T [0];
+       }
+}
+
+namespace Mono.Cecil {
+
+       static partial class Mixin {
+
+               public static bool IsNullOrEmpty<T> (this T [] self)
+               {
+                       return self == null || self.Length == 0;
+               }
+
+               public static bool IsNullOrEmpty<T> (this ICollection<T> self)
+               {
+                       return self == null || self.Count == 0;
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cecil/Mono/Funcs.cs b/mcs/class/Mono.Cecil/Mono/Funcs.cs
new file mode 100644 (file)
index 0000000..40f2225
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// Funcs.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !NET_3_5 && !NET_4_0
+
+namespace Mono {
+       delegate TResult Func<TResult> ();
+       delegate TResult Func<T, TResult> (T arg1);
+       delegate TResult Func<T1, T2, TResult> (T1 arg1, T2 arg2);
+       //delegate TResult Func<T1, T2, T3, TResult> (T1 arg1, T2 arg2, T3 arg3);
+       //delegate TResult Func<T1, T2, T3, T4, TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/NEWS b/mcs/class/Mono.Cecil/NEWS
deleted file mode 100644 (file)
index a8518da..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-2005-10-31  Jb Evain  <jbevain@gmail.com>
-
-       * Release of Mono.Cecil 0.1 "Trick or Treat"
diff --git a/mcs/class/Mono.Cecil/NOTES.txt b/mcs/class/Mono.Cecil/NOTES.txt
new file mode 100644 (file)
index 0000000..6f3618b
--- /dev/null
@@ -0,0 +1,189 @@
+namespaces:
+
+       Mono.Cecil.Binary: deleted,
+       Mono.Cecil.Metadata: metadata table/rows: deleted.
+
+collections:
+
+       * Cecil now only exposes Collection of T as a public collection API.
+
+types:
+
+Mono.Cecil
+
+       - AssemblyFactory:
+               Use static Read methods on ModuleDefinition and AssemblyDefinition
+               to get them.
+
+       + ReadingMode:
+               specifies if the assembly is either loaded in a deffered
+               or immediate fashion.
+
+       + ReaderParameters
+               + ReadingMode
+               + ISymbolReaderProvider
+
+       + WriterParameters
+               + ISymbolWriterProvider
+
+       * AssemblyDefinition:
+
+                       * Runtime, Kind: moved to ModuleDefiniton
+
+       * ModuleDefinition:
+
+               properties:
+
+                       - Image
+                       - MemberReferences
+                       - TypeReferences
+                       - ExternTypes
+
+                       * Main -> IsMain. (set removed) : bool
+                       + FullyQualifiedName : string
+                       + Kind : ModuleKind
+                       + Runtime : TargetRuntime
+                       + Architecture : TargetArchitecture
+                       + Attributes : ModuleAttributes
+                       + HasSymbols : bool
+                       + HasExportedTypes : bool
+                       + ExportedTypes : ExportedTypeCollection
+
+                       * Types: doesn't contain NestedTypes anymore.
+
+       - AssemblyKind:
+               renamed to ModuleKind.
+
+       + ModuleKind:
+               + NetModule
+
+       + TargetArchitecture:
+               + I386
+               + AMD64
+               + IA64
+
+       + ModuleAttributes:
+               + ILOnly
+               + Required32Bit
+               + StrongNameSigned
+
+       * FieldDefinition:
+
+               * RVA : int
+
+       * IMethodSignature:
+               * ReturnType : TypeReference
+               + MethodReturnType : MethodReturnType
+
+       * TypeDefinition:
+               - HasConstructors
+               - Constructors
+               * ctor: swapped namespace and name parameter.
+
+       * ParameterDefinition:
+               * Method : IMethodSignature
+               * Sequence -> Index : int (0 based instead of 1)
+
+       * ArrayType:
+               * IsSizedArray -> IsVector : bool
+
+       * IHasConstant -> IConstantProvider
+       * IHasSecurity -> ISecurityDeclarationProvider
+       * IHasMarshal -> IMarshalInfoProvider
+
+       * MemberReference
+               + Module : ModuleDefinition
+
+       * MethodDefinition:
+               - This: moved to MethodBody
+               + HasPInvokeInfo : bool
+
+       * PInvokeInfo:
+               - Method
+
+       * MarshalSpec -> MarshalInfo
+
+       - ModType
+
+       * ModifierRequiredType -> RequiredModifierType
+       * ModifierOptionalType -> OptionalModifierType
+       * ReferenceType -> ByReferenceType
+
+       * TypeReference
+               + IsArray : bool
+               + IsPointer : bool
+               + IsByReference : bool
+               + IsRequiredModifier : bool
+               + IsOptionalModifier : bool
+               + IsSentinel : bool
+               + IsGenericInstance : bool
+               + IsGenericParameter : bool
+               + IsPinned : bool
+               + IsFunctionPointer : bool
+               + IsDefinition : bool
+
+               * GetOriginalType -> GetElementType
+               * ctor: swapped namespace and name parameter.
+
+       * MethodReference
+               + IsGenericInstance : bool
+               + IsDefinition : bool
+
+               * GetOriginalMethod -> GetElementMethod
+
+       * FieldReference
+               + IsDefinition : bool
+
+       + CustomAttributeArgument
+               + Type : TypeReference
+               + Value : object
+
+       * CustomAttribute
+               * ConstructorParameters -> ConstructorArguments : CustomAttributeArgumentCollection
+               * Properties : CustomAttributeNamedArgumentCollection
+               * Fields : CustomAttributeNamedArgumentCollection
+
+       * SecurityDeclaration
+               - PermissionSet
+               + SecurityAttributes : SecurityAttributeCollection
+
+       + SecurityAttribute
+               + AttributeType : TypeReference
+               + Fields : CustomAttributeNamedArgumentCollection
+               + Properties : CustomAttributeNamedArgumentCollection
+
+       * IMetadataScope
+               + MetadataScopeType
+
+       + MetadataScopeType
+               + AssemblyNameReference
+               + ModuleDefinition
+               + ModuleReference
+
+Mono.Cecil.Cil:
+
+       * ExceptionHandler
+               * Type -> HandlerType : TypeReference
+
+       * VariableDefinition
+               - Method
+
+       * Document* : from Guid to enums, the reader/writers are responsible for assigning them.
+
+       * MethodBody
+               * LocalVarToken : MetadataToken
+               * MaxStack -> MaxStackSize : int
+               + ThisParameter: from MethodDefinition
+
+       * OperandType
+               * ShortInlineParam : ShortInlineArg
+               * InlineParam : InlineArg
+
+       * CilWorker -> ILProcessor
+
+TODO:
+
+       * Mono.Cecil.Rocks
+               * ILGenerator
+
+       * HOWTOs
diff --git a/mcs/class/Mono.Cecil/README b/mcs/class/Mono.Cecil/README
deleted file mode 100644 (file)
index b95c65e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-Cecil is a library to generate and inspect programs and libraries in the ECMA CIL format.
-
-* Building
-
-       The standard Makefile works inside /mcs (SVN or tarball). If you want to build
-       Cecil as a standalone library (e.g. in /cecil SVN) you'll need to:
-
-               ./configure --prefix=/your/prefix
-               make -f standalone.make
-               make -f standalone.make install
-
-* Bugs
-
-       Please report bugs at:
-               http://bugzilla.novell.com,
-               Product: Mono: Class Library
-               Component: Cecil
-
-* Layout
-
-       CodeGen/
-               Here is a ruby code generation script. Do not modify generated files.
-               Please modify template then run:
-
-                       ./cecil-gen.rb
-
-               in this folder. If you add or remove files, please run:
-
-                       ./cecil-gen-sources.rb
-
-               to update the file Mono.Cecil.dll.sources
-
-       Mono.Cecil/
-               General implementation of Cecil.
-
-       Mono.Cecil.Binary/
-               Here are files dealing with PE format.
-
-       Mono.Cecil.Metadata/
-               Here lies files dealing with the format of metadata.
-
-       Mono.Cecil.Cil/
-               Files dealing with CIL intermediate code.
-
-       Mono.Cecil.Signatures/
-               Here are files dealing with signatures in blobs.
-
-* Acknowledgements
-
-       Thanks to:
-               - Sébastien Pouliot,
-               - Todd Berman,
-               - Martin Baulig,
-               - Sébastien Ros,
-               - Thomas Gil
-
-* License
-
-    Copyright (C) 2005 Jb Evain
-
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    "Software"), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-
-    The above copyright notice and this permission notice shall be
-    included in all copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs b/mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs
new file mode 100644 (file)
index 0000000..ae79cda
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// ExtensionAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+#if !NET_3_5 && !NET_4_0
+
+namespace System.Runtime.CompilerServices {
+
+       [AttributeUsage (AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
+       sealed class ExtensionAttribute : Attribute {
+       }
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/TODO b/mcs/class/Mono.Cecil/TODO
deleted file mode 100644 (file)
index d373d8e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Cecil TODO
-
-* debugs infos
-
-       Cecil should be able to emit debug infos along with assemblies.
-
-* strong name
-
-       For the moment, Cecil only create space for strong name signatures.
-       Can we do better ?
-
-* win32 resource
-
-       Cecil does not suppport win32 resources and globaly the .rsrc section
-       into PE files.
-
-* verify
-
-       Cecil does absolutely no verification on what it emits.
diff --git a/mcs/class/Mono.Cecil/configure b/mcs/class/Mono.Cecil/configure
deleted file mode 100755 (executable)
index 28f12e1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-help()
-{
-       echo ""
-       echo "Usage is: configure [--prefix=PREFIX]"
-       echo ""
-}
-
-prefix=/usr/local
-profile=default
-
-while [ $# -ne 0 ]; do
-  case $1 in
-    --help)
-       help
-       exit 0
-       ;;
-    --prefix=*)
-       prefix=`echo $1 | sed 's/--prefix=//'`;
-       shift
-       ;;
-    --prefix)
-        shift
-       prefix="$1"
-       shift
-       ;;
-    *)
-       echo Unknown option: $1
-       help
-       shift
-  esac
-done
-
-echo "prefix=$prefix" > config.make
-
-echo ""
-echo "Mono.Cecil module configured"
-echo ""
-echo "     Prefix:           $prefix"
-echo ""
-
-exit 0;
diff --git a/mcs/class/Mono.Cecil/default.build b/mcs/class/Mono.Cecil/default.build
deleted file mode 100644 (file)
index 73f7d84..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<project name="Cecil" default="cecil" basedir=".">
-
-       <property name="debug" value="false" />
-       <property name="optimize" value="true" />
-       <property name="build.dir" value="${path::get-full-path('bin')}" />
-       <property name="keyfile" value="../mono.snk" />
-       <property name="csc.defines" value="NO_DEFINE" />
-
-       <!-- allow properties to be customized in external file" -->
-       <include buildfile="build.properties" if="${file::exists('build.properties')}" />
-
-       <fileset id="all-files">
-               <include name="./**/*.cs" />
-               <exclude name="CodeGen/**/*.*" />
-       </fileset>
-
-       <target name="clean">
-               <delete failonerror="false">
-                       <fileset>
-                               <include name="**/bin/**" />
-                               <include name="**/obj/**" />
-                               <include name="${build.dir}/**" />
-                       </fileset>
-               </delete>
-       </target>
-
-       <target name="init">
-               <mkdir dir="${build.dir}" />
-       </target>
-
-       <target name="cecil" depends="init">
-               <csc output="${build.dir}/Mono.Cecil.dll"
-                       target="library" debug="${debug}"
-                       unsafe="false" optimize="${optimize}"
-                       keyfile="${keyfile}"
-                       define="${csc.defines}">
-                       <sources refid="all-files"/>
-               </csc>
-       </target>
-
-       <target name="compactframework" depends="init" description="compiles cecil to run on the CompactFramework 1.0">
-               <property name="compactframework.defines" value="CF_1_0;${csc.defines}" />
-               <property name="compactframework.dir" value="${compactframework.v1.dir}" />
-               <call target="compactframework-compilation" />
-       </target>
-
-       <target name="compactframework2" depends="init" description="compiles cecil to run on the CompactFramework 2.0">
-               <property name="compactframework.defines" value="CF_2_0;${csc.defines}" />
-               <property name="compactframework.dir" value="${compactframework.v2.dir}" />
-               <call target="compactframework-compilation" />
-       </target>
-
-       <target name="compactframework-compilation">
-               <property name="temp.dir" value="${path::combine(path::get-temp-path(), 'cecil')}" />
-               <delete dir="${temp.dir}" if="${directory::exists(temp.dir)}" />
-               <mkdir dir="${temp.dir}" />
-
-               <property name="framework.dir" value="${framework::get-framework-directory(framework::get-target-framework())}" />
-               <property name="csc.exe" value="${path::combine(framework.dir, 'csc.exe')}" />
-
-               <copy todir="${temp.dir}">
-                       <fileset refid="all-files" />
-               </copy>
-
-               <exec program="${csc.exe}" workingdir="${temp.dir}" failonerror="true">
-                       <arg value="/optimize" />
-                       <arg value="/debug-" />
-                       <arg value="/define:${compactframework.defines}" />
-                       <arg value="/out:${build.dir}/Mono.Cecil.dll" />
-                       <arg value="/target:library" />
-                       <arg value="/warn:0" />
-                       <arg value="/noconfig" />
-                       <arg value="/nostdlib+" />
-                       <arg value="/reference:${compactframework.dir}/mscorlib.dll" />
-                       <arg value="/reference:${compactframework.dir}/System.dll" />
-                       <arg value="/recurse:*.cs" />
-               </exec>
-       </target>
-
-       <target name="codegen">
-               <exec program="ruby" commandline="cecil-gen.rb" workingdir="CodeGen" />
-       </target>
-</project>
diff --git a/mcs/class/Mono.Cecil/mono-cecil.pc.in b/mcs/class/Mono.Cecil/mono-cecil.pc.in
deleted file mode 100644 (file)
index c2829d9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-prefix=@prefix@
-assemblies_dir=${prefix}/lib/Mono.Cecil
-Libraries=${assemblies_dir}/Mono.Cecil.dll
-
-Name: Mono.Cecil
-Description: Mono.Cecil Library
-Version: 0.6
-Libs: -r:${Libraries}
diff --git a/mcs/class/Mono.Cecil/mono.snk b/mcs/class/Mono.Cecil/mono.snk
new file mode 100644 (file)
index 0000000..380116c
Binary files /dev/null and b/mcs/class/Mono.Cecil/mono.snk differ
diff --git a/mcs/class/Mono.Cecil/standalone.make b/mcs/class/Mono.Cecil/standalone.make
deleted file mode 100644 (file)
index 075be29..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-include config.make
-
-MCS = mcs
-KEY_FILE = ../../mcs/class/mono.snk
-MCS_FLAGS = -keyfile:$(KEY_FILE)
-
-all: Mono.Cecil.dll mono-cecil.pc
-
-Mono.Cecil.dll: Mono.Cecil.dll.sources */*.cs
-       $(MCS) $(MCS_FLAGS) @Mono.Cecil.dll.sources /target:library /out:Mono.Cecil.dll
-
-clean:
-       rm -f Mono.Cecil.dll
-       rm -f mono-cecil.pc
-
-mono-cecil.pc: mono-cecil.pc.in
-       sed -e 's,@prefix@,$(prefix),g' mono-cecil.pc.in > $@.tmp
-       mv $@.tmp $@
-
-install: all mono-cecil.pc
-       mkdir -p $(prefix)/lib/Mono.Cecil
-       cp Mono.Cecil.dll $(prefix)/lib/Mono.Cecil
-       cp mono-cecil.pc $(prefix)/lib/pkgconfig/mono-cecil.pc
index d36a87823991776d7ae6203db901e82b9ba0f5ad..0b97d877f3fb4b91ff78785352b08ee0fc91cb70 100644 (file)
@@ -50,7 +50,7 @@ namespace Mono.CodeContracts.Rewrite.Ast {
                }
 
                public override TypeReference ReturnType {
-                       get { return this.Method.ReturnType.ReturnType; }
+                       get { return this.Method.ReturnType; }
                }
 
        }
index 130cfefd53f01e3fdffc05eee5420244e2906664..6533555d5f765a6d760ad547c519b9d030080436 100644 (file)
@@ -36,19 +36,19 @@ using Mono.CodeContracts.Rewrite.Ast;
 namespace Mono.CodeContracts.Rewrite.AstVisitors {
        class CompileVisitor : ExprVisitor {
 
-               public CompileVisitor (CilWorker il, Dictionary<Expr, Instruction> instructionLookup)
+               public CompileVisitor (ILProcessor il, Dictionary<Expr, Instruction> instructionLookup)
                        : this (il, instructionLookup, il.Append)
                {
                }
 
-               public CompileVisitor (CilWorker il, Dictionary<Expr, Instruction> instructionLookup, Action<Instruction> fnEmit)
+               public CompileVisitor (ILProcessor il, Dictionary<Expr, Instruction> instructionLookup, Action<Instruction> fnEmit)
                {
                        this.il = il;
                        this.instructionLookup = instructionLookup;
                        this.fnEmit = fnEmit;
                }
 
-               private CilWorker il;
+               private ILProcessor il;
                private Dictionary<Expr, Instruction> instructionLookup;
                private Action<Instruction> fnEmit;
 
index 984e8bfa457fb78b1d6551233fe2dc7e0928caf7..914f7048541c1ffc33a7d2331f9e17e575a217fa 100644 (file)
@@ -106,13 +106,13 @@ namespace Mono.CodeContracts.Rewrite {
                                this.module.Types.Add(type);
                                // Create constructor
                                MethodDefinition cons = new MethodDefinition (".ctor",
-                                       MethodAttributes.Assem | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, typeVoid);
-                               cons.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-                               cons.Parameters.Add (new ParameterDefinition ("failure", 2, ParameterAttributes.None, typeString));
-                               cons.Parameters.Add (new ParameterDefinition ("usermsg", 3, ParameterAttributes.None, typeString));
-                               cons.Parameters.Add (new ParameterDefinition ("condition", 4, ParameterAttributes.None, typeString));
-                               cons.Parameters.Add (new ParameterDefinition ("inner", 5, ParameterAttributes.None, typeException));
-                               var il = cons.Body.CilWorker;
+                                       MethodAttributes.Assembly | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, typeVoid);
+                               cons.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+                               cons.Parameters.Add (new ParameterDefinition ("failure", ParameterAttributes.None, typeString));
+                               cons.Parameters.Add (new ParameterDefinition ("usermsg", ParameterAttributes.None, typeString));
+                               cons.Parameters.Add (new ParameterDefinition ("condition", ParameterAttributes.None, typeString));
+                               cons.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+                               var il = cons.Body.GetILProcessor ();
                                il.Emit (OpCodes.Ldarg_0);
                                il.Emit (OpCodes.Ldarg_2);
                                il.Emit (OpCodes.Ldarg_S, cons.Parameters [4]);
@@ -152,13 +152,13 @@ namespace Mono.CodeContracts.Rewrite {
                                TypeReference typeException = this.module.Import (typeof (Exception));
                                // Create method
                                MethodDefinition method = new MethodDefinition ("TriggerFailure",
-                                       MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-                               method.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-                               method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("userMessage", 3, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("conditionText", 4, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("inner", 5, ParameterAttributes.None, typeException));
-                               var il = method.Body.CilWorker;
+                                       MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+                               method.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+                               method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("userMessage", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+                               var il = method.Body.GetILProcessor ();
                                if (this.options.ThrowOnFailure) {
                                        il.Emit (OpCodes.Ldarg_0);
                                        il.Emit (OpCodes.Ldarg_1);
@@ -199,15 +199,15 @@ namespace Mono.CodeContracts.Rewrite {
                                MethodReference mRaiseContractFailedEvent = this.module.Import (typeof (ContractHelper).GetMethod ("RaiseContractFailedEvent"));
                                // Create method
                                MethodDefinition method = new MethodDefinition ("ReportFailure",
-                                       MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-                               method.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-                               method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("conditionText", 3, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("inner", 4, ParameterAttributes.None, typeException));
-                               VariableDefinition vMsg = new VariableDefinition ("sMsg", 0, method, typeString);
+                                       MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+                               method.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+                               method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+                               VariableDefinition vMsg = new VariableDefinition ("sMsg", typeString);
                                method.Body.Variables.Add (vMsg);
                                method.Body.InitLocals = true;
-                               var il = method.Body.CilWorker;
+                               var il = method.Body.GetILProcessor ();
                                il.Emit (OpCodes.Ldarg_0);
                                il.Emit (OpCodes.Ldarg_1);
                                il.Emit (OpCodes.Ldarg_2);
@@ -256,11 +256,11 @@ namespace Mono.CodeContracts.Rewrite {
                                TypeReference typeString = this.module.Import (typeof (string));
                                // Create method
                                MethodDefinition method = new MethodDefinition ("Requires",
-                                   MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-                               method.Parameters.Add (new ParameterDefinition ("condition", 1, ParameterAttributes.None, typeBoolean));
-                               method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-                               method.Parameters.Add (new ParameterDefinition ("conditionText", 3, ParameterAttributes.None, typeString));
-                               var il = method.Body.CilWorker;
+                                   MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+                               method.Parameters.Add (new ParameterDefinition ("condition", ParameterAttributes.None, typeBoolean));
+                               method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+                               method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+                               var il = method.Body.GetILProcessor ();
                                il.Emit (OpCodes.Ldarg_0);
                                var instRet = il.Create(OpCodes.Ret);
                                il.Emit (OpCodes.Brtrue_S, instRet);
index e4399d695f7f9ef5bf68e2ca8d8e5202962350e5..5fba3c0e950fddb42439bd4314f1999687872c5d 100644 (file)
@@ -70,7 +70,7 @@ namespace Mono.CodeContracts.Rewrite {
 
                public ExprLoadArg LoadArg (ParameterDefinition parameterDefinition)
                {
-                       return this.LoadArg (parameterDefinition.Sequence);
+                       return this.LoadArg (parameterDefinition.Index + 1);
                }
 
                public ExprLoadConstant LoadConstant (object value)
index dcba33265de81b6294c87269182cafe4d30edf50..f739db435548f347b17bcd0325d605762b8d0d05 100644 (file)
@@ -38,13 +38,11 @@ using Mono.CodeContracts.Rewrite.AstVisitors;
 namespace Mono.CodeContracts.Rewrite {
        class PerformRewrite {
 
-               public PerformRewrite (ISymbolWriter sym, RewriterOptions options)
+               public PerformRewrite (RewriterOptions options)
                {
-                       this.sym = sym;
                        this.options = options;
                }
 
-               private ISymbolWriter sym;
                private RewriterOptions options;
                private Dictionary<MethodDefinition, TransformContractsVisitor> rewrittenMethods = new Dictionary<MethodDefinition, TransformContractsVisitor> ();
 
@@ -54,8 +52,8 @@ namespace Mono.CodeContracts.Rewrite {
                                ContractsRuntime contractsRuntime = new ContractsRuntime(module, this.options);
 
                                var allMethods =
-                                       from type in module.Types.Cast<TypeDefinition> ()
-                                       from method in type.Methods.Cast<MethodDefinition> ()
+                                       from type in module.Types
+                                       from method in type.Methods
                                        select method;
 
                                foreach (MethodDefinition method in allMethods.ToArray ()) {
@@ -93,9 +91,6 @@ namespace Mono.CodeContracts.Rewrite {
                        TransformContractsVisitor vTransform = null;
                        if (method.HasBody) {
                                vTransform = this.TransformContracts (module, method, contractsRuntime);
-                               if (this.sym != null) {
-                                       this.sym.Write (method.Body);
-                               }
                                if (vTransform.ContractRequiresInfo.Any ()) {
                                        anyRewrites = true;
                                }
@@ -127,7 +122,7 @@ namespace Mono.CodeContracts.Rewrite {
 
                private void RewriteIL (MethodBody body, Dictionary<Expr,Instruction> instructionLookup, Expr remove, Expr insert)
                {
-                       var il = body.CilWorker;
+                       var il = body.GetILProcessor ();
                        Instruction instInsertBefore;
                        if (remove != null) {
                                var vInstExtent = new InstructionExtentVisitor (instructionLookup);
@@ -154,7 +149,7 @@ namespace Mono.CodeContracts.Rewrite {
                        if (baseType == null) {
                                return null;
                        }
-                       var overridden = baseType.Resolve ().Methods.Cast<MethodDefinition> ().FirstOrDefault (x => x.Name == method.Name);
+                       var overridden = baseType.Resolve ().Methods.FirstOrDefault (x => x.Name == method.Name);
                        return overridden;
                }
 
index c2bd64cfc7a84c8a6c171112b22d58026b669337..15a353c19da3a3ff9e036086c29c99c68a117165 100644 (file)
@@ -54,43 +54,6 @@ namespace Mono.CodeContracts.Rewrite {
                private List<string> errors = new List<string> ();
                private bool usingMdb = false;
                private bool usingPdb = false;
-               
-               private void LoadSymbolReader (AssemblyDefinition assembly) {
-                       if (this.options.Assembly.IsStream && this.options.Assembly.Streams.Symbols == null) {
-                               this.warnings.Add ("-debug specified, but no symbol stream provided.");
-                       } else {
-                               try {
-                                       foreach (ModuleDefinition module in assembly.Modules) {
-                                               module.LoadSymbols ();
-                                       }
-                                       this.usingMdb = true;
-                               } catch {
-                               }
-                               if (!this.usingMdb && !this.usingPdb) {
-                                       this.warnings.Add ("-debug specified, but no MDB or PDB symbol file found.");
-                               }
-                       }
-               }
-               
-               private ISymbolWriter LoadSymbolWriter(AssemblyDefinition assembly, AssemblyRef output)
-               {
-                       // TODO: Get symbol writing to work.
-//                     ISymbolWriterProvider symProv = null;
-//                     if (this.usingMdb) {
-//                             symProv = new Mono.Cecil.Mdb.MdbWriterProvider ();
-//                     } else if (this.usingPdb) {
-//                             symProv = new Mono.Cecil.Pdb.PdbWriterProvider ();
-//                     } else {
-//                             this.warnings.Add ("-writePDBFile specified, but no symbol file found, cannot write symbols.");
-//                     }
-//                     if (symProv != null) {
-//                             return output.IsFilename ?
-//                                     symProv.GetSymbolWriter (assembly.MainModule, output.Filename) :
-//                                     symProv.GetSymbolWriter (assembly.MainModule, output.Streams.Symbols);
-//                     }
-                       return null;
-               }
-
 
                private RewriterResults RewriteImpl ()
                {
@@ -101,9 +64,15 @@ namespace Mono.CodeContracts.Rewrite {
                        if (!this.options.Assembly.IsSet) {
                                return RewriterResults.Error ("No assembly given to rewrite");
                        }
-                       AssemblyDefinition assembly = this.options.Assembly.IsFilename ?
-                               AssemblyFactory.GetAssembly (this.options.Assembly.Filename) :
-                               AssemblyFactory.GetAssembly (this.options.Assembly.Streams.Assembly);
+
+                       var readerParameters = new ReaderParameters ();
+
+                       if (options.Debug)
+                               readerParameters.ReadSymbols = true;
+
+                       var assembly = this.options.Assembly.IsFilename ?
+                               AssemblyDefinition.ReadAssembly (options.Assembly.Filename, readerParameters) :
+                               AssemblyDefinition.ReadAssembly (options.Assembly.Streams.Assembly, readerParameters);
                        
                        if (this.options.ForceAssemblyRename != null) {
                                assembly.Name.Name = this.options.ForceAssemblyRename;
@@ -111,37 +80,25 @@ namespace Mono.CodeContracts.Rewrite {
                                assembly.Name.Name = Path.GetFileNameWithoutExtension(this.options.OutputFile.Filename);
                        }
 
-                       if (options.Debug) {
-                               this.LoadSymbolReader (assembly);
-                       }
-
                        var output = this.options.OutputFile.IsSet ? this.options.OutputFile : this.options.Assembly;
-                       ISymbolWriter symWriter = null;
+                       var writerParameters = new WriterParameters ();
                        if (options.WritePdbFile) {
                                if (!options.Debug) {
                                        return RewriterResults.Error ("Must specify -debug if using -writePDBFile.");
                                }
-                               if (output.IsStream && output.Streams.Symbols==null){
-                                       return RewriterResults.Error ("-writePDFFile specified, but no output symbol stream provided.");
-                               }
-                               symWriter = this.LoadSymbolWriter (assembly, output);
+                               
+                               writerParameters.WriteSymbols = true;
                        }
                        
-                       try {
-                               PerformRewrite rewriter = new PerformRewrite (symWriter, this.options);
-                               rewriter.Rewrite (assembly);
+                       PerformRewrite rewriter = new PerformRewrite (this.options);
+                       rewriter.Rewrite (assembly);
 
-                               if (output.IsFilename) {
-                                       AssemblyFactory.SaveAssembly(assembly, output.Filename);
-                               } else {
-                                       AssemblyFactory.SaveAssembly(assembly, output.Streams.Assembly);
-                               }
-                       } finally {
-                               if (symWriter != null) {
-                                       symWriter.Dispose ();
-                               }
+                       if (output.IsFilename) {
+                               assembly.Write (output.Filename, writerParameters);
+                       } else {
+                               assembly.Write (output.Streams.Assembly, writerParameters);
                        }
-
+               
                        return new RewriterResults (warnings, errors);
                }
                
index 8c2ee40d926c533f19bf3bf86cdbd65d33436693..ea51d82c9847bb178f830e5f5e1a9186a1d4005e 100644 (file)
@@ -443,18 +443,22 @@ namespace Mono.CompilerServices.SymbolWriter
                }
 
 #if CECIL
-               protected MonoSymbolFile (string filename, Mono.Cecil.AssemblyDefinition assembly) : this (filename)
+               protected MonoSymbolFile (string filename, Mono.Cecil.ModuleDefinition module)
+                       : this (filename)
                {
-                       Guid mvid = assembly.MainModule.Mvid;
+                       CheckGuidMatch (module.Mvid, filename, module.FullyQualifiedName);
+               }
 
-                       CheckGuidMatch (mvid, filename, assembly.MainModule.Image.FileInformation.FullName);
+               public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.ModuleDefinition module)
+               {
+                       return ReadSymbolFile (module, module.FullyQualifiedName);
                }
 
-               public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.AssemblyDefinition assembly, string filename)
+               public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.ModuleDefinition module, string filename)
                {
                        string name = filename + ".mdb";
 
-                       return new MonoSymbolFile (name, assembly);
+                       return new MonoSymbolFile (name, module);
                }
 #else
                protected MonoSymbolFile (string filename, Assembly assembly) : this (filename)
index 0a1999af92c0ac8808dcb2ae979ba684111eb333..74f8c9f1581a5a4bc8969e732bc9091530f7d4b6 100644 (file)
@@ -103,6 +103,48 @@ namespace Mono.Debugger.Soft
                SINGLE_THREADED = 0x2
        }
 
+       enum ElementType {
+               End              = 0x00,
+               Void            = 0x01,
+               Boolean  = 0x02,
+               Char            = 0x03,
+               I1                = 0x04,
+               U1                = 0x05,
+               I2                = 0x06,
+               U2                = 0x07,
+               I4                = 0x08,
+               U4                = 0x09,
+               I8                = 0x0a,
+               U8                = 0x0b,
+               R4                = 0x0c,
+               R8                = 0x0d,
+               String    = 0x0e,
+               Ptr              = 0x0f,
+               ByRef      = 0x10,
+               ValueType   = 0x11,
+               Class      = 0x12,
+               Var        = 0x13,
+               Array      = 0x14,
+               GenericInst = 0x15,
+               TypedByRef  = 0x16,
+               I                  = 0x18,
+               U                  = 0x19,
+               FnPtr      = 0x1b,
+               Object    = 0x1c,
+               SzArray  = 0x1d,
+               MVar       = 0x1e,
+               CModReqD        = 0x1f,
+               CModOpt  = 0x20,
+               Internal        = 0x21,
+               Modifier        = 0x40,
+               Sentinel        = 0x41,
+               Pinned    = 0x45,
+
+               Type            = 0x50,
+               Boxed      = 0x51,
+               Enum            = 0x55
+       }
+
        class ValueImpl {
                public ElementType Type; /* or one of the VALUE_TYPE_ID constants */
                public long Objid;
index 77cd5d51ec97ee5209d7717eb3962771bda16d9f..20ec9aadc8dbe1fb8696c3a1ad820e808ec0c191 100644 (file)
@@ -108,7 +108,7 @@ namespace Mono.Debugger.Soft
                                        br.ReadByte ();
                                        //instr.Operand = GetVariable (body, br.ReadByte ());
                                        break;
-                               case OperandType.ShortInlineParam :
+                               case OperandType.ShortInlineArg :
                                        br.ReadByte ();
                                        //instr.Operand = GetParameter (body, br.ReadByte ());
                                        break;
@@ -124,7 +124,7 @@ namespace Mono.Debugger.Soft
                                        br.ReadInt16 ();
                                        //instr.Operand = GetVariable (body, br.ReadInt16 ());
                                        break;
-                               case OperandType.InlineParam :
+                               case OperandType.InlineArg :
                                        br.ReadInt16 ();
                                        //instr.Operand = GetParameter (body, br.ReadInt16 ());
                                        break;
index 71d3ba3365a20918c5e5715115f0fc5922ef8618..5a0385b77da24f6fa83eb813dc303009627b44ab 100644 (file)
@@ -282,7 +282,7 @@ namespace Mono.Debugger.Soft
                public C.MethodDefinition Metadata {
                        get {
                                if (meta == null)
-                                       meta = (C.MethodDefinition)DeclaringType.Assembly.Metadata.MainModule.LookupByToken (new MetadataToken (MetadataToken));
+                                       meta = (C.MethodDefinition)DeclaringType.Assembly.Metadata.MainModule.LookupToken (MetadataToken);
                                return meta;
                        }
                }
index 1b9de5368c7f209b5a7335b3d752b502b8ccc8fe..51ec6eb1c92eec0626ebe6214c17abe1b58509d1 100644 (file)
@@ -520,7 +520,7 @@ namespace Mono.Debugger.Soft
                                if (meta == null) {
                                        if (Assembly.Metadata == null || MetadataToken == 0)
                                                return null;
-                                       meta = (C.TypeDefinition)Assembly.Metadata.MainModule.LookupByToken (new MetadataToken (MetadataToken));
+                                       meta = (C.TypeDefinition)Assembly.Metadata.MainModule.LookupToken (MetadataToken);
                                }
                                return meta;
                        }
diff --git a/mcs/tools/cil-strip/AssemblyStripper.cs b/mcs/tools/cil-strip/AssemblyStripper.cs
new file mode 100644 (file)
index 0000000..3e5b0b9
--- /dev/null
@@ -0,0 +1,221 @@
+//
+// AssemblyStripper.cs
+//
+// Author:
+//   Jb Evain (jbevain@novell.com)
+//
+// (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.IO;
+
+using Mono.Cecil;
+using Mono.Cecil.Binary;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+namespace Mono.CilStripper {
+
+       class AssemblyStripper {
+
+               AssemblyDefinition assembly;
+               BinaryWriter writer;
+
+               Image original;
+               Image stripped;
+
+               ReflectionWriter reflection_writer;
+               MetadataWriter metadata_writer;
+
+               TablesHeap original_tables;
+               TablesHeap stripped_tables;
+
+               AssemblyStripper (AssemblyDefinition assembly, BinaryWriter writer)
+               {
+                       this.assembly = assembly;
+                       this.writer = writer;
+               }
+
+               void Strip ()
+               {
+                       FullLoad ();
+                       ClearMethodBodies ();
+                       CopyOriginalImage ();
+                       PatchMethods ();
+                       PatchFields ();
+                       PatchResources ();
+                       Write ();
+               }
+
+               void FullLoad ()
+               {
+                       assembly.MainModule.FullLoad ();
+               }
+
+               void ClearMethodBodies ()
+               {
+                       foreach (TypeDefinition type in assembly.MainModule.Types) {
+                               ClearMethodBodies (type.Constructors);
+                               ClearMethodBodies (type.Methods);
+                       }
+               }
+
+               static void ClearMethodBodies (ICollection methods)
+               {
+                       foreach (MethodDefinition method in methods) {
+                               if (!method.HasBody)
+                                       continue;
+
+                               MethodBody body = new MethodBody (method);
+                               body.CilWorker.Emit (OpCodes.Ret);
+
+                               method.Body = body;
+                       }
+               }
+
+               void CopyOriginalImage ()
+               {
+                       original = assembly.MainModule.Image;
+                       stripped = Image.CreateImage();
+
+                       stripped.Accept (new CopyImageVisitor (original));
+
+                       assembly.MainModule.Image = stripped;
+
+                       original_tables = original.MetadataRoot.Streams.TablesHeap;
+                       stripped_tables = stripped.MetadataRoot.Streams.TablesHeap;
+
+                       TableCollection tables = original_tables.Tables;
+                       foreach (IMetadataTable table in tables)
+                               stripped_tables.Tables.Add(table);
+
+                       stripped_tables.Valid = original_tables.Valid;
+                       stripped_tables.Sorted = original_tables.Sorted;
+
+                       reflection_writer = new ReflectionWriter (assembly.MainModule);
+                       reflection_writer.StructureWriter = new StructureWriter (assembly, writer);
+                       reflection_writer.CodeWriter.Stripped = true;
+
+                       metadata_writer = reflection_writer.MetadataWriter;
+
+                       PatchHeap (metadata_writer.StringWriter, original.MetadataRoot.Streams.StringsHeap);
+                       PatchHeap (metadata_writer.GuidWriter, original.MetadataRoot.Streams.GuidHeap);
+                       PatchHeap (metadata_writer.UserStringWriter, original.MetadataRoot.Streams.UserStringsHeap);
+                       PatchHeap (metadata_writer.BlobWriter, original.MetadataRoot.Streams.BlobHeap);
+
+                       if (assembly.EntryPoint != null)
+                               metadata_writer.EntryPointToken = assembly.EntryPoint.MetadataToken.ToUInt ();
+               }
+
+               static void PatchHeap (MemoryBinaryWriter heap_writer, MetadataHeap heap)
+               {
+                       if (heap == null)
+                               return;
+
+                       heap_writer.BaseStream.Position = 0;
+                       heap_writer.Write (heap.Data);
+               }
+
+               void PatchMethods ()
+               {
+                       MethodTable methodTable = (MethodTable) stripped_tables [MethodTable.RId];
+                       if (methodTable == null)
+                               return;
+
+                       RVA method_rva = RVA.Zero;
+
+                       for (int i = 0; i < methodTable.Rows.Count; i++) {
+                               MethodRow methodRow = methodTable[i];
+
+                               MetadataToken methodToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
+
+                               MethodDefinition method = (MethodDefinition) assembly.MainModule.LookupByToken (methodToken);
+
+                               if (method.HasBody) {
+                                       method_rva = method_rva != RVA.Zero
+                                               ? method_rva
+                                               : reflection_writer.CodeWriter.WriteMethodBody (method);
+
+                                       methodRow.RVA = method_rva;
+                               } else
+                                       methodRow.RVA = RVA.Zero;
+                       }
+               }
+
+               void PatchFields ()
+               {
+                       FieldRVATable fieldRvaTable = (FieldRVATable) stripped_tables [FieldRVATable.RId];
+                       if (fieldRvaTable == null)
+                               return;
+
+                       for (int i = 0; i < fieldRvaTable.Rows.Count; i++) {
+                               FieldRVARow fieldRvaRow = fieldRvaTable [i];
+
+                               MetadataToken fieldToken = new MetadataToken (TokenType.Field, fieldRvaRow.Field);
+
+                               FieldDefinition field = (FieldDefinition) assembly.MainModule.LookupByToken (fieldToken);
+
+                               fieldRvaRow.RVA = metadata_writer.GetDataCursor ();
+                               metadata_writer.AddData (field.InitialValue.Length + 3 & (~3));
+                               metadata_writer.AddFieldInitData (field.InitialValue);
+                       }
+               }
+
+               void PatchResources ()
+               {
+                       ManifestResourceTable resourceTable = (ManifestResourceTable) stripped_tables [ManifestResourceTable.RId];
+                       if (resourceTable == null)
+                               return;
+
+                       for (int i = 0; i < resourceTable.Rows.Count; i++) {
+                               ManifestResourceRow resourceRow = resourceTable [i];
+
+                               if (resourceRow.Implementation.RID != 0)
+                                       continue;
+
+                               foreach (Resource resource in assembly.MainModule.Resources) {
+                                       EmbeddedResource er = resource as EmbeddedResource;
+                                       if (er == null)
+                                               continue;
+
+                                       if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name])
+                                               continue;
+
+                                       resourceRow.Offset = metadata_writer.AddResource (er.Data);
+                               }
+                       }
+               }
+
+               void Write ()
+               {
+                       stripped.MetadataRoot.Accept (metadata_writer);
+               }
+
+               public static void StripAssembly (AssemblyDefinition assembly, string file)
+               {
+                       using (FileStream fs = new FileStream (file, FileMode.Create, FileAccess.Write, FileShare.None)) {
+                               new AssemblyStripper (assembly, new BinaryWriter (fs)).Strip ();
+                       }
+               }
+       }
+}
index de7c67c790281ad6dd125d1504e302fb78024174..31407e83607075f78b14aebf8b2f852319965593 100644 (file)
@@ -4,6 +4,4 @@ include ../../build/rules.make
 
 PROGRAM = mono-cil-strip.exe
 
-LOCAL_MCS_FLAGS = /r:Mono.Cecil.dll
-
 include ../../build/executable.make
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs
new file mode 100644 (file)
index 0000000..4c6876b
--- /dev/null
@@ -0,0 +1,101 @@
+//
+// BaseImageVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal abstract class BaseImageVisitor : IBinaryVisitor {
+
+               public virtual void VisitImage (Image img)
+               {
+               }
+
+               public virtual void VisitDOSHeader (DOSHeader header)
+               {
+               }
+
+               public virtual void VisitPEFileHeader (PEFileHeader header)
+               {
+               }
+
+               public virtual void VisitPEOptionalHeader (PEOptionalHeader header)
+               {
+               }
+
+               public virtual void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
+               {
+               }
+
+               public virtual void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
+               {
+               }
+
+               public virtual void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
+               {
+               }
+
+               public virtual void VisitSectionCollection (SectionCollection coll)
+               {
+               }
+
+               public virtual void VisitSection (Section section)
+               {
+               }
+
+               public virtual void VisitImportAddressTable (ImportAddressTable iat)
+               {
+               }
+
+               public virtual void VisitDebugHeader (DebugHeader dh)
+               {
+               }
+
+               public virtual void VisitCLIHeader (CLIHeader header)
+               {
+               }
+
+               public virtual void VisitImportTable (ImportTable it)
+               {
+               }
+
+               public virtual void VisitImportLookupTable (ImportLookupTable ilt)
+               {
+               }
+
+               public virtual void VisitHintNameTable (HintNameTable hnt)
+               {
+               }
+
+               public virtual void VisitExportTable (ExportTable et)
+               {
+               }
+
+               public virtual void TerminateImage (Image img)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs
new file mode 100644 (file)
index 0000000..036d1c0
--- /dev/null
@@ -0,0 +1,66 @@
+//
+// CLIHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class CLIHeader : IHeader, IBinaryVisitable {
+
+               public uint Cb;
+               public ushort MajorRuntimeVersion;
+               public ushort MinorRuntimeVersion;
+               public DataDirectory Metadata;
+               public RuntimeImage Flags;
+               public uint EntryPointToken;
+               public DataDirectory Resources;
+               public DataDirectory StrongNameSignature;
+               public DataDirectory CodeManagerTable;
+               public DataDirectory VTableFixups;
+               public DataDirectory ExportAddressTableJumps;
+               public DataDirectory ManagedNativeHeader;
+
+               public byte [] ImageHash;
+
+               internal CLIHeader ()
+               {
+               }
+
+               public void SetDefaultValues ()
+               {
+                       Cb = 0x48;
+                       Flags = RuntimeImage.ILOnly;
+                       CodeManagerTable = DataDirectory.Zero;
+                       ExportAddressTableJumps = DataDirectory.Zero;
+                       ManagedNativeHeader = DataDirectory.Zero;
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitCLIHeader (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/CopyImageVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/CopyImageVisitor.cs
new file mode 100644 (file)
index 0000000..8a1dec2
--- /dev/null
@@ -0,0 +1,121 @@
+//
+// CopyImageVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       sealed class CopyImageVisitor : BaseImageVisitor {
+
+               Image m_newImage;
+               Image m_originalImage;
+
+               public CopyImageVisitor (Image originalImage)
+               {
+                       m_originalImage = originalImage;
+               }
+
+               public override void VisitImage (Image img)
+               {
+                       m_newImage = img;
+                       if (m_originalImage.DebugHeader != null)
+                               m_newImage.AddDebugHeader ();
+
+                       m_newImage.CLIHeader.Flags = m_originalImage.CLIHeader.Flags;
+               }
+
+               public override void VisitDebugHeader (DebugHeader dbgHeader)
+               {
+                       DebugHeader old = m_originalImage.DebugHeader;
+                       dbgHeader.Age = old.Age;
+                       dbgHeader.Characteristics = old.Characteristics;
+                       dbgHeader.FileName = old.FileName;
+                       dbgHeader.Signature = old.Signature;
+                       dbgHeader.TimeDateStamp = ImageInitializer.TimeDateStampFromEpoch();
+                       dbgHeader.Type = old.Type;
+               }
+
+               public override void VisitSectionCollection (SectionCollection sections)
+               {
+                       Section old = null;
+                       foreach (Section s in m_originalImage.Sections)
+                               if (s.Name == Section.Resources)
+                                       old = s;
+
+                       if (old == null)
+                               return;
+
+                       Section rsrc = new Section ();
+                       rsrc.Characteristics = old.Characteristics;
+                       rsrc.Name = old.Name;
+
+                       sections.Add (rsrc);
+               }
+
+               public override void TerminateImage (Image img)
+               {
+                       if (m_originalImage.ResourceDirectoryRoot == null)
+                               return;
+
+                       m_newImage.ResourceDirectoryRoot = CloneResourceDirectoryTable (m_originalImage.ResourceDirectoryRoot);
+               }
+
+               ResourceDirectoryTable CloneResourceDirectoryTable (ResourceDirectoryTable old)
+               {
+                       ResourceDirectoryTable rdt = new ResourceDirectoryTable ();
+                       foreach (ResourceDirectoryEntry oldEntry in old.Entries)
+                               rdt.Entries.Add (CloneResourceDirectoryEntry (oldEntry));
+
+                       return rdt;
+               }
+
+               ResourceDirectoryEntry CloneResourceDirectoryEntry (ResourceDirectoryEntry old)
+               {
+                       ResourceDirectoryEntry rde;
+                       if (old.IdentifiedByName)
+                               rde = new ResourceDirectoryEntry(old.Name);
+                       else
+                               rde = new ResourceDirectoryEntry (old.ID);
+
+                       if (old.Child is ResourceDirectoryTable)
+                               rde.Child = CloneResourceDirectoryTable (old.Child as ResourceDirectoryTable);
+                       else
+                               rde.Child = CloneResourceDataEntry (old.Child as ResourceDataEntry);
+
+                       return rde;
+               }
+
+               ResourceDataEntry CloneResourceDataEntry (ResourceDataEntry old)
+               {
+                       ResourceDataEntry rde = new ResourceDataEntry ();
+                       rde.Size = old.Size;
+                       rde.Codepage = old.Codepage;
+                       rde.ResourceData = old.ResourceData;
+
+                       return rde;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs
new file mode 100644 (file)
index 0000000..3716b02
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// DOSHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class DOSHeader : IHeader, IBinaryVisitable {
+
+               public byte [] Start;
+               public byte [] End;
+
+               public uint Lfanew;
+
+               internal DOSHeader ()
+               {
+               }
+
+               public void SetDefaultValues ()
+               {
+                       Start = new byte [60] {
+                               0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
+                               0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
+                               0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00
+                       };
+                       Lfanew = 128;
+                       End = new byte [64] {
+                               0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
+                               0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
+                               0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
+                               0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
+                               0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
+                               0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
+                               0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
+                               0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
+                               0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00
+                       };
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitDOSHeader (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs
new file mode 100644 (file)
index 0000000..7945e80
--- /dev/null
@@ -0,0 +1,84 @@
+//
+// DataDirectory.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal struct DataDirectory {
+
+               public static readonly DataDirectory Zero = new DataDirectory (RVA.Zero, 0);
+
+               RVA m_virtualAddress;
+               uint m_size;
+
+               public RVA VirtualAddress {
+                       get { return m_virtualAddress; }
+                       set { m_virtualAddress = value; }
+               }
+
+               public uint Size {
+                       get { return m_size; }
+                       set { m_size = value; }
+               }
+
+               public DataDirectory (RVA virtualAddress, uint size)
+               {
+                       m_virtualAddress = virtualAddress;
+                       m_size = size;
+               }
+
+               public override int GetHashCode ()
+               {
+                       return (m_virtualAddress.GetHashCode () ^ (int) m_size << 1);
+               }
+
+               public override bool Equals (object other)
+               {
+                       if (other is DataDirectory) {
+                               DataDirectory odd = (DataDirectory) other;
+                               return this.m_virtualAddress == odd.m_virtualAddress && this.m_size == odd.m_size;
+                       }
+
+                       return false;
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("{0} [{1}]", m_virtualAddress, m_size.ToString ("X"));
+               }
+
+               public static bool operator == (DataDirectory one, DataDirectory other)
+               {
+                       return one.m_virtualAddress == other.m_virtualAddress && one.m_size == other.m_size;
+               }
+
+               public static bool operator != (DataDirectory one, DataDirectory other)
+               {
+                       return one.m_virtualAddress != other.m_virtualAddress || one.m_size != other.m_size;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs
new file mode 100644 (file)
index 0000000..0a56084
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// DebugHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+
+       internal sealed class DebugHeader : IHeader, IBinaryVisitable {
+
+               public uint Characteristics;
+               public uint TimeDateStamp;
+               public ushort MajorVersion;
+               public ushort MinorVersion;
+               public DebugStoreType Type;
+               public uint SizeOfData;
+               public RVA AddressOfRawData;
+               public uint PointerToRawData;
+
+               public uint Magic;
+               public Guid Signature;
+               public uint Age;
+               public string FileName;
+
+               internal DebugHeader ()
+               {
+               }
+
+               public void SetDefaultValues ()
+               {
+                       Characteristics = 0;
+
+                       this.Magic = 0x53445352;
+                       this.Age = 0;
+                       this.Type = DebugStoreType.CodeView;
+                       this.FileName = string.Empty;
+               }
+
+               public uint GetSize ()
+               {
+                       return 0x34 + (uint) FileName.Length + 1;
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitDebugHeader (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs
new file mode 100644 (file)
index 0000000..576acd0
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// DebugStoreType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal enum DebugStoreType : uint {
+               Unknown = 0x00000000,
+               COFF = 0x00000001,
+               CodeView = 0x00000002,
+               FPO = 0x00000003,
+               Misc = 0x00000004,
+               Exception = 0x00000005,
+               Fixup = 0x00000006,
+               OMAPToSrc = 0x00000007,
+               OMAPFromSrc = 0x00000008,
+               Borland = 0x00000009,
+               Reserved10 = 0x0000000a,
+               CLSID = 0x0000000b
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs
new file mode 100644 (file)
index 0000000..39afa56
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// ExportTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class ExportTable : IBinaryVisitable {
+
+               public uint Characteristics;
+               public uint TimeDateStamp;
+               public ushort MajorVersion;
+               public ushort MinorVersion;
+               public string Name;
+               public uint Base;
+               public uint NumberOfFunctions;
+               public uint NumberOfNames;
+               public RVA AddressOfFunctions;
+               public RVA AddressOfNames;
+               public RVA AddressOfNameOrdinals;
+
+               public RVA [] AddressesOfFunctions;
+               public RVA [] AddressesOfNames;
+               public ushort [] NameOrdinals;
+               public string [] Names;
+
+               internal ExportTable ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitExportTable (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs
new file mode 100644 (file)
index 0000000..9b4b543
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// IBinaryVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal interface IBinaryVisitable {
+               void Accept (IBinaryVisitor visitor);
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs
new file mode 100644 (file)
index 0000000..fd2b2b1
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// IBinaryVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal interface IBinaryVisitor {
+               void VisitImage (Image img);
+               void VisitDOSHeader (DOSHeader header);
+               void VisitPEFileHeader (PEFileHeader header);
+               void VisitPEOptionalHeader (PEOptionalHeader header);
+               void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header);
+               void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header);
+               void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header);
+               void VisitSectionCollection (SectionCollection coll);
+               void VisitSection (Section section);
+               void VisitImportAddressTable (ImportAddressTable iat);
+               void VisitDebugHeader (DebugHeader dh);
+               void VisitCLIHeader (CLIHeader header);
+               void VisitImportTable (ImportTable it);
+               void VisitImportLookupTable (ImportLookupTable ilt);
+               void VisitHintNameTable (HintNameTable hnt);
+               void VisitExportTable (ExportTable et);
+
+               void TerminateImage (Image img);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/IHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IHeader.cs
new file mode 100644 (file)
index 0000000..54f157d
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// IHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal interface IHeader {
+               void SetDefaultValues ();
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs
new file mode 100644 (file)
index 0000000..507dd5e
--- /dev/null
@@ -0,0 +1,243 @@
+//
+// Image.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+       using System.IO;
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class Image : IBinaryVisitable {
+
+               DOSHeader m_dosHeader;
+               PEFileHeader m_peFileHeader;
+               PEOptionalHeader m_peOptionalHeader;
+
+               SectionCollection m_sections;
+               Section m_textSection;
+
+               ImportAddressTable m_importAddressTable;
+               CLIHeader m_cliHeader;
+               ImportTable m_importTable;
+               ImportLookupTable m_importLookupTable;
+               HintNameTable m_hintNameTable;
+               ExportTable m_exportTable;
+
+               DebugHeader m_debugHeader;
+               MetadataRoot m_mdRoot;
+
+               ResourceDirectoryTable m_rsrcRoot;
+
+               FileInfo m_img;
+
+               public DOSHeader DOSHeader {
+                       get { return m_dosHeader; }
+               }
+
+               public PEFileHeader PEFileHeader {
+                       get { return m_peFileHeader; }
+               }
+
+               public PEOptionalHeader PEOptionalHeader {
+                       get { return m_peOptionalHeader; }
+               }
+
+               public SectionCollection Sections {
+                       get { return m_sections; }
+               }
+
+               public Section TextSection {
+                       get { return m_textSection; }
+                       set { m_textSection = value; }
+               }
+
+               public ImportAddressTable ImportAddressTable {
+                       get { return m_importAddressTable; }
+               }
+
+               public CLIHeader CLIHeader {
+                       get { return m_cliHeader; }
+                       set { m_cliHeader = value; }
+               }
+
+               public DebugHeader DebugHeader {
+                       get { return m_debugHeader; }
+                       set { m_debugHeader = value; }
+               }
+
+               public MetadataRoot MetadataRoot {
+                       get { return m_mdRoot; }
+               }
+
+               public ImportTable ImportTable {
+                       get { return m_importTable; }
+               }
+
+               public ImportLookupTable ImportLookupTable {
+                       get { return m_importLookupTable; }
+               }
+
+               public HintNameTable HintNameTable {
+                       get { return m_hintNameTable; }
+               }
+
+               public ExportTable ExportTable {
+                       get { return m_exportTable; }
+                       set { m_exportTable = value; }
+               }
+
+               internal ResourceDirectoryTable ResourceDirectoryRoot {
+                       get { return m_rsrcRoot; }
+                       set { m_rsrcRoot = value; }
+               }
+
+               public FileInfo FileInformation {
+                       get { return m_img; }
+               }
+
+               internal Image ()
+               {
+                       m_dosHeader = new DOSHeader ();
+                       m_peFileHeader = new PEFileHeader ();
+                       m_peOptionalHeader = new PEOptionalHeader ();
+                       m_sections = new SectionCollection ();
+                       m_importAddressTable = new ImportAddressTable ();
+                       m_importTable = new ImportTable ();
+                       m_importLookupTable = new ImportLookupTable ();
+                       m_hintNameTable = new HintNameTable ();
+                       m_mdRoot = new MetadataRoot (this);
+               }
+
+               internal Image (FileInfo img) : this ()
+               {
+                       m_img = img;
+               }
+
+               public long ResolveVirtualAddress (RVA rva)
+               {
+                       foreach (Section sect in this.Sections) {
+                               if (rva >= sect.VirtualAddress &&
+                                       rva < sect.VirtualAddress + sect.SizeOfRawData)
+
+                                       return rva + sect.PointerToRawData - sect.VirtualAddress;
+                       }
+
+                       throw new ArgumentOutOfRangeException ("Cannot map the rva to any section");
+               }
+
+               internal Section GetSectionAtVirtualAddress (RVA rva)
+               {
+                       foreach (Section sect in this.Sections) {
+                               if (rva >= sect.VirtualAddress &&
+                                       rva < sect.VirtualAddress + sect.SizeOfRawData) {
+                                       return sect;
+                               }
+                       }
+                       return null;
+               }
+
+               public BinaryReader GetReaderAtVirtualAddress (RVA rva)
+               {
+                       Section sect = GetSectionAtVirtualAddress (rva);
+                       if (sect == null)
+                               return null;
+
+                       BinaryReader br = new BinaryReader (new MemoryStream (sect.Data));
+                       br.BaseStream.Position = rva - sect.VirtualAddress;
+                       return br;
+               }
+
+               public void AddDebugHeader ()
+               {
+                       m_debugHeader = new DebugHeader ();
+                       m_debugHeader.SetDefaultValues ();
+               }
+
+               internal void SetFileInfo (FileInfo file)
+               {
+                       m_img = file;
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitImage (this);
+
+                       m_dosHeader.Accept (visitor);
+                       m_peFileHeader.Accept (visitor);
+                       m_peOptionalHeader.Accept (visitor);
+
+                       m_sections.Accept (visitor);
+
+                       m_importAddressTable.Accept (visitor);
+
+                       AcceptIfNotNull (m_cliHeader, visitor);
+                       AcceptIfNotNull (m_debugHeader, visitor);
+
+                       m_importTable.Accept (visitor);
+                       m_importLookupTable.Accept (visitor);
+                       m_hintNameTable.Accept (visitor);
+                       AcceptIfNotNull (m_exportTable, visitor);
+
+                       visitor.TerminateImage (this);
+               }
+
+               static void AcceptIfNotNull (IBinaryVisitable visitable, IBinaryVisitor visitor)
+               {
+                       if (visitable == null)
+                               return;
+
+                       visitable.Accept (visitor);
+               }
+
+               public static Image CreateImage ()
+               {
+                       Image img = new Image ();
+
+                       ImageInitializer init = new ImageInitializer (img);
+                       img.Accept (init);
+
+                       return img;
+               }
+
+               public static Image GetImage (string file)
+               {
+                       return ImageReader.Read (file).Image;
+               }
+
+               public static Image GetImage (byte [] image)
+               {
+                       return ImageReader.Read (image).Image;
+               }
+
+               public static Image GetImage (Stream stream)
+               {
+                       return ImageReader.Read (stream).Image;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs
new file mode 100644 (file)
index 0000000..c2dc74d
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// ImageCharacteristics.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+
+       [Flags]
+       internal enum ImageCharacteristics : ushort {
+               RelocsStripped = 0x0001,
+               ExecutableImage = 0x0002,
+               LineNumsStripped = 0x0004,
+               LocalSymsStripped = 0x0008,
+               AggressiveWSTrim = 0x0010,
+               LargeAddressAware = 0x0020,
+               ReservedForFutureUse = 0x0040,
+               BytesReversedLo = 0x0080,
+               _32BitsMachine = 0x0100,
+               DebugStripped = 0x0200,
+               RemovableRunFromSwap = 0x0400,
+               NetRunFromSwap = 0x0800,
+               System = 0x1000,
+               Dll = 0x2000,
+               UPSystemOnly = 0x4000,
+               BytesReversedHI = 0x8000,
+
+               __flags = 0x0002 | 0x0004 | 0x0008 | 0x0100,
+
+               CILOnlyDll = 0x2000 | (ushort) __flags,
+               CILOnlyExe = __flags
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs
new file mode 100644 (file)
index 0000000..1b70548
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// ImageFormatException.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+
+       internal class ImageFormatException : Exception {
+
+               internal ImageFormatException () : base()
+               {
+               }
+
+               internal ImageFormatException (string message) : base(message)
+               {
+               }
+
+               internal ImageFormatException (string message, params string[] parameters) :
+                       base(string.Format(message, parameters))
+               {
+               }
+
+               internal ImageFormatException (string message, Exception inner) :
+                       base(message, inner)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageInitializer.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageInitializer.cs
new file mode 100644 (file)
index 0000000..407c9dc
--- /dev/null
@@ -0,0 +1,139 @@
+//
+// ImageInitializer.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+
+       using Mono.Cecil.Metadata;
+
+       sealed class ImageInitializer : BaseImageVisitor {
+
+               Image m_image;
+               MetadataInitializer m_mdinit;
+
+               public Image Image {
+                       get { return m_image; }
+               }
+
+               public MetadataInitializer Metadata {
+                       get { return m_mdinit; }
+               }
+
+               public ImageInitializer (Image image)
+               {
+                       m_image = image;
+                       m_image.CLIHeader = new CLIHeader ();
+                       m_mdinit = new MetadataInitializer (this);
+               }
+
+               public override void VisitDOSHeader (DOSHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitPEOptionalHeader (PEOptionalHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitPEFileHeader (PEFileHeader header)
+               {
+                       header.SetDefaultValues ();
+                       header.TimeDateStamp = TimeDateStampFromEpoch ();
+               }
+
+               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitSectionCollection (SectionCollection coll)
+               {
+                       Section text = new Section ();
+                       text.Name = Section.Text;
+                       text.Characteristics = SectionCharacteristics.ContainsCode |
+                               SectionCharacteristics.MemoryRead | SectionCharacteristics.MemExecute;
+                       m_image.TextSection = text;
+
+                       Section reloc = new Section ();
+                       reloc.Name =  Section.Relocs;
+                       reloc.Characteristics = SectionCharacteristics.ContainsInitializedData |
+                               SectionCharacteristics.MemDiscardable | SectionCharacteristics.MemoryRead;
+
+                       coll.Add (text);
+                       coll.Add (reloc);
+               }
+
+               public override void VisitSection (Section sect)
+               {
+                       sect.SetDefaultValues ();
+               }
+
+               public override void VisitDebugHeader (DebugHeader dh)
+               {
+                       if (dh != null)
+                               dh.SetDefaultValues ();
+               }
+
+               public override void VisitCLIHeader (CLIHeader header)
+               {
+                       header.SetDefaultValues ();
+                       m_image.MetadataRoot.Accept (m_mdinit);
+               }
+
+               public override void VisitImportTable (ImportTable it)
+               {
+                       it.ImportAddressTable = new RVA (0x2000);
+               }
+
+               public override void VisitHintNameTable (HintNameTable hnt)
+               {
+                       hnt.Hint = 0;
+                       hnt.RuntimeLibrary = HintNameTable.RuntimeCorEE;
+                       hnt.EntryPoint = 0x25ff;
+                       hnt.RVA = new RVA (0x402000);
+               }
+
+               public static uint TimeDateStampFromEpoch ()
+               {
+                       return (uint) DateTime.UtcNow.Subtract (
+                               new DateTime (1970, 1, 1)).TotalSeconds;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageReader.cs
new file mode 100644 (file)
index 0000000..e1b2bf1
--- /dev/null
@@ -0,0 +1,485 @@
+//
+// ImageReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil.Metadata;
+
+       sealed class ImageReader : BaseImageVisitor {
+
+               MetadataReader m_mdReader;
+               BinaryReader m_binaryReader;
+               Image m_image;
+
+               public MetadataReader MetadataReader {
+                       get { return m_mdReader; }
+               }
+
+               public Image Image {
+                       get { return m_image; }
+               }
+
+               ImageReader (Image img, BinaryReader reader)
+               {
+                       m_image = img;
+                       m_binaryReader = reader;
+               }
+
+               static ImageReader Read (Image img, Stream stream)
+               {
+                       ImageReader reader = new ImageReader (img, new BinaryReader (stream));
+                       img.Accept (reader);
+                       return reader;
+               }
+
+               public static ImageReader Read (string file)
+               {
+                       if (file == null)
+                               throw new ArgumentNullException ("file");
+
+                       FileInfo fi = new FileInfo (file);
+                       if (!File.Exists (fi.FullName))
+                       #if CF_1_0 || CF_2_0
+                               throw new FileNotFoundException (fi.FullName);
+                       #else
+                               throw new FileNotFoundException (string.Format ("File '{0}' not found.", fi.FullName), fi.FullName);
+                       #endif
+
+                       FileStream stream = null;
+                       try {
+                               stream = new FileStream (fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Read);
+                               return Read (new Image (fi), stream);
+                       } catch (Exception e) {
+                               if (stream != null)
+                                       stream.Close ();
+#if CF_1_0 || CF_2_0
+                               throw new BadImageFormatException ("Invalid PE file: " + file, e);
+#else
+                               throw new BadImageFormatException ("Invalid PE file", file, e);
+#endif
+                       }
+               }
+
+               public static ImageReader Read (byte [] image)
+               {
+                       if (image == null)
+                               throw new ArgumentNullException ("image");
+
+                       if (image.Length == 0)
+                               throw new ArgumentException ("Empty image array");
+
+                       return Read (new Image (), new MemoryStream (image));
+               }
+
+               public static ImageReader Read (Stream stream)
+               {
+                       if (stream == null)
+                               throw new ArgumentNullException ("stream");
+
+                       if (!stream.CanRead)
+                               throw new ArgumentException ("Can not read from stream");
+
+                       return Read (new Image (), stream);
+               }
+
+               public BinaryReader GetReader ()
+               {
+                       return m_binaryReader;
+               }
+
+               public override void VisitImage (Image img)
+               {
+                       m_mdReader = new MetadataReader (this);
+               }
+
+               void SetPositionToAddress (RVA address)
+               {
+                       m_binaryReader.BaseStream.Position = m_image.ResolveVirtualAddress (address);
+               }
+
+               public override void VisitDOSHeader (DOSHeader header)
+               {
+                       header.Start = m_binaryReader.ReadBytes (60);
+                       header.Lfanew = m_binaryReader.ReadUInt32 ();
+                       header.End = m_binaryReader.ReadBytes (64);
+
+                       m_binaryReader.BaseStream.Position = header.Lfanew;
+
+                       if (m_binaryReader.ReadUInt16 () != 0x4550 ||
+                               m_binaryReader.ReadUInt16 () != 0)
+
+                               throw new ImageFormatException ("Invalid PE File Signature");
+               }
+
+               public override void VisitPEFileHeader (PEFileHeader header)
+               {
+                       header.Machine = m_binaryReader.ReadUInt16 ();
+                       header.NumberOfSections = m_binaryReader.ReadUInt16 ();
+                       header.TimeDateStamp = m_binaryReader.ReadUInt32 ();
+                       header.PointerToSymbolTable = m_binaryReader.ReadUInt32 ();
+                       header.NumberOfSymbols = m_binaryReader.ReadUInt32 ();
+                       header.OptionalHeaderSize = m_binaryReader.ReadUInt16 ();
+                       header.Characteristics = (ImageCharacteristics) m_binaryReader.ReadUInt16 ();
+               }
+
+               ulong ReadIntOrLong ()
+               {
+                       return m_image.PEOptionalHeader.StandardFields.IsPE64 ?
+                               m_binaryReader.ReadUInt64 () :
+                               m_binaryReader.ReadUInt32 ();
+               }
+
+               RVA ReadRVA ()
+               {
+                       return m_binaryReader.ReadUInt32 ();
+               }
+
+               DataDirectory ReadDataDirectory ()
+               {
+                       return new DataDirectory (ReadRVA (), m_binaryReader.ReadUInt32 ());
+               }
+
+               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
+               {
+                       header.ImageBase = ReadIntOrLong ();
+                       header.SectionAlignment = m_binaryReader.ReadUInt32 ();
+                       header.FileAlignment = m_binaryReader.ReadUInt32 ();
+                       header.OSMajor = m_binaryReader.ReadUInt16 ();
+                       header.OSMinor = m_binaryReader.ReadUInt16 ();
+                       header.UserMajor = m_binaryReader.ReadUInt16 ();
+                       header.UserMinor = m_binaryReader.ReadUInt16 ();
+                       header.SubSysMajor = m_binaryReader.ReadUInt16 ();
+                       header.SubSysMinor = m_binaryReader.ReadUInt16 ();
+                       header.Reserved = m_binaryReader.ReadUInt32 ();
+                       header.ImageSize = m_binaryReader.ReadUInt32 ();
+                       header.HeaderSize = m_binaryReader.ReadUInt32 ();
+                       header.FileChecksum = m_binaryReader.ReadUInt32 ();
+                       header.SubSystem = (SubSystem) m_binaryReader.ReadUInt16 ();
+                       header.DLLFlags = m_binaryReader.ReadUInt16 ();
+                       header.StackReserveSize = ReadIntOrLong ();
+                       header.StackCommitSize = ReadIntOrLong ();
+                       header.HeapReserveSize = ReadIntOrLong ();
+                       header.HeapCommitSize = ReadIntOrLong ();
+                       header.LoaderFlags = m_binaryReader.ReadUInt32 ();
+                       header.NumberOfDataDir = m_binaryReader.ReadUInt32 ();
+               }
+
+               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
+               {
+                       header.Magic = m_binaryReader.ReadUInt16 ();
+                       header.LMajor = m_binaryReader.ReadByte ();
+                       header.LMinor = m_binaryReader.ReadByte ();
+                       header.CodeSize = m_binaryReader.ReadUInt32 ();
+                       header.InitializedDataSize = m_binaryReader.ReadUInt32 ();
+                       header.UninitializedDataSize = m_binaryReader.ReadUInt32 ();
+                       header.EntryPointRVA = ReadRVA ();
+                       header.BaseOfCode = ReadRVA ();
+                       if (!header.IsPE64)
+                               header.BaseOfData = ReadRVA ();
+               }
+
+               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
+               {
+                       header.ExportTable = ReadDataDirectory ();
+                       header.ImportTable = ReadDataDirectory ();
+                       header.ResourceTable = ReadDataDirectory ();
+                       header.ExceptionTable = ReadDataDirectory ();
+                       header.CertificateTable = ReadDataDirectory ();
+                       header.BaseRelocationTable = ReadDataDirectory ();
+                       header.Debug = ReadDataDirectory ();
+                       header.Copyright = ReadDataDirectory ();
+                       header.GlobalPtr = ReadDataDirectory ();
+                       header.TLSTable = ReadDataDirectory ();
+                       header.LoadConfigTable = ReadDataDirectory ();
+                       header.BoundImport = ReadDataDirectory ();
+                       header.IAT = ReadDataDirectory ();
+                       header.DelayImportDescriptor = ReadDataDirectory ();
+                       header.CLIHeader = ReadDataDirectory ();
+                       header.Reserved = ReadDataDirectory ();
+
+                       if (header.CLIHeader != DataDirectory.Zero)
+                               m_image.CLIHeader = new CLIHeader ();
+                       if (header.ExportTable != DataDirectory.Zero)
+                               m_image.ExportTable = new ExportTable ();
+               }
+
+               public override void VisitSectionCollection (SectionCollection coll)
+               {
+                       for (int i = 0; i < m_image.PEFileHeader.NumberOfSections; i++)
+                               coll.Add (new Section ());
+               }
+
+               public override void VisitSection (Section sect)
+               {
+                       char [] buffer = new char [8];
+                       int read = 0;
+                       while (read < 8) {
+                               char cur = (char) m_binaryReader.ReadSByte ();
+                               if (cur == '\0') {
+                                       m_binaryReader.BaseStream.Position += 8 - read - 1;
+                                       break;
+                               }
+                               buffer [read++] = cur;
+                       }
+                       sect.Name = read == 0 ? string.Empty : new string (buffer, 0, read);
+                       if (sect.Name == Section.Text)
+                               m_image.TextSection = sect;
+
+                       sect.VirtualSize = m_binaryReader.ReadUInt32 ();
+                       sect.VirtualAddress = ReadRVA ();
+                       sect.SizeOfRawData = m_binaryReader.ReadUInt32 ();
+                       sect.PointerToRawData = ReadRVA ();
+                       sect.PointerToRelocations = ReadRVA ();
+                       sect.PointerToLineNumbers = ReadRVA ();
+                       sect.NumberOfRelocations = m_binaryReader.ReadUInt16 ();
+                       sect.NumberOfLineNumbers = m_binaryReader.ReadUInt16 ();
+                       sect.Characteristics = (SectionCharacteristics) m_binaryReader.ReadUInt32 ();
+
+                       long pos = m_binaryReader.BaseStream.Position;
+                       m_binaryReader.BaseStream.Position = sect.PointerToRawData;
+                       sect.Data = m_binaryReader.ReadBytes ((int) sect.SizeOfRawData);
+                       m_binaryReader.BaseStream.Position = pos;
+               }
+
+               public override void VisitImportAddressTable (ImportAddressTable iat)
+               {
+                       if (m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress == RVA.Zero)
+                               return;
+
+                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.IAT.VirtualAddress);
+
+                       iat.HintNameTableRVA = ReadRVA ();
+               }
+
+               public override void VisitCLIHeader (CLIHeader header)
+               {
+                       if (m_image.PEOptionalHeader.DataDirectories.Debug != DataDirectory.Zero) {
+                               m_image.DebugHeader = new DebugHeader ();
+                               VisitDebugHeader (m_image.DebugHeader);
+                       }
+
+                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.CLIHeader.VirtualAddress);
+                       header.Cb = m_binaryReader.ReadUInt32 ();
+                       header.MajorRuntimeVersion = m_binaryReader.ReadUInt16 ();
+                       header.MinorRuntimeVersion = m_binaryReader.ReadUInt16 ();
+                       header.Metadata = ReadDataDirectory ();
+                       header.Flags = (RuntimeImage) m_binaryReader.ReadUInt32 ();
+                       header.EntryPointToken = m_binaryReader.ReadUInt32 ();
+                       header.Resources = ReadDataDirectory ();
+                       header.StrongNameSignature = ReadDataDirectory ();
+                       header.CodeManagerTable = ReadDataDirectory ();
+                       header.VTableFixups = ReadDataDirectory ();
+                       header.ExportAddressTableJumps = ReadDataDirectory ();
+                       header.ManagedNativeHeader = ReadDataDirectory ();
+
+                       if (header.StrongNameSignature != DataDirectory.Zero) {
+                               SetPositionToAddress (header.StrongNameSignature.VirtualAddress);
+                               header.ImageHash = m_binaryReader.ReadBytes ((int) header.StrongNameSignature.Size);
+                       } else
+                               header.ImageHash = new byte [0];
+
+                       SetPositionToAddress (m_image.CLIHeader.Metadata.VirtualAddress);
+                       m_image.MetadataRoot.Accept (m_mdReader);
+               }
+
+               public override void VisitDebugHeader (DebugHeader header)
+               {
+                       if (m_image.PEOptionalHeader.DataDirectories.Debug == DataDirectory.Zero)
+                               return;
+
+                       long pos = m_binaryReader.BaseStream.Position;
+
+                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.Debug.VirtualAddress);
+                       header.Characteristics = m_binaryReader.ReadUInt32 ();
+                       header.TimeDateStamp = m_binaryReader.ReadUInt32 ();
+                       header.MajorVersion = m_binaryReader.ReadUInt16 ();
+                       header.MinorVersion = m_binaryReader.ReadUInt16 ();
+                       header.Type = (DebugStoreType) m_binaryReader.ReadUInt32 ();
+                       header.SizeOfData = m_binaryReader.ReadUInt32 ();
+                       header.AddressOfRawData = ReadRVA ();
+                       header.PointerToRawData = m_binaryReader.ReadUInt32 ();
+
+                       m_binaryReader.BaseStream.Position = header.PointerToRawData;
+
+                       header.Magic = m_binaryReader.ReadUInt32 ();
+                       header.Signature = new Guid (m_binaryReader.ReadBytes (16));
+                       header.Age = m_binaryReader.ReadUInt32 ();
+                       header.FileName = ReadZeroTerminatedString ();
+
+                       m_binaryReader.BaseStream.Position = pos;
+               }
+
+               string ReadZeroTerminatedString ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       while (true) {
+                               byte chr = m_binaryReader.ReadByte ();
+                               if (chr == 0)
+                                       break;
+                               sb.Append ((char) chr);
+                       }
+                       return sb.ToString ();
+               }
+
+               public override void VisitImportTable (ImportTable it)
+               {
+                       if (m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress == RVA.Zero)
+                               return;
+
+                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.ImportTable.VirtualAddress);
+
+                       it.ImportLookupTable = ReadRVA ();
+                       it.DateTimeStamp = m_binaryReader.ReadUInt32 ();
+                       it.ForwardChain = m_binaryReader.ReadUInt32 ();
+                       it.Name = ReadRVA ();
+                       it.ImportAddressTable = ReadRVA ();
+               }
+
+               public override void VisitImportLookupTable (ImportLookupTable ilt)
+               {
+                       if (m_image.ImportTable.ImportLookupTable == RVA.Zero)
+                               return;
+
+                       SetPositionToAddress (m_image.ImportTable.ImportLookupTable);
+
+                       ilt.HintNameRVA = ReadRVA ();
+               }
+
+               public override void VisitHintNameTable (HintNameTable hnt)
+               {
+                       if (m_image.ImportAddressTable.HintNameTableRVA == RVA.Zero)
+                               return;
+
+                       if ((m_image.ImportAddressTable.HintNameTableRVA & 0x80000000) != 0)
+                               return;
+
+                       SetPositionToAddress (m_image.ImportAddressTable.HintNameTableRVA);
+
+                       hnt.Hint = m_binaryReader.ReadUInt16 ();
+
+                       byte [] bytes = m_binaryReader.ReadBytes (11);
+                       hnt.RuntimeMain = Encoding.ASCII.GetString (bytes, 0, bytes.Length);
+
+                       SetPositionToAddress (m_image.ImportTable.Name);
+
+                       bytes = m_binaryReader.ReadBytes (11);
+                       hnt.RuntimeLibrary = Encoding.ASCII.GetString (bytes, 0, bytes.Length);
+
+                       SetPositionToAddress (m_image.PEOptionalHeader.StandardFields.EntryPointRVA);
+                       hnt.EntryPoint = m_binaryReader.ReadUInt16 ();
+                       hnt.RVA = ReadRVA ();
+               }
+
+               public override void VisitExportTable (ExportTable et)
+               {
+                       SetPositionToAddress (m_image.PEOptionalHeader.DataDirectories.ExportTable.VirtualAddress);
+
+                       et.Characteristics = m_binaryReader.ReadUInt32 ();
+                       et.TimeDateStamp = m_binaryReader.ReadUInt32 ();
+                       et.MajorVersion = m_binaryReader.ReadUInt16 ();
+                       et.MinorVersion = m_binaryReader.ReadUInt16 ();
+
+                       //et.Name =
+                       m_binaryReader.ReadUInt32 ();
+
+                       et.Base = m_binaryReader.ReadUInt32 ();
+                       et.NumberOfFunctions = m_binaryReader.ReadUInt32 ();
+                       et.NumberOfNames = m_binaryReader.ReadUInt32 ();
+                       et.AddressOfFunctions = m_binaryReader.ReadUInt32 ();
+                       et.AddressOfNames = m_binaryReader.ReadUInt32 ();
+                       et.AddressOfNameOrdinals = m_binaryReader.ReadUInt32 ();
+
+                       et.AddressesOfFunctions = ReadArrayOfRVA (et.AddressOfFunctions, et.NumberOfFunctions);
+                       et.AddressesOfNames = ReadArrayOfRVA (et.AddressOfNames, et.NumberOfNames);
+                       et.NameOrdinals = ReadArrayOfUInt16 (et.AddressOfNameOrdinals, et.NumberOfNames);
+                       et.Names = new string [et.NumberOfFunctions];
+
+                       for (int i = 0; i < et.NumberOfFunctions; i++) {
+                               if (et.AddressesOfFunctions [i] == 0)
+                                       continue;
+
+                               et.Names [i] = ReadFunctionName (et, i);
+                       }
+               }
+
+               string ReadFunctionName (ExportTable et, int index)
+               {
+                       for (int i = 0; i < et.NumberOfNames; i++) {
+                               if (et.NameOrdinals [i] != index)
+                                       continue;
+
+                               SetPositionToAddress (et.AddressesOfNames [i]);
+                               return ReadZeroTerminatedString ();
+                       }
+
+                       return string.Empty;
+               }
+
+               ushort [] ReadArrayOfUInt16 (RVA position, uint length)
+               {
+                       if (position == RVA.Zero)
+                               return new ushort [0];
+
+                       SetPositionToAddress (position);
+                       ushort [] array = new ushort [length];
+                       for (int i = 0; i < length; i++)
+                               array [i] = m_binaryReader.ReadUInt16 ();
+
+                       return array;
+               }
+
+               RVA [] ReadArrayOfRVA (RVA position, uint length)
+               {
+                       if (position == RVA.Zero)
+                               return new RVA [0];
+
+                       SetPositionToAddress (position);
+                       RVA [] addresses = new RVA [length];
+                       for (int i = 0; i < length; i++)
+                               addresses [i] = m_binaryReader.ReadUInt32 ();
+
+                       return addresses;
+               }
+
+               public override void TerminateImage(Image img)
+               {
+                       m_binaryReader.Close ();
+
+                       try {
+                               ResourceReader resReader = new ResourceReader (img);
+                               img.ResourceDirectoryRoot = resReader.Read ();
+                       } catch {
+                               img.ResourceDirectoryRoot = null;
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageWriter.cs
new file mode 100644 (file)
index 0000000..e88465d
--- /dev/null
@@ -0,0 +1,434 @@
+//
+// ImageWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil.Metadata;
+
+       sealed class ImageWriter : BaseImageVisitor {
+
+               Image m_img;
+               AssemblyKind m_kind;
+               MetadataWriter m_mdWriter;
+               BinaryWriter m_binaryWriter;
+
+               Section m_textSect;
+               MemoryBinaryWriter m_textWriter;
+               Section m_relocSect;
+               MemoryBinaryWriter m_relocWriter;
+               Section m_rsrcSect;
+               MemoryBinaryWriter m_rsrcWriter;
+
+               public ImageWriter (MetadataWriter writer, AssemblyKind kind, BinaryWriter bw)
+               {
+                       m_mdWriter= writer;
+                       m_img = writer.GetMetadataRoot ().GetImage ();
+                       m_kind = kind;
+                       m_binaryWriter = bw;
+
+                       m_textWriter = new MemoryBinaryWriter ();
+                       m_textWriter.BaseStream.Position = 80;
+                       m_relocWriter = new MemoryBinaryWriter ();
+               }
+
+               public Image GetImage ()
+               {
+                       return m_img;
+               }
+
+               public MemoryBinaryWriter GetTextWriter ()
+               {
+                       return m_textWriter;
+               }
+
+               public uint GetAligned (uint integer, uint alignWith)
+               {
+                       return (integer + alignWith - 1) & ~(alignWith - 1);
+               }
+
+               public void Initialize ()
+               {
+                       Image img = m_img;
+                       ResourceWriter resWriter = null;
+
+                       uint sectAlign = img.PEOptionalHeader.NTSpecificFields.SectionAlignment;
+                       uint fileAlign = img.PEOptionalHeader.NTSpecificFields.FileAlignment;
+
+                       m_textSect = img.TextSection;
+                       foreach (Section s in img.Sections) {
+                               if (s.Name == Section.Relocs)
+                                       m_relocSect = s;
+                               else if (s.Name == Section.Resources) {
+                                       m_rsrcSect = s;
+                                       m_rsrcWriter = new MemoryBinaryWriter ();
+
+                                       resWriter = new ResourceWriter (img, m_rsrcSect, m_rsrcWriter);
+                                       resWriter.Write ();
+                               }
+                       }
+
+                       // size computations, fields setting, etc.
+                       uint nbSects = (uint) img.Sections.Count;
+                       img.PEFileHeader.NumberOfSections = (ushort) nbSects;
+
+                       // build the reloc section data
+                       uint relocSize = 12;
+                       m_relocWriter.Write ((uint) 0);
+                       m_relocWriter.Write (relocSize);
+                       m_relocWriter.Write ((ushort) 0);
+                       m_relocWriter.Write ((ushort) 0);
+
+                       m_textSect.VirtualSize = (uint) m_textWriter.BaseStream.Length;
+                       m_relocSect.VirtualSize = (uint) m_relocWriter.BaseStream.Length;
+                       if (m_rsrcSect != null)
+                               m_rsrcSect.VirtualSize = (uint) m_rsrcWriter.BaseStream.Length;
+
+                       // start counting before sections headers
+                       // section start + section header sixe * number of sections
+                       uint headersEnd = 0x178 + 0x28 * nbSects;
+                       uint fileOffset = headersEnd;
+                       uint sectOffset = sectAlign;
+                       uint imageSize = 0;
+
+                       foreach (Section sect in img.Sections) {
+                               fileOffset = GetAligned (fileOffset, fileAlign);
+                               sectOffset = GetAligned (sectOffset, sectAlign);
+
+                               sect.PointerToRawData = new RVA (fileOffset);
+                               sect.VirtualAddress = new RVA (sectOffset);
+                               sect.SizeOfRawData = GetAligned (sect.VirtualSize, fileAlign);
+
+                               fileOffset += sect.SizeOfRawData;
+                               sectOffset += sect.SizeOfRawData;
+                               imageSize += GetAligned (sect.SizeOfRawData, sectAlign);
+                       }
+
+                       if (m_textSect.VirtualAddress.Value != 0x2000)
+                               throw new ImageFormatException ("Wrong RVA for .text section");
+
+                       if (resWriter != null)
+                               resWriter.Patch ();
+
+                       img.PEOptionalHeader.StandardFields.CodeSize = GetAligned (
+                               m_textSect.SizeOfRawData, fileAlign);
+                       img.PEOptionalHeader.StandardFields.InitializedDataSize = m_textSect.SizeOfRawData;
+                       if (m_rsrcSect != null)
+                               img.PEOptionalHeader.StandardFields.InitializedDataSize += m_rsrcSect.SizeOfRawData;
+                       img.PEOptionalHeader.StandardFields.BaseOfCode = m_textSect.VirtualAddress;
+                       img.PEOptionalHeader.StandardFields.BaseOfData = m_relocSect.VirtualAddress;
+
+                       imageSize += headersEnd;
+                       img.PEOptionalHeader.NTSpecificFields.ImageSize = GetAligned (imageSize, sectAlign);
+
+                       img.PEOptionalHeader.DataDirectories.BaseRelocationTable = new DataDirectory (
+                               m_relocSect.VirtualAddress, m_relocSect.VirtualSize);
+                       if (m_rsrcSect != null)
+                               img.PEOptionalHeader.DataDirectories.ResourceTable = new DataDirectory (
+                                       m_rsrcSect.VirtualAddress, (uint) m_rsrcWriter.BaseStream.Length);
+
+                       if (m_kind == AssemblyKind.Dll) {
+                               img.PEFileHeader.Characteristics = ImageCharacteristics.CILOnlyDll;
+                               img.HintNameTable.RuntimeMain = HintNameTable.RuntimeMainDll;
+                               img.PEOptionalHeader.NTSpecificFields.DLLFlags = 0x400;
+                       } else {
+                               img.PEFileHeader.Characteristics = ImageCharacteristics.CILOnlyExe;
+                               img.HintNameTable.RuntimeMain = HintNameTable.RuntimeMainExe;
+                       }
+
+                       switch (m_kind) {
+                       case AssemblyKind.Dll :
+                       case AssemblyKind.Console :
+                               img.PEOptionalHeader.NTSpecificFields.SubSystem = SubSystem.WindowsCui;
+                               break;
+                       case AssemblyKind.Windows :
+                               img.PEOptionalHeader.NTSpecificFields.SubSystem = SubSystem.WindowsGui;
+                               break;
+                       }
+
+                       RVA importTable = new RVA (img.TextSection.VirtualAddress + m_mdWriter.ImportTablePosition);
+
+                       img.PEOptionalHeader.DataDirectories.ImportTable = new DataDirectory (importTable, 0x57);
+
+                       img.ImportTable.ImportLookupTable = new RVA ((uint) importTable + 0x28);
+
+                       img.ImportLookupTable.HintNameRVA = img.ImportAddressTable.HintNameTableRVA =
+                               new RVA ((uint) img.ImportTable.ImportLookupTable + 0x14);
+                       img.ImportTable.Name = new RVA ((uint) img.ImportLookupTable.HintNameRVA + 0xe);
+               }
+
+               public override void VisitDOSHeader (DOSHeader header)
+               {
+                       m_binaryWriter.Write (header.Start);
+                       m_binaryWriter.Write (header.Lfanew);
+                       m_binaryWriter.Write (header.End);
+
+                       m_binaryWriter.Write ((ushort) 0x4550);
+                       m_binaryWriter.Write ((ushort) 0);
+               }
+
+               public override void VisitPEFileHeader (PEFileHeader header)
+               {
+                       m_binaryWriter.Write (header.Machine);
+                       m_binaryWriter.Write (header.NumberOfSections);
+                       m_binaryWriter.Write (header.TimeDateStamp);
+                       m_binaryWriter.Write (header.PointerToSymbolTable);
+                       m_binaryWriter.Write (header.NumberOfSymbols);
+                       m_binaryWriter.Write (header.OptionalHeaderSize);
+                       m_binaryWriter.Write ((ushort) header.Characteristics);
+               }
+
+               public override void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
+               {
+                       WriteIntOrLong (header.ImageBase);
+                       m_binaryWriter.Write (header.SectionAlignment);
+                       m_binaryWriter.Write (header.FileAlignment);
+                       m_binaryWriter.Write (header.OSMajor);
+                       m_binaryWriter.Write (header.OSMinor);
+                       m_binaryWriter.Write (header.UserMajor);
+                       m_binaryWriter.Write (header.UserMinor);
+                       m_binaryWriter.Write (header.SubSysMajor);
+                       m_binaryWriter.Write (header.SubSysMinor);
+                       m_binaryWriter.Write (header.Reserved);
+                       m_binaryWriter.Write (header.ImageSize);
+                       m_binaryWriter.Write (header.HeaderSize);
+                       m_binaryWriter.Write (header.FileChecksum);
+                       m_binaryWriter.Write ((ushort) header.SubSystem);
+                       m_binaryWriter.Write (header.DLLFlags);
+                       WriteIntOrLong (header.StackReserveSize);
+                       WriteIntOrLong (header.StackCommitSize);
+                       WriteIntOrLong (header.HeapReserveSize);
+                       WriteIntOrLong (header.HeapCommitSize);
+                       m_binaryWriter.Write (header.LoaderFlags);
+                       m_binaryWriter.Write (header.NumberOfDataDir);
+               }
+
+               public override void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
+               {
+                       m_binaryWriter.Write (header.Magic);
+                       m_binaryWriter.Write (header.LMajor);
+                       m_binaryWriter.Write (header.LMinor);
+                       m_binaryWriter.Write (header.CodeSize);
+                       m_binaryWriter.Write (header.InitializedDataSize);
+                       m_binaryWriter.Write (header.UninitializedDataSize);
+                       m_binaryWriter.Write (header.EntryPointRVA.Value);
+                       m_binaryWriter.Write (header.BaseOfCode.Value);
+                       if (!header.IsPE64)
+                               m_binaryWriter.Write (header.BaseOfData.Value);
+               }
+
+               void WriteIntOrLong (ulong value)
+               {
+                       if (m_img.PEOptionalHeader.StandardFields.IsPE64)
+                               m_binaryWriter.Write (value);
+                       else
+                               m_binaryWriter.Write ((uint) value);
+               }
+
+               public override void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
+               {
+                       m_binaryWriter.Write (header.ExportTable.VirtualAddress);
+                       m_binaryWriter.Write (header.ExportTable.Size);
+                       m_binaryWriter.Write (header.ImportTable.VirtualAddress);
+                       m_binaryWriter.Write (header.ImportTable.Size);
+                       m_binaryWriter.Write (header.ResourceTable.VirtualAddress);
+                       m_binaryWriter.Write (header.ResourceTable.Size);
+                       m_binaryWriter.Write (header.ExceptionTable.VirtualAddress);
+                       m_binaryWriter.Write (header.ExceptionTable.Size);
+                       m_binaryWriter.Write (header.CertificateTable.VirtualAddress);
+                       m_binaryWriter.Write (header.CertificateTable.Size);
+                       m_binaryWriter.Write (header.BaseRelocationTable.VirtualAddress);
+                       m_binaryWriter.Write (header.BaseRelocationTable.Size);
+                       m_binaryWriter.Write (header.Debug.VirtualAddress);
+                       m_binaryWriter.Write (header.Debug.Size);
+                       m_binaryWriter.Write (header.Copyright.VirtualAddress);
+                       m_binaryWriter.Write (header.Copyright.Size);
+                       m_binaryWriter.Write (header.GlobalPtr.VirtualAddress);
+                       m_binaryWriter.Write (header.GlobalPtr.Size);
+                       m_binaryWriter.Write (header.TLSTable.VirtualAddress);
+                       m_binaryWriter.Write (header.TLSTable.Size);
+                       m_binaryWriter.Write (header.LoadConfigTable.VirtualAddress);
+                       m_binaryWriter.Write (header.LoadConfigTable.Size);
+                       m_binaryWriter.Write (header.BoundImport.VirtualAddress);
+                       m_binaryWriter.Write (header.BoundImport.Size);
+                       m_binaryWriter.Write (header.IAT.VirtualAddress);
+                       m_binaryWriter.Write (header.IAT.Size);
+                       m_binaryWriter.Write (header.DelayImportDescriptor.VirtualAddress);
+                       m_binaryWriter.Write (header.DelayImportDescriptor.Size);
+                       m_binaryWriter.Write (header.CLIHeader.VirtualAddress);
+                       m_binaryWriter.Write (header.CLIHeader.Size);
+                       m_binaryWriter.Write (header.Reserved.VirtualAddress);
+                       m_binaryWriter.Write (header.Reserved.Size);
+               }
+
+               public override void VisitSection (Section sect)
+               {
+                       m_binaryWriter.Write (Encoding.ASCII.GetBytes (sect.Name));
+                       int more = 8 - sect.Name.Length;
+                       for (int i = 0; i < more; i++)
+                               m_binaryWriter.Write ((byte) 0);
+
+                       m_binaryWriter.Write (sect.VirtualSize);
+                       m_binaryWriter.Write (sect.VirtualAddress.Value);
+                       m_binaryWriter.Write (sect.SizeOfRawData);
+                       m_binaryWriter.Write (sect.PointerToRawData.Value);
+                       m_binaryWriter.Write (sect.PointerToRelocations.Value);
+                       m_binaryWriter.Write (sect.PointerToLineNumbers.Value);
+                       m_binaryWriter.Write (sect.NumberOfRelocations);
+                       m_binaryWriter.Write (sect.NumberOfLineNumbers);
+                       m_binaryWriter.Write ((uint) sect.Characteristics);
+               }
+
+               public override void VisitImportAddressTable (ImportAddressTable iat)
+               {
+                       m_textWriter.BaseStream.Position = 0;
+                       m_textWriter.Write (iat.HintNameTableRVA.Value);
+                       m_textWriter.Write (new byte [4]);
+               }
+
+               public override void VisitCLIHeader (CLIHeader header)
+               {
+                       m_textWriter.Write (header.Cb);
+
+                       if (m_mdWriter.TargetRuntime >= TargetRuntime.NET_2_0) {
+                               m_textWriter.Write ((ushort) 2);
+                               m_textWriter.Write ((ushort) 5);
+                       } else {
+                               m_textWriter.Write ((ushort) 2);
+                               m_textWriter.Write ((ushort) 0);
+                       }
+
+                       m_textWriter.Write (header.Metadata.VirtualAddress);
+                       m_textWriter.Write (header.Metadata.Size);
+                       m_textWriter.Write ((uint) header.Flags);
+                       m_textWriter.Write (header.EntryPointToken);
+                       m_textWriter.Write (header.Resources.VirtualAddress);
+                       m_textWriter.Write (header.Resources.Size);
+                       m_textWriter.Write (header.StrongNameSignature.VirtualAddress);
+                       m_textWriter.Write (header.StrongNameSignature.Size);
+                       m_textWriter.Write (header.CodeManagerTable.VirtualAddress);
+                       m_textWriter.Write (header.CodeManagerTable.Size);
+                       m_textWriter.Write (header.VTableFixups.VirtualAddress);
+                       m_textWriter.Write (header.VTableFixups.Size);
+                       m_textWriter.Write (header.ExportAddressTableJumps.VirtualAddress);
+                       m_textWriter.Write (header.ExportAddressTableJumps.Size);
+                       m_textWriter.Write (header.ManagedNativeHeader.VirtualAddress);
+                       m_textWriter.Write (header.ManagedNativeHeader.Size);
+               }
+
+               public override void VisitDebugHeader (DebugHeader header)
+               {
+                       m_textWriter.BaseStream.Position = m_mdWriter.DebugHeaderPosition;
+                       uint sizeUntilData = 0x1c;
+                       header.AddressOfRawData = m_img.TextSection.VirtualAddress + m_mdWriter.DebugHeaderPosition + sizeUntilData;
+                       header.PointerToRawData = 0x200 + m_mdWriter.DebugHeaderPosition + sizeUntilData;
+                       header.SizeOfData = 0x18 + (uint) header.FileName.Length + 1;
+
+                       m_textWriter.Write (header.Characteristics);
+                       m_textWriter.Write (header.TimeDateStamp);
+                       m_textWriter.Write (header.MajorVersion);
+                       m_textWriter.Write (header.MinorVersion);
+                       m_textWriter.Write ((uint) header.Type);
+                       m_textWriter.Write (header.SizeOfData);
+                       m_textWriter.Write (header.AddressOfRawData.Value);
+                       m_textWriter.Write (header.PointerToRawData);
+
+                       m_textWriter.Write (header.Magic);
+                       m_textWriter.Write (header.Signature.ToByteArray ());
+                       m_textWriter.Write (header.Age);
+                       m_textWriter.Write (Encoding.ASCII.GetBytes (header.FileName));
+                       m_textWriter.Write ((byte) 0);
+               }
+
+               public override void VisitImportTable (ImportTable it)
+               {
+                       m_textWriter.BaseStream.Position = m_mdWriter.ImportTablePosition;
+                       m_textWriter.Write (it.ImportLookupTable.Value);
+                       m_textWriter.Write (it.DateTimeStamp);
+                       m_textWriter.Write (it.ForwardChain);
+                       m_textWriter.Write (it.Name.Value);
+                       m_textWriter.Write (it.ImportAddressTable.Value);
+                       m_textWriter.Write (new byte [20]);
+               }
+
+               public override void VisitImportLookupTable (ImportLookupTable ilt)
+               {
+                       m_textWriter.Write (ilt.HintNameRVA.Value);
+                       m_textWriter.Write (new byte [16]);
+               }
+
+               public override void VisitHintNameTable (HintNameTable hnt)
+               {
+                       m_textWriter.Write (hnt.Hint);
+                       m_textWriter.Write (Encoding.ASCII.GetBytes (hnt.RuntimeMain));
+                       m_textWriter.Write ('\0');
+                       m_textWriter.Write (Encoding.ASCII.GetBytes (hnt.RuntimeLibrary));
+                       m_textWriter.Write ('\0');
+                       m_textWriter.Write (new byte [4]);
+
+                       // patch header with ep rva
+                       RVA ep = m_img.TextSection.VirtualAddress +
+                               (uint) m_textWriter.BaseStream.Position;
+                       long pos = m_binaryWriter.BaseStream.Position;
+                       m_binaryWriter.BaseStream.Position = 0xa8;
+                       m_binaryWriter.Write (ep.Value);
+                       m_binaryWriter.BaseStream.Position = pos;
+
+                       // patch reloc Sect with ep
+                       uint reloc = (ep.Value + 2) % 0x1000;
+                       uint rva = (ep.Value + 2) - reloc;
+
+                       m_relocWriter.BaseStream.Position = 0;
+                       m_relocWriter.Write (rva);
+                       m_relocWriter.BaseStream.Position = 8;
+                       m_relocWriter.Write ((ushort) ((3 << 12) | reloc));
+
+                       m_textWriter.Write (hnt.EntryPoint);
+                       m_textWriter.Write (hnt.RVA);
+               }
+
+               public override void TerminateImage (Image img)
+               {
+                       m_binaryWriter.BaseStream.Position = 0x200;
+
+                       WriteSection (m_textSect, m_textWriter);
+                       WriteSection (m_relocSect, m_relocWriter);
+                       if (m_rsrcSect != null)
+                               WriteSection (m_rsrcSect, m_rsrcWriter);
+               }
+
+               void WriteSection (Section sect, MemoryBinaryWriter sectWriter)
+               {
+                       sectWriter.MemoryStream.WriteTo (m_binaryWriter.BaseStream);
+                       m_binaryWriter.Write (new byte [
+                                               sect.SizeOfRawData - sectWriter.BaseStream.Length]);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs
new file mode 100644 (file)
index 0000000..c425554
--- /dev/null
@@ -0,0 +1,98 @@
+//
+// Imports.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class ImportAddressTable : IBinaryVisitable {
+
+               public RVA HintNameTableRVA;
+
+               internal ImportAddressTable ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitImportAddressTable (this);
+               }
+       }
+
+       internal sealed class ImportTable : IBinaryVisitable {
+
+               public RVA ImportLookupTable;
+               public uint DateTimeStamp;
+               public uint ForwardChain;
+               public RVA Name;
+               public RVA ImportAddressTable;
+
+               internal ImportTable ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitImportTable (this);
+               }
+       }
+
+       internal sealed class ImportLookupTable : IBinaryVisitable {
+
+               public RVA HintNameRVA;
+
+               internal ImportLookupTable ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitImportLookupTable (this);
+               }
+       }
+
+       internal sealed class HintNameTable : IBinaryVisitable {
+
+               public const string RuntimeMainExe = "_CorExeMain";
+               public const string RuntimeMainDll = "_CorDllMain";
+               public const string RuntimeCorEE = "mscoree.dll";
+
+               public ushort Hint;
+               public string RuntimeMain;
+               public string RuntimeLibrary;
+               public ushort EntryPoint;
+               public RVA RVA;
+
+               internal HintNameTable ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitHintNameTable (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/MemoryBinaryWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/MemoryBinaryWriter.cs
new file mode 100644 (file)
index 0000000..7d8f590
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// MemoryBinaryWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System.IO;
+       using System.Text;
+
+       internal sealed class MemoryBinaryWriter : BinaryWriter {
+
+               public MemoryStream MemoryStream {
+                       get { return (MemoryStream) this.BaseStream; }
+               }
+
+               public MemoryBinaryWriter () : base (new MemoryStream ())
+               {
+               }
+
+               public MemoryBinaryWriter (Encoding enc) : base (new MemoryStream (), enc)
+               {
+               }
+
+               public void Empty ()
+               {
+                       BaseStream.Position = 0;
+                       BaseStream.SetLength (0);
+               }
+
+               public void Write (MemoryBinaryWriter writer)
+               {
+                       writer.MemoryStream.WriteTo (this.BaseStream);
+               }
+
+               public byte [] ToArray ()
+               {
+                       return MemoryStream.ToArray ();
+               }
+
+               public void QuadAlign ()
+               {
+                       BaseStream.Position += 3;
+                       BaseStream.Position &= ~3;
+
+                       if (BaseStream.Position > BaseStream.Length)
+                               BaseStream.SetLength (BaseStream.Position);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs
new file mode 100644 (file)
index 0000000..c541fef
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// PEFileHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class PEFileHeader : IHeader, IBinaryVisitable {
+
+               public ushort Machine;
+               public ushort NumberOfSections;
+               public uint TimeDateStamp;
+               public uint PointerToSymbolTable;
+               public uint NumberOfSymbols;
+               public ushort OptionalHeaderSize;
+               public ImageCharacteristics Characteristics;
+
+               internal PEFileHeader ()
+               {
+               }
+
+               public void SetDefaultValues ()
+               {
+                       Machine = 0x14c;
+                       PointerToSymbolTable = 0;
+                       NumberOfSymbols = 0;
+                       OptionalHeaderSize = 0xe0;
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitPEFileHeader (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs
new file mode 100644 (file)
index 0000000..2dea24d
--- /dev/null
@@ -0,0 +1,200 @@
+//
+// PEOptionalHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class PEOptionalHeader : IHeader, IBinaryVisitable {
+
+               public StandardFieldsHeader StandardFields;
+               public NTSpecificFieldsHeader NTSpecificFields;
+               public DataDirectoriesHeader DataDirectories;
+
+               internal PEOptionalHeader ()
+               {
+                       StandardFields = new StandardFieldsHeader ();
+                       NTSpecificFields = new NTSpecificFieldsHeader ();
+                       DataDirectories = new DataDirectoriesHeader ();
+               }
+
+               public void SetDefaultValues ()
+               {
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitPEOptionalHeader (this);
+
+                       StandardFields.Accept (visitor);
+                       NTSpecificFields.Accept (visitor);
+                       DataDirectories.Accept (visitor);
+               }
+
+               internal sealed class StandardFieldsHeader : IHeader, IBinaryVisitable {
+
+                       public ushort Magic;
+                       public byte LMajor;
+                       public byte LMinor;
+                       public uint CodeSize;
+                       public uint InitializedDataSize;
+                       public uint UninitializedDataSize;
+                       public RVA EntryPointRVA;
+                       public RVA BaseOfCode;
+                       public RVA BaseOfData;
+
+                       public bool IsPE64 {
+                               get { return Magic == 0x20b; }
+                               set {
+                                       if (value)
+                                               Magic = 0x20b;
+                                       else
+                                               Magic = 0x10b;
+                               }
+                       }
+
+                       internal StandardFieldsHeader ()
+                       {
+                       }
+
+                       public void SetDefaultValues ()
+                       {
+                               Magic = 0x10b;
+                               LMajor = 6;
+                               LMinor = 0;
+                       }
+
+                       public void Accept (IBinaryVisitor visitor)
+                       {
+                               visitor.VisitStandardFieldsHeader (this);
+                       }
+               }
+
+               internal sealed class NTSpecificFieldsHeader : IHeader, IBinaryVisitable {
+
+                       public ulong ImageBase;
+                       public uint SectionAlignment;
+                       public uint FileAlignment;
+                       public ushort OSMajor;
+                       public ushort OSMinor;
+                       public ushort UserMajor;
+                       public ushort UserMinor;
+                       public ushort SubSysMajor;
+                       public ushort SubSysMinor;
+                       public uint Reserved;
+                       public uint ImageSize;
+                       public uint HeaderSize;
+                       public uint FileChecksum;
+                       public SubSystem SubSystem;
+                       public ushort DLLFlags;
+                       public ulong StackReserveSize;
+                       public ulong StackCommitSize;
+                       public ulong HeapReserveSize;
+                       public ulong HeapCommitSize;
+                       public uint LoaderFlags;
+                       public uint NumberOfDataDir;
+
+                       internal NTSpecificFieldsHeader ()
+                       {
+                       }
+
+                       public void SetDefaultValues ()
+                       {
+                               ImageBase = 0x400000;
+                               SectionAlignment = 0x2000;
+                               FileAlignment = 0x200;
+                               OSMajor = 4;
+                               OSMinor = 0;
+                               UserMajor = 0;
+                               UserMinor = 0;
+                               SubSysMajor = 4;
+                               SubSysMinor = 0;
+                               Reserved = 0;
+                               HeaderSize = 0x200;
+                               FileChecksum = 0;
+                               DLLFlags = 0;
+                               StackReserveSize = 0x100000;
+                               StackCommitSize = 0x1000;
+                               HeapReserveSize = 0x100000;
+                               HeapCommitSize = 0x1000;
+                               LoaderFlags = 0;
+                               NumberOfDataDir = 0x10;
+                       }
+
+                       public void Accept (IBinaryVisitor visitor)
+                       {
+                               visitor.VisitNTSpecificFieldsHeader (this);
+                       }
+               }
+
+               internal sealed class DataDirectoriesHeader : IHeader, IBinaryVisitable {
+
+                       public DataDirectory ExportTable;
+                       public DataDirectory ImportTable;
+                       public DataDirectory ResourceTable;
+                       public DataDirectory ExceptionTable;
+                       public DataDirectory CertificateTable;
+                       public DataDirectory BaseRelocationTable;
+                       public DataDirectory Debug;
+                       public DataDirectory Copyright;
+                       public DataDirectory GlobalPtr;
+                       public DataDirectory TLSTable;
+                       public DataDirectory LoadConfigTable;
+                       public DataDirectory BoundImport;
+                       public DataDirectory IAT;
+                       public DataDirectory DelayImportDescriptor;
+                       public DataDirectory CLIHeader;
+                       public DataDirectory Reserved;
+
+                       internal DataDirectoriesHeader ()
+                       {
+                       }
+
+                       public void SetDefaultValues ()
+                       {
+                               ExportTable = DataDirectory.Zero;
+                               ResourceTable = DataDirectory.Zero;
+                               ExceptionTable = DataDirectory.Zero;
+                               CertificateTable = DataDirectory.Zero;
+                               Debug = DataDirectory.Zero;
+                               Copyright = DataDirectory.Zero;
+                               GlobalPtr = DataDirectory.Zero;
+                               TLSTable = DataDirectory.Zero;
+                               LoadConfigTable = DataDirectory.Zero;
+                               BoundImport = DataDirectory.Zero;
+                               IAT = new DataDirectory (new RVA (0x2000), 8);
+                               DelayImportDescriptor = DataDirectory.Zero;
+                               CLIHeader = new DataDirectory (new RVA (0x2008), 0x48);
+                               Reserved = DataDirectory.Zero;
+                       }
+
+                       public void Accept (IBinaryVisitor visitor)
+                       {
+                               visitor.VisitDataDirectoriesHeader (this);
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs
new file mode 100644 (file)
index 0000000..c8b32bd
--- /dev/null
@@ -0,0 +1,115 @@
+//
+// RVA.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal struct RVA {
+
+               public static readonly RVA Zero = new RVA (0);
+
+               uint m_rva;
+
+               public uint Value {
+                       get { return m_rva; }
+                       set { m_rva = value; }
+               }
+
+               public RVA (uint rva)
+               {
+                       m_rva = rva;
+               }
+
+               public override int GetHashCode ()
+               {
+                       return (int) m_rva;
+               }
+
+               public override bool Equals (object other)
+               {
+                       if (other is RVA)
+                               return this.m_rva == ((RVA) other).m_rva;
+
+                       return false;
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("0x{0}", m_rva.ToString ("X"));
+               }
+
+               public static bool operator == (RVA one, RVA other)
+               {
+                       return one.m_rva == other.m_rva;
+               }
+
+               public static bool operator != (RVA one, RVA other)
+               {
+                       return one.m_rva != other.m_rva;
+               }
+
+               public static bool operator < (RVA one, RVA other)
+               {
+                       return one.m_rva < other.m_rva;
+               }
+
+               public static bool operator > (RVA one, RVA other)
+               {
+                       return one.m_rva > other.m_rva;
+               }
+
+               public static bool operator <= (RVA one, RVA other)
+               {
+                       return one.m_rva <= other.m_rva;
+               }
+
+               public static bool operator >= (RVA one, RVA other)
+               {
+                       return one.m_rva >= other.m_rva;
+               }
+
+               public static RVA operator + (RVA rva, uint x)
+               {
+                       return new RVA (rva.m_rva + x);
+               }
+
+               public static RVA operator - (RVA rva, uint x)
+               {
+                       return new RVA (rva.m_rva - x);
+               }
+
+               public static implicit operator RVA (uint val)
+               {
+                       return val == 0 ? Zero : new RVA (val);
+               }
+
+               public static implicit operator uint (RVA rva)
+               {
+                       return rva.m_rva;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs
new file mode 100644 (file)
index 0000000..14a76dc
--- /dev/null
@@ -0,0 +1,48 @@
+//
+// ResourceDataEntry.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal class ResourceDataEntry : ResourceNode {
+
+               public RVA Data;
+               public uint Size;
+               public uint Codepage;
+               public uint Reserved = 0;
+
+               public byte [] ResourceData;
+
+               public ResourceDataEntry (int offset) : base (offset)
+               {
+               }
+
+               public ResourceDataEntry ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
new file mode 100644 (file)
index 0000000..8ddd293
--- /dev/null
@@ -0,0 +1,66 @@
+//
+// ResourceDirectoryEntry.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal class ResourceDirectoryEntry : ResourceNode {
+
+               private bool m_idByName;
+
+               public int ID;
+               public ResourceDirectoryString Name;
+
+               public bool IdentifiedByName {
+                       get { return m_idByName; }
+               }
+
+               public ResourceNode Child;
+
+               public ResourceDirectoryEntry (ResourceDirectoryString name)
+               {
+                       this.Name = name;
+                       m_idByName = true;
+               }
+
+               public ResourceDirectoryEntry (ResourceDirectoryString name, int offset) : base (offset)
+               {
+                       this.Name = name;
+                       m_idByName = true;
+               }
+
+               public ResourceDirectoryEntry (int id)
+               {
+                       this.ID = id;
+               }
+
+               public ResourceDirectoryEntry (int id, int offset) : base (offset)
+               {
+                       this.ID = id;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs
new file mode 100644 (file)
index 0000000..f0250c1
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// ResourceDirectoryString.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal class ResourceDirectoryString : ResourceNode {
+
+               public string String;
+
+               public ResourceDirectoryString (string str)
+               {
+                       this.String = str;
+               }
+
+               public ResourceDirectoryString (string str, int offset) : base (offset)
+               {
+                       this.String = str;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs
new file mode 100644 (file)
index 0000000..2970a70
--- /dev/null
@@ -0,0 +1,56 @@
+//
+// ResourceDirectoryTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System.Collections;
+
+       internal class ResourceDirectoryTable : ResourceNode {
+
+               private ArrayList m_entries;
+
+               public uint Characteristics;
+               public uint TimeDateStamp;
+               public ushort MajorVersion;
+               public ushort MinorVersion;
+
+               public IList Entries {
+                       get { return m_entries; }
+               }
+
+               public ResourceDirectoryTable (int offset) : base (offset)
+               {
+                       m_entries = new ArrayList ();
+               }
+
+               public ResourceDirectoryTable ()
+               {
+                       m_entries = new ArrayList ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs
new file mode 100644 (file)
index 0000000..8b77575
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// ResourceNode.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal abstract class ResourceNode {
+
+               public int Offset;
+
+               internal ResourceNode (int offset)
+               {
+                       this.Offset = offset;
+               }
+
+               internal ResourceNode ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceReader.cs
new file mode 100644 (file)
index 0000000..694ecea
--- /dev/null
@@ -0,0 +1,145 @@
+//
+// ResourceReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+       using System.IO;
+       using System.Text;
+
+       sealed class ResourceReader {
+
+               Image m_img;
+               Section m_rsrc;
+               BinaryReader m_reader;
+
+               public ResourceReader (Image img)
+               {
+                       m_img = img;
+               }
+
+               public ResourceDirectoryTable Read ()
+               {
+                       m_rsrc = GetResourceSection ();
+                       if (m_rsrc == null)
+                               return null;
+
+                       m_reader = new BinaryReader (new MemoryStream (m_rsrc.Data));
+                       return ReadDirectoryTable ();
+               }
+
+               Section GetResourceSection ()
+               {
+                       foreach (Section s in m_img.Sections)
+                               if (s.Name == Section.Resources)
+                                       return s;
+
+                       return null;
+               }
+
+               int GetOffset ()
+               {
+                       return (int) m_reader.BaseStream.Position;
+               }
+
+               ResourceDirectoryTable ReadDirectoryTable ()
+               {
+                       ResourceDirectoryTable rdt = new ResourceDirectoryTable (GetOffset ());
+                       rdt.Characteristics = m_reader.ReadUInt32 ();
+                       rdt.TimeDateStamp = m_reader.ReadUInt32 ();
+                       rdt.MajorVersion = m_reader.ReadUInt16 ();
+                       rdt.MinorVersion = m_reader.ReadUInt16 ();
+                       ushort nameEntries = m_reader.ReadUInt16 ();
+                       ushort idEntries = m_reader.ReadUInt16 ();
+
+                       for (int i = 0; i < nameEntries; i++)
+                               rdt.Entries.Add (ReadDirectoryEntry ());
+
+                       for (int i = 0; i < idEntries; i++)
+                               rdt.Entries.Add (ReadDirectoryEntry ());
+
+                       return rdt;
+               }
+
+               ResourceDirectoryEntry ReadDirectoryEntry ()
+               {
+                       uint name = m_reader.ReadUInt32 ();
+                       uint child = m_reader.ReadUInt32 ();
+
+                       ResourceDirectoryEntry rde;
+                       if ((name & 0x80000000) != 0)
+                               rde = new ResourceDirectoryEntry (ReadDirectoryString ((int) name & 0x7fffffff), GetOffset ());
+                       else
+                               rde = new ResourceDirectoryEntry ((int) name & 0x7fffffff, GetOffset ());
+
+                       long pos = m_reader.BaseStream.Position;
+                       m_reader.BaseStream.Position = child & 0x7fffffff;
+
+                       if ((child & 0x80000000) != 0)
+                               rde.Child = ReadDirectoryTable ();
+                       else
+                               rde.Child = ReadDataEntry ();
+
+                       m_reader.BaseStream.Position = pos;
+
+                       return rde;
+               }
+
+               ResourceDirectoryString ReadDirectoryString (int offset)
+               {
+                       long pos = m_reader.BaseStream.Position;
+                       m_reader.BaseStream.Position = offset;
+
+                       byte [] str = m_reader.ReadBytes (m_reader.ReadUInt16 ());
+
+                       ResourceDirectoryString rds = new ResourceDirectoryString (
+                               Encoding.Unicode.GetString (str, 0, str.Length),
+                               GetOffset ());
+
+                       m_reader.BaseStream.Position = pos;
+
+                       return rds;
+               }
+
+               ResourceNode ReadDataEntry ()
+               {
+                       ResourceDataEntry rde = new ResourceDataEntry (GetOffset ());
+                       rde.Data = m_reader.ReadUInt32 ();
+                       rde.Size = m_reader.ReadUInt32 ();
+                       rde.Codepage = m_reader.ReadUInt32 ();
+                       rde.Reserved = m_reader.ReadUInt32 ();
+
+                       Section sect = m_img.GetSectionAtVirtualAddress (rde.Data);
+                       byte [] data = new byte [rde.Size];
+                       Buffer.BlockCopy (sect.Data, (int)(long)(rde.Data - sect.VirtualAddress), data, 0, (int)rde.Size);
+                       rde.ResourceData = data;
+
+                       return rde;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceWriter.cs
new file mode 100644 (file)
index 0000000..5f6de0d
--- /dev/null
@@ -0,0 +1,216 @@
+//
+// ResourceWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Text;
+
+namespace Mono.Cecil.Binary {
+
+       using System.Collections;
+
+       sealed class ResourceWriter {
+
+               Image m_img;
+               Section m_rsrc;
+               MemoryBinaryWriter m_writer;
+
+               ArrayList m_dataEntries;
+               ArrayList m_stringEntries;
+
+               long m_pos;
+
+               public ResourceWriter (Image img, Section rsrc, MemoryBinaryWriter writer)
+               {
+                       m_img = img;
+                       m_rsrc = rsrc;
+                       m_writer = writer;
+
+                       m_dataEntries = new ArrayList ();
+                       m_stringEntries = new ArrayList ();
+               }
+
+               public void Write ()
+               {
+                       if (m_img.ResourceDirectoryRoot == null)
+                               return;
+
+                       ComputeOffset (m_img.ResourceDirectoryRoot);
+                       WriteResourceDirectoryTable (m_img.ResourceDirectoryRoot);
+               }
+
+               public void Patch ()
+               {
+                       foreach (ResourceDataEntry rde in m_dataEntries) {
+                               GotoOffset (rde.Offset);
+                               m_writer.Write ((uint) rde.Data + m_rsrc.VirtualAddress);
+                               RestoreOffset ();
+                       }
+               }
+
+               void ComputeOffset (ResourceDirectoryTable root)
+               {
+                       int offset = 0;
+
+                       Queue directoryTables = new Queue ();
+                       directoryTables.Enqueue (root);
+
+                       while (directoryTables.Count > 0) {
+                               ResourceDirectoryTable rdt = directoryTables.Dequeue () as ResourceDirectoryTable;
+                               rdt.Offset = offset;
+                               offset += 16;
+
+                               foreach (ResourceDirectoryEntry rde in rdt.Entries) {
+                                       rde.Offset = offset;
+                                       offset += 8;
+                                       if (rde.IdentifiedByName)
+                                               m_stringEntries.Add (rde.Name);
+
+                                       if (rde.Child is ResourceDirectoryTable)
+                                               directoryTables.Enqueue (rde.Child);
+                                       else
+                                               m_dataEntries.Add (rde.Child);
+                               }
+                       }
+
+                       foreach (ResourceDataEntry rde in m_dataEntries) {
+                               rde.Offset = offset;
+                               offset += 16;
+                       }
+
+                       foreach (ResourceDirectoryString rds in m_stringEntries) {
+                               rds.Offset = offset;
+                               byte [] str = Encoding.Unicode.GetBytes (rds.String);
+                               offset += 2 + str.Length;
+
+                               offset += 3;
+                               offset &= ~3;
+                       }
+
+                       foreach (ResourceDataEntry rde in m_dataEntries) {
+                               rde.Data = (uint) offset;
+
+                               offset += rde.ResourceData.Length;
+                               offset += 3;
+                               offset &= ~3;
+                       }
+
+                       m_writer.Write (new byte [offset]);
+               }
+
+               void WriteResourceDirectoryTable (ResourceDirectoryTable rdt)
+               {
+                       GotoOffset (rdt.Offset);
+
+                       m_writer.Write (rdt.Characteristics);
+                       m_writer.Write (rdt.TimeDateStamp);
+                       m_writer.Write (rdt.MajorVersion);
+                       m_writer.Write (rdt.MinorVersion);
+
+                       ResourceDirectoryEntry [] namedEntries = GetEntries (rdt, true);
+                       ResourceDirectoryEntry [] idEntries = GetEntries (rdt, false);
+
+                       m_writer.Write ((ushort) namedEntries.Length);
+                       m_writer.Write ((ushort) idEntries.Length);
+
+                       foreach (ResourceDirectoryEntry rde in namedEntries)
+                               WriteResourceDirectoryEntry (rde);
+
+                       foreach (ResourceDirectoryEntry rde in idEntries)
+                               WriteResourceDirectoryEntry (rde);
+
+                       RestoreOffset ();
+               }
+
+               ResourceDirectoryEntry [] GetEntries (ResourceDirectoryTable rdt, bool identifiedByName)
+               {
+                       ArrayList entries = new ArrayList ();
+                       foreach (ResourceDirectoryEntry rde in rdt.Entries)
+                               if (rde.IdentifiedByName == identifiedByName)
+                                       entries.Add (rde);
+
+                       return entries.ToArray (typeof (ResourceDirectoryEntry)) as ResourceDirectoryEntry [];
+               }
+
+               void WriteResourceDirectoryEntry (ResourceDirectoryEntry rde)
+               {
+                       GotoOffset (rde.Offset);
+
+                       if (rde.IdentifiedByName) {
+                               m_writer.Write ((uint) rde.Name.Offset | 0x80000000);
+                               WriteResourceDirectoryString (rde.Name);
+                       } else
+                               m_writer.Write ((uint) rde.ID);
+
+                       if (rde.Child is ResourceDirectoryTable) {
+                               m_writer.Write((uint) rde.Child.Offset | 0x80000000);
+                               WriteResourceDirectoryTable (rde.Child as ResourceDirectoryTable);
+                       } else {
+                               m_writer.Write (rde.Child.Offset);
+                               WriteResourceDataEntry (rde.Child as ResourceDataEntry);
+                       }
+
+                       RestoreOffset ();
+               }
+
+               void WriteResourceDataEntry (ResourceDataEntry rde)
+               {
+                       GotoOffset (rde.Offset);
+
+                       m_writer.Write (0);
+                       m_writer.Write ((uint) rde.ResourceData.Length);
+                       m_writer.Write (rde.Codepage);
+                       m_writer.Write (rde.Reserved);
+
+                       m_writer.BaseStream.Position = rde.Data;
+                       m_writer.Write (rde.ResourceData);
+
+                       RestoreOffset ();
+               }
+
+               void WriteResourceDirectoryString (ResourceDirectoryString name)
+               {
+                       GotoOffset (name.Offset);
+
+                       byte [] str = Encoding.Unicode.GetBytes (name.String);
+                       m_writer.Write ((ushort) str.Length);
+                       m_writer.Write (str);
+
+                       RestoreOffset ();
+               }
+
+               void GotoOffset (int offset)
+               {
+                       m_pos = m_writer.BaseStream.Position;
+                       m_writer.BaseStream.Position = offset;
+               }
+
+               void RestoreOffset ()
+               {
+                       m_writer.BaseStream.Position = m_pos;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs
new file mode 100644 (file)
index 0000000..9ae5a64
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// RuntimeImage.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil.Binary {
+
+       [Flags]
+       internal enum RuntimeImage : uint {
+               ILOnly = 0x0000001,
+               F32BitsRequired = 0x0000002,
+               StrongNameSigned = 0x0000008,
+               TrackDebugData = 0x00010000
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs
new file mode 100644 (file)
index 0000000..2dae1a0
--- /dev/null
@@ -0,0 +1,66 @@
+//
+// Section.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal sealed class Section : IHeader, IBinaryVisitable {
+
+               public const string Text = ".text";
+               public const string Resources = ".rsrc";
+               public const string Relocs = ".reloc";
+               public const string SData = ".sdata";
+
+               public uint VirtualSize;
+               public RVA VirtualAddress;
+               public uint SizeOfRawData;
+               public RVA PointerToRawData;
+               public RVA PointerToRelocations;
+               public RVA PointerToLineNumbers;
+               public ushort NumberOfRelocations;
+               public ushort NumberOfLineNumbers;
+               public SectionCharacteristics Characteristics;
+
+               public string Name;
+               public byte [] Data;
+
+               internal Section ()
+               {
+               }
+
+               public void SetDefaultValues ()
+               {
+                       PointerToLineNumbers = RVA.Zero;
+                       NumberOfLineNumbers = 0;
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitSection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs
new file mode 100644 (file)
index 0000000..7741fb3
--- /dev/null
@@ -0,0 +1,70 @@
+//
+// SectionCharacteristics.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+
+       [Flags]
+       internal enum SectionCharacteristics : uint {
+               TypeNoPad = 0x0000008,
+               ContainsCode = 0x00000020,
+               ContainsInitializedData = 0x00000040,
+               ContainsUninitializedData = 0x00000080,
+               LnkOther = 0x0000100,
+               LnkInfo = 0x000200,
+               LnkRemove = 0x0000800,
+               LnkCOMDAT = 0x00001000,
+               GPRel = 0x00008000,
+               MemPurgeable = 0x00020000,
+               MemLocked = 0x00040000,
+               MemPreload = 0x00080000,
+               Align1Bytes = 0x00100000,
+               Align2Bytes = 0x00200000,
+               Align4Bytes = 0x00300000,
+               Align8Bytes = 0x00400000,
+               Align16Bytes = 0x00500000,
+               Align32Bytes = 0x00600000,
+               Align64Bytes = 0x00700000,
+               Align128Bytes = 0x00800000,
+               Align256Bytes = 0x00900000,
+               Align512Bytes = 0x00a00000,
+               Align1024Bytes = 0x00b00000,
+               Align2048Bytes = 0x00c00000,
+               Align4096Bytes = 0x00d00000,
+               Align8192Bytes = 0x00e00000,
+               LnkNRelocOvfl = 0x01000000,
+               MemDiscardable = 0x02000000,
+               MemNotCached = 0x04000000,
+               MemNotPaged = 0x08000000,
+               MemShared = 0x10000000,
+               MemExecute = 0x20000000,
+               MemoryRead = 0x40000000,
+               MemoryWrite = 0x80000000
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs
new file mode 100644 (file)
index 0000000..503988d
--- /dev/null
@@ -0,0 +1,114 @@
+//
+// SectionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       using System;
+       using System.Collections;
+
+       internal sealed class SectionCollection : ICollection, IBinaryVisitable {
+
+               IList m_items;
+
+               public Section this [int index]
+               {
+                       get { return m_items [index] as Section; }
+                       set { m_items [index] = value; }
+               }
+
+               public int Count {
+                       get { return m_items.Count; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               internal SectionCollection ()
+               {
+                       m_items = new ArrayList (4);
+               }
+
+               internal void Add (Section value)
+               {
+                       m_items.Add (value);
+               }
+
+               internal void Clear ()
+               {
+                       m_items.Clear ();
+               }
+
+               public bool Contains (Section value)
+               {
+                       return m_items.Contains (value);
+               }
+
+               public int IndexOf (Section value)
+               {
+                       return m_items.IndexOf (value);
+               }
+
+               internal void Insert (int index, Section value)
+               {
+                       m_items.Insert (index, value);
+               }
+
+               internal void Remove (Section value)
+               {
+                       m_items.Remove (value);
+               }
+
+               internal void RemoveAt (int index)
+               {
+                       m_items.Remove (index);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       m_items.CopyTo (ary, index);
+               }
+
+               public IEnumerator GetEnumerator ()
+               {
+                       return m_items.GetEnumerator ();
+               }
+
+               public void Accept (IBinaryVisitor visitor)
+               {
+                       visitor.VisitSectionCollection (this);
+
+                       for (int i = 0; i < m_items.Count; i++)
+                               this [i].Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs
new file mode 100644 (file)
index 0000000..4306ff9
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// SubSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+       internal enum SubSystem : ushort {
+               Unknown = 0x0,
+               Native = 0x1,
+               WindowsGui = 0x2,
+               WindowsCui = 0x3,
+               PosixCui = 0x7,
+               WindowsCeGui = 0x9,
+               EfiApplication = 0x10,
+               EfiBootServiceDriver = 0x11,
+               EfiRuntimeDriver = 0x12,
+               EfiRom = 0x13,
+               Xbox = 0x14,
+               NexusAgent = 0x15
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs
new file mode 100644 (file)
index 0000000..3cc839a
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// BaseCodeVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal abstract class BaseCodeVisitor : ICodeVisitor {
+
+               public virtual void VisitMethodBody (MethodBody body)
+               {
+               }
+
+               public virtual void VisitInstructionCollection (InstructionCollection instructions)
+               {
+               }
+
+               public virtual void VisitInstruction (Instruction instr)
+               {
+               }
+
+               public virtual void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh)
+               {
+               }
+
+               public virtual void VisitExceptionHandler (ExceptionHandler eh)
+               {
+               }
+
+               public virtual void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+               {
+               }
+
+               public virtual void VisitVariableDefinition (VariableDefinition var)
+               {
+               }
+
+               public virtual void VisitScopeCollection (ScopeCollection scopes)
+               {
+               }
+
+               public virtual void VisitScope (Scope s)
+               {
+               }
+
+               public virtual void TerminateMethodBody (MethodBody body)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs
new file mode 100644 (file)
index 0000000..c92de40
--- /dev/null
@@ -0,0 +1,402 @@
+//
+// CilWorker.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using SR = System.Reflection;
+
+       internal sealed class CilWorker {
+
+               MethodBody m_mbody;
+               InstructionCollection m_instrs;
+
+               internal CilWorker (MethodBody body)
+               {
+                       m_mbody = body;
+                       m_instrs = m_mbody.Instructions;
+               }
+
+               public MethodBody GetBody ()
+               {
+                       return m_mbody;
+               }
+
+               public Instruction Create (OpCode opcode)
+               {
+                       if (opcode.OperandType != OperandType.InlineNone)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode);
+               }
+
+               public Instruction Create (OpCode opcode, TypeReference type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       if (opcode.OperandType != OperandType.InlineType &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, type);
+               }
+
+               public Instruction Create (OpCode opcode, CallSite site)
+               {
+                       if (site == null)
+                               throw new ArgumentNullException ("site");
+                       if (opcode.Code != Code.Calli)
+                               throw new ArgumentException ("code");
+
+                       return FinalCreate (opcode, site);
+               }
+
+               public Instruction Create (OpCode opcode, MethodReference method)
+               {
+                       if (method == null)
+                               throw new ArgumentNullException ("method");
+                       if (opcode.OperandType != OperandType.InlineMethod &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, method);
+               }
+
+               public Instruction Create (OpCode opcode, FieldReference field)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       if (opcode.OperandType != OperandType.InlineField &&
+                               opcode.OperandType != OperandType.InlineTok)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, field);
+               }
+
+               public Instruction Create (OpCode opcode, string str)
+               {
+                       if (str == null)
+                               throw new ArgumentNullException ("str");
+                       if (opcode.OperandType != OperandType.InlineString)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, str);
+               }
+
+               public Instruction Create (OpCode opcode, sbyte b)
+               {
+                       if (opcode.OperandType != OperandType.ShortInlineI &&
+                               opcode != OpCodes.Ldc_I4_S)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, b);
+               }
+
+               public Instruction Create (OpCode opcode, byte b)
+               {
+                       if (opcode.OperandType == OperandType.ShortInlineVar)
+                               return Create (opcode, m_mbody.Variables [b]);
+
+                       if (opcode.OperandType == OperandType.ShortInlineParam)
+                               return Create (opcode, CodeReader.GetParameter (m_mbody, b));
+
+                       if (opcode.OperandType != OperandType.ShortInlineI ||
+                               opcode == OpCodes.Ldc_I4_S)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, b);
+               }
+
+               public Instruction Create (OpCode opcode, int i)
+               {
+                       if (opcode.OperandType == OperandType.InlineVar)
+                               return Create (opcode, m_mbody.Variables [i]);
+
+                       if (opcode.OperandType == OperandType.InlineParam)
+                               return Create (opcode, CodeReader.GetParameter (m_mbody, i));
+
+                       if (opcode.OperandType != OperandType.InlineI)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, i);
+               }
+
+               public Instruction Create (OpCode opcode, long l)
+               {
+                       if (opcode.OperandType != OperandType.InlineI8)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, l);
+               }
+
+               public Instruction Create (OpCode opcode, float f)
+               {
+                       if (opcode.OperandType != OperandType.ShortInlineR)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, f);
+               }
+
+               public Instruction Create (OpCode opcode, double d)
+               {
+                       if (opcode.OperandType != OperandType.InlineR)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, d);
+               }
+
+               public Instruction Create (OpCode opcode, Instruction label)
+               {
+                       if (label == null)
+                               throw new ArgumentNullException ("label");
+                       if (opcode.OperandType != OperandType.InlineBrTarget &&
+                               opcode.OperandType != OperandType.ShortInlineBrTarget)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, label);
+               }
+
+               public Instruction Create (OpCode opcode, Instruction [] labels)
+               {
+                       if (labels == null)
+                               throw new ArgumentNullException ("labels");
+                       if (opcode.OperandType != OperandType.InlineSwitch)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, labels);
+               }
+
+               public Instruction Create (OpCode opcode, VariableDefinition var)
+               {
+                       if (var == null)
+                               throw new ArgumentNullException ("var");
+                       if (opcode.OperandType != OperandType.ShortInlineVar &&
+                               opcode.OperandType != OperandType.InlineVar)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, var);
+               }
+
+               public Instruction Create (OpCode opcode, ParameterDefinition param)
+               {
+                       if (param == null)
+                               throw new ArgumentNullException ("param");
+                       if (opcode.OperandType != OperandType.ShortInlineParam &&
+                               opcode.OperandType != OperandType.InlineParam)
+                               throw new ArgumentException ("opcode");
+
+                       return FinalCreate (opcode, param);
+               }
+
+               static Instruction FinalCreate (OpCode opcode)
+               {
+                       return FinalCreate (opcode, null);
+               }
+
+               static Instruction FinalCreate (OpCode opcode, object operand)
+               {
+                       return new Instruction (opcode, operand);
+               }
+
+               public Instruction Emit (OpCode opcode)
+               {
+                       Instruction instr = Create (opcode);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, TypeReference type)
+               {
+                       Instruction instr = Create (opcode, type);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, MethodReference meth)
+               {
+                       Instruction instr = Create (opcode, meth);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, CallSite site)
+               {
+                       Instruction instr = Create (opcode, site);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, FieldReference field)
+               {
+                       Instruction instr = Create (opcode, field);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, string str)
+               {
+                       Instruction instr = Create (opcode, str);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, byte b)
+               {
+                       Instruction instr = Create (opcode, b);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, sbyte b)
+               {
+                       Instruction instr = Create (opcode, b);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, int i)
+               {
+                       Instruction instr = Create (opcode, i);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, long l)
+               {
+                       Instruction instr = Create (opcode, l);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, float f)
+               {
+                       Instruction instr = Create (opcode, f);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, double d)
+               {
+                       Instruction instr = Create (opcode, d);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, Instruction target)
+               {
+                       Instruction instr = Create (opcode, target);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, Instruction [] targets)
+               {
+                       Instruction instr = Create (opcode, targets);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, VariableDefinition var)
+               {
+                       Instruction instr = Create (opcode, var);
+                       Append (instr);
+                       return instr;
+               }
+
+               public Instruction Emit (OpCode opcode, ParameterDefinition param)
+               {
+                       Instruction instr = Create (opcode, param);
+                       Append (instr);
+                       return instr;
+               }
+
+               public void InsertBefore (Instruction target, Instruction instr)
+               {
+                       int index = m_instrs.IndexOf (target);
+                       if (index == -1)
+                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+                       m_instrs.Insert (index, instr);
+                       instr.Previous = target.Previous;
+                       if (target.Previous != null)
+                               target.Previous.Next = instr;
+                       target.Previous = instr;
+                       instr.Next = target;
+               }
+
+               public void InsertAfter (Instruction target, Instruction instr)
+               {
+                       int index = m_instrs.IndexOf (target);
+                       if (index == -1)
+                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+                       m_instrs.Insert (index + 1, instr);
+                       instr.Next = target.Next;
+                       if (target.Next != null)
+                               target.Next.Previous = instr;
+                       target.Next = instr;
+                       instr.Previous = target;
+               }
+
+               public void Append (Instruction instr)
+               {
+                       Instruction last = null, current = instr;
+                       if (m_instrs.Count > 0)
+                               last = m_instrs [m_instrs.Count - 1];
+
+                       if (last != null) {
+                               last.Next = instr;
+                               current.Previous = last;
+                       }
+
+                       m_instrs.Add (current);
+               }
+
+               public void Replace (Instruction old, Instruction instr)
+               {
+                       int index = m_instrs.IndexOf (old);
+                       if (index == -1)
+                               throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+                       InsertAfter (old, instr);
+                       Remove (old);
+               }
+
+               public void Remove (Instruction instr)
+               {
+                       if (!m_instrs.Contains (instr))
+                               throw new ArgumentException ("Instruction not in method body");
+
+                       if (instr.Previous != null)
+                               instr.Previous.Next = instr.Next;
+                       if (instr.Next != null)
+                               instr.Next.Previous = instr.Previous;
+                       m_instrs.Remove (instr);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs
new file mode 100644 (file)
index 0000000..9ea0b9f
--- /dev/null
@@ -0,0 +1,255 @@
+//
+// Code.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 16 15:37:23 +0100 2007
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum Code {
+               Nop,
+               Break,
+               Ldarg_0,
+               Ldarg_1,
+               Ldarg_2,
+               Ldarg_3,
+               Ldloc_0,
+               Ldloc_1,
+               Ldloc_2,
+               Ldloc_3,
+               Stloc_0,
+               Stloc_1,
+               Stloc_2,
+               Stloc_3,
+               Ldarg_S,
+               Ldarga_S,
+               Starg_S,
+               Ldloc_S,
+               Ldloca_S,
+               Stloc_S,
+               Ldnull,
+               Ldc_I4_M1,
+               Ldc_I4_0,
+               Ldc_I4_1,
+               Ldc_I4_2,
+               Ldc_I4_3,
+               Ldc_I4_4,
+               Ldc_I4_5,
+               Ldc_I4_6,
+               Ldc_I4_7,
+               Ldc_I4_8,
+               Ldc_I4_S,
+               Ldc_I4,
+               Ldc_I8,
+               Ldc_R4,
+               Ldc_R8,
+               Dup,
+               Pop,
+               Jmp,
+               Call,
+               Calli,
+               Ret,
+               Br_S,
+               Brfalse_S,
+               Brtrue_S,
+               Beq_S,
+               Bge_S,
+               Bgt_S,
+               Ble_S,
+               Blt_S,
+               Bne_Un_S,
+               Bge_Un_S,
+               Bgt_Un_S,
+               Ble_Un_S,
+               Blt_Un_S,
+               Br,
+               Brfalse,
+               Brtrue,
+               Beq,
+               Bge,
+               Bgt,
+               Ble,
+               Blt,
+               Bne_Un,
+               Bge_Un,
+               Bgt_Un,
+               Ble_Un,
+               Blt_Un,
+               Switch,
+               Ldind_I1,
+               Ldind_U1,
+               Ldind_I2,
+               Ldind_U2,
+               Ldind_I4,
+               Ldind_U4,
+               Ldind_I8,
+               Ldind_I,
+               Ldind_R4,
+               Ldind_R8,
+               Ldind_Ref,
+               Stind_Ref,
+               Stind_I1,
+               Stind_I2,
+               Stind_I4,
+               Stind_I8,
+               Stind_R4,
+               Stind_R8,
+               Add,
+               Sub,
+               Mul,
+               Div,
+               Div_Un,
+               Rem,
+               Rem_Un,
+               And,
+               Or,
+               Xor,
+               Shl,
+               Shr,
+               Shr_Un,
+               Neg,
+               Not,
+               Conv_I1,
+               Conv_I2,
+               Conv_I4,
+               Conv_I8,
+               Conv_R4,
+               Conv_R8,
+               Conv_U4,
+               Conv_U8,
+               Callvirt,
+               Cpobj,
+               Ldobj,
+               Ldstr,
+               Newobj,
+               Castclass,
+               Isinst,
+               Conv_R_Un,
+               Unbox,
+               Throw,
+               Ldfld,
+               Ldflda,
+               Stfld,
+               Ldsfld,
+               Ldsflda,
+               Stsfld,
+               Stobj,
+               Conv_Ovf_I1_Un,
+               Conv_Ovf_I2_Un,
+               Conv_Ovf_I4_Un,
+               Conv_Ovf_I8_Un,
+               Conv_Ovf_U1_Un,
+               Conv_Ovf_U2_Un,
+               Conv_Ovf_U4_Un,
+               Conv_Ovf_U8_Un,
+               Conv_Ovf_I_Un,
+               Conv_Ovf_U_Un,
+               Box,
+               Newarr,
+               Ldlen,
+               Ldelema,
+               Ldelem_I1,
+               Ldelem_U1,
+               Ldelem_I2,
+               Ldelem_U2,
+               Ldelem_I4,
+               Ldelem_U4,
+               Ldelem_I8,
+               Ldelem_I,
+               Ldelem_R4,
+               Ldelem_R8,
+               Ldelem_Ref,
+               Stelem_I,
+               Stelem_I1,
+               Stelem_I2,
+               Stelem_I4,
+               Stelem_I8,
+               Stelem_R4,
+               Stelem_R8,
+               Stelem_Ref,
+               Ldelem_Any,
+               Stelem_Any,
+               Unbox_Any,
+               Conv_Ovf_I1,
+               Conv_Ovf_U1,
+               Conv_Ovf_I2,
+               Conv_Ovf_U2,
+               Conv_Ovf_I4,
+               Conv_Ovf_U4,
+               Conv_Ovf_I8,
+               Conv_Ovf_U8,
+               Refanyval,
+               Ckfinite,
+               Mkrefany,
+               Ldtoken,
+               Conv_U2,
+               Conv_U1,
+               Conv_I,
+               Conv_Ovf_I,
+               Conv_Ovf_U,
+               Add_Ovf,
+               Add_Ovf_Un,
+               Mul_Ovf,
+               Mul_Ovf_Un,
+               Sub_Ovf,
+               Sub_Ovf_Un,
+               Endfinally,
+               Leave,
+               Leave_S,
+               Stind_I,
+               Conv_U,
+               Arglist,
+               Ceq,
+               Cgt,
+               Cgt_Un,
+               Clt,
+               Clt_Un,
+               Ldftn,
+               Ldvirtftn,
+               Ldarg,
+               Ldarga,
+               Starg,
+               Ldloc,
+               Ldloca,
+               Stloc,
+               Localloc,
+               Endfilter,
+               Unaligned,
+               Volatile,
+               Tail,
+               Initobj,
+               Constrained,
+               Cpblk,
+               Initblk,
+               No,
+               Rethrow,
+               Sizeof,
+               Refanytype,
+               Readonly,
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs
new file mode 100644 (file)
index 0000000..9fe965f
--- /dev/null
@@ -0,0 +1,357 @@
+//
+// CodeReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+
+       sealed class CodeReader : BaseCodeVisitor {
+
+               ReflectionReader m_reflectReader;
+               MetadataRoot m_root;
+               IDictionary m_instructions;
+
+               public CodeReader (ReflectionReader reflectReader)
+               {
+                       m_reflectReader = reflectReader;
+                       m_root = m_reflectReader.MetadataRoot;
+                       m_instructions = new Hashtable ();
+               }
+
+               public override void VisitMethodBody (MethodBody body)
+               {
+                       MethodDefinition meth = body.Method;
+                       MethodBody methBody = body;
+                       BinaryReader br = m_reflectReader.Module.ImageReader.MetadataReader.GetDataReader (meth.RVA);
+
+                       // lets read the method
+                       int flags = br.ReadByte ();
+                       switch (flags & 0x3) {
+                       case (int) MethodHeader.TinyFormat :
+                               methBody.CodeSize = flags >> 2;
+                               methBody.MaxStack = 8;
+                               ReadCilBody (methBody, br);
+                               break;
+                       case (int) MethodHeader.FatFormat :
+                               br.BaseStream.Position--;
+                               int fatflags = br.ReadUInt16 ();
+                               //int headersize = (fatflags >> 12) & 0xf;
+                               methBody.MaxStack = br.ReadUInt16 ();
+                               methBody.CodeSize = br.ReadInt32 ();
+                               methBody.LocalVarToken = br.ReadInt32 ();
+                               body.InitLocals = (fatflags & (int) MethodHeader.InitLocals) != 0;
+                               if (methBody.LocalVarToken != 0)
+                                       VisitVariableDefinitionCollection (methBody.Variables);
+                               ReadCilBody (methBody, br);
+                               if ((fatflags & (int) MethodHeader.MoreSects) != 0)
+                                       ReadSection (methBody, br);
+                               break;
+                       }
+               }
+
+               public static uint GetRid (int token)
+               {
+                       return (uint) token & 0x00ffffff;
+               }
+
+               public static ParameterDefinition GetParameter (MethodBody body, int index)
+               {
+                       if (body.Method.HasThis) {
+                               if (index == 0)
+                                       return body.Method.This;
+                               index--;
+                       }
+
+                       return body.Method.Parameters [index];
+               }
+
+               public static VariableDefinition GetVariable (MethodBody body, int index)
+               {
+                       return body.Variables [index];
+               }
+
+               void ReadCilBody (MethodBody body, BinaryReader br)
+               {
+                       long start = br.BaseStream.Position;
+                       Instruction last = null;
+                       m_instructions.Clear();
+                       InstructionCollection code = body.Instructions;
+                       GenericContext context = new GenericContext (body.Method);
+
+                       while (br.BaseStream.Position < start + body.CodeSize) {
+                               OpCode op;
+                               long offset = br.BaseStream.Position - start;
+                               int cursor = br.ReadByte ();
+                               if (cursor == 0xfe)
+                                       op = OpCodes.TwoBytesOpCode [br.ReadByte ()];
+                               else
+                                       op = OpCodes.OneByteOpCode [cursor];
+
+                               Instruction instr = new Instruction ((int) offset, op);
+                               switch (op.OperandType) {
+                               case OperandType.InlineNone :
+                                       break;
+                               case OperandType.InlineSwitch :
+                                       uint length = br.ReadUInt32 ();
+                                       int [] branches = new int [length];
+                                       int [] buf = new int [length];
+                                       for (int i = 0; i < length; i++)
+                                               buf [i] = br.ReadInt32 ();
+                                       for (int i = 0; i < length; i++)
+                                               branches [i] = Convert.ToInt32 (br.BaseStream.Position - start + buf [i]);
+                                       instr.Operand = branches;
+                                       break;
+                               case OperandType.ShortInlineBrTarget :
+                                       sbyte sbrtgt = br.ReadSByte ();
+                                       instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + sbrtgt);
+                                       break;
+                               case OperandType.InlineBrTarget :
+                                       int brtgt = br.ReadInt32 ();
+                                       instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + brtgt);
+                                       break;
+                               case OperandType.ShortInlineI :
+                                       if (op == OpCodes.Ldc_I4_S)
+                                               instr.Operand = br.ReadSByte ();
+                                       else
+                                               instr.Operand = br.ReadByte ();
+                                       break;
+                               case OperandType.ShortInlineVar :
+                                       instr.Operand = GetVariable (body, br.ReadByte ());
+                                       break;
+                               case OperandType.ShortInlineParam :
+                                       instr.Operand = GetParameter (body, br.ReadByte ());
+                                       break;
+                               case OperandType.InlineSig :
+                                       instr.Operand = GetCallSiteAt (br.ReadInt32 (), context);
+                                       break;
+                               case OperandType.InlineI :
+                                       instr.Operand = br.ReadInt32 ();
+                                       break;
+                               case OperandType.InlineVar :
+                                       instr.Operand = GetVariable (body, br.ReadInt16 ());
+                                       break;
+                               case OperandType.InlineParam :
+                                       instr.Operand = GetParameter (body, br.ReadInt16 ());
+                                       break;
+                               case OperandType.InlineI8 :
+                                       instr.Operand = br.ReadInt64 ();
+                                       break;
+                               case OperandType.ShortInlineR :
+                                       instr.Operand = br.ReadSingle ();
+                                       break;
+                               case OperandType.InlineR :
+                                       instr.Operand = br.ReadDouble ();
+                                       break;
+                               case OperandType.InlineString :
+                                       instr.Operand = m_root.Streams.UserStringsHeap [GetRid (br.ReadInt32 ())];
+                                       break;
+                               case OperandType.InlineField :
+                               case OperandType.InlineMethod :
+                               case OperandType.InlineType :
+                               case OperandType.InlineTok :
+                                       MetadataToken token = new MetadataToken (br.ReadInt32 ());
+                                       switch (token.TokenType) {
+                                       case TokenType.TypeDef:
+                                               instr.Operand = m_reflectReader.GetTypeDefAt (token.RID);
+                                               break;
+                                       case TokenType.TypeRef:
+                                               instr.Operand = m_reflectReader.GetTypeRefAt (token.RID);
+                                               break;
+                                       case TokenType.TypeSpec:
+                                               instr.Operand = m_reflectReader.GetTypeSpecAt (token.RID, context);
+                                               break;
+                                       case TokenType.Field:
+                                               instr.Operand = m_reflectReader.GetFieldDefAt (token.RID);
+                                               break;
+                                       case TokenType.Method:
+                                               instr.Operand = m_reflectReader.GetMethodDefAt (token.RID);
+                                               break;
+                                       case TokenType.MethodSpec:
+                                               instr.Operand = m_reflectReader.GetMethodSpecAt (token.RID, context);
+                                               break;
+                                       case TokenType.MemberRef:
+                                               instr.Operand = m_reflectReader.GetMemberRefAt (token.RID, context);
+                                               break;
+                                       default:
+                                               throw new ReflectionException ("Wrong token: " + token);
+                                       }
+                                       break;
+                               }
+
+                               m_instructions.Add (instr.Offset, instr);
+
+                               if (last != null) {
+                                       last.Next = instr;
+                                       instr.Previous = last;
+                               }
+
+                               last = instr;
+
+                               code.Add (instr);
+                       }
+
+                       // resolve branches
+                       foreach (Instruction i in code) {
+                               switch (i.OpCode.OperandType) {
+                               case OperandType.ShortInlineBrTarget:
+                               case OperandType.InlineBrTarget:
+                                       i.Operand = GetInstruction (body, (int) i.Operand);
+                                       break;
+                               case OperandType.InlineSwitch:
+                                       int [] lbls = (int []) i.Operand;
+                                       Instruction [] instrs = new Instruction [lbls.Length];
+                                       for (int j = 0; j < lbls.Length; j++)
+                                               instrs [j] = GetInstruction (body, lbls [j]);
+                                       i.Operand = instrs;
+                                       break;
+                               }
+                       }
+
+                       if (m_reflectReader.SymbolReader != null)
+                               m_reflectReader.SymbolReader.Read (body, m_instructions);
+               }
+
+               Instruction GetInstruction (MethodBody body, int offset)
+               {
+                       Instruction instruction = m_instructions [offset] as Instruction;
+                       if (instruction != null)
+                               return instruction;
+
+                       return body.Instructions.Outside;
+               }
+
+               void ReadSection (MethodBody body, BinaryReader br)
+               {
+                       br.BaseStream.Position += 3;
+                       br.BaseStream.Position &= ~3;
+
+                       byte flags = br.ReadByte ();
+                       if ((flags & (byte) MethodDataSection.FatFormat) == 0) {
+                               int length = br.ReadByte () / 12;
+                               br.ReadBytes (2);
+
+                               for (int i = 0; i < length; i++) {
+                                       ExceptionHandler eh = new ExceptionHandler (
+                                               (ExceptionHandlerType) (br.ReadInt16 () & 0x7));
+                                       eh.TryStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
+                                       eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + Convert.ToInt32 (br.ReadByte ()));
+                                       eh.HandlerStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
+                                       eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + Convert.ToInt32 (br.ReadByte ()));
+                                       ReadExceptionHandlerEnd (eh, br, body);
+                                       body.ExceptionHandlers.Add (eh);
+                               }
+                       } else {
+                               br.BaseStream.Position--;
+                               int length = (br.ReadInt32 () >> 8) / 24;
+                               if ((flags & (int) MethodDataSection.EHTable) == 0)
+                                       br.ReadBytes (length * 24);
+                               for (int i = 0; i < length; i++) {
+                                       ExceptionHandler eh = new ExceptionHandler (
+                                               (ExceptionHandlerType) (br.ReadInt32 () & 0x7));
+                                       eh.TryStart = GetInstruction (body, br.ReadInt32 ());
+                                       eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + br.ReadInt32 ());
+                                       eh.HandlerStart = GetInstruction (body, br.ReadInt32 ());
+                                       eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + br.ReadInt32 ());
+                                       ReadExceptionHandlerEnd (eh, br, body);
+                                       body.ExceptionHandlers.Add (eh);
+                               }
+                       }
+
+                       if ((flags & (byte) MethodDataSection.MoreSects) != 0)
+                               ReadSection (body, br);
+               }
+
+               void ReadExceptionHandlerEnd (ExceptionHandler eh, BinaryReader br, MethodBody body)
+               {
+                       switch (eh.Type) {
+                       case ExceptionHandlerType.Catch :
+                               MetadataToken token = new MetadataToken (br.ReadInt32 ());
+                               eh.CatchType = m_reflectReader.GetTypeDefOrRef (token, new GenericContext (body.Method));
+                               break;
+                       case ExceptionHandlerType.Filter :
+                               eh.FilterStart = GetInstruction (body, br.ReadInt32 ());
+                               eh.FilterEnd = GetInstruction (body, eh.HandlerStart.Previous.Offset);
+                               break;
+                       default :
+                               br.ReadInt32 ();
+                               break;
+                       }
+               }
+
+               CallSite GetCallSiteAt (int token, GenericContext context)
+               {
+                       StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
+                       MethodSig ms = m_reflectReader.SigReader.GetStandAloneMethodSig (
+                               sasTable [(int) GetRid (token) - 1].Signature);
+                       CallSite cs = new CallSite (ms.HasThis, ms.ExplicitThis,
+                               ms.MethCallConv, m_reflectReader.GetMethodReturnType (ms, context));
+                       cs.MetadataToken = new MetadataToken (token);
+
+                       for (int i = 0; i < ms.ParamCount; i++) {
+                               Param p = ms.Parameters [i];
+                               cs.Parameters.Add (m_reflectReader.BuildParameterDefinition (i, p, context));
+                       }
+
+                       ReflectionReader.CreateSentinelIfNeeded (cs, ms);
+
+                       return cs;
+               }
+
+               public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+               {
+                       MethodBody body = variables.Container as MethodBody;
+                       if (body == null || body.LocalVarToken == 0)
+                               return;
+
+                       StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
+                       StandAloneSigRow sasRow = sasTable [(int) GetRid (body.LocalVarToken) - 1];
+                       LocalVarSig sig = m_reflectReader.SigReader.GetLocalVarSig (sasRow.Signature);
+                       for (int i = 0; i < sig.Count; i++) {
+                               LocalVarSig.LocalVariable lv = sig.LocalVariables [i];
+                               TypeReference varType = m_reflectReader.GetTypeRefFromSig (
+                                       lv.Type, new GenericContext (body.Method));
+
+                               if (lv.ByRef)
+                                       varType = new ReferenceType (varType);
+                               if ((lv.Constraint & Constraint.Pinned) != 0)
+                                       varType = new PinnedType (varType);
+
+                               varType = m_reflectReader.GetModifierType (lv.CustomMods, varType);
+
+                               body.Variables.Add (new VariableDefinition (
+                                               string.Concat ("V_", i), i, body.Method, varType));
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeWriter.cs
new file mode 100644 (file)
index 0000000..f6abc50
--- /dev/null
@@ -0,0 +1,577 @@
+//
+// CodeWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+
+       sealed class CodeWriter : BaseCodeVisitor {
+
+               ReflectionWriter m_reflectWriter;
+               MemoryBinaryWriter m_binaryWriter;
+               MemoryBinaryWriter m_codeWriter;
+
+               IDictionary m_localSigCache;
+               IDictionary m_standaloneSigCache;
+
+               IDictionary m_stackSizes;
+
+               bool stripped;
+
+               public bool Stripped {
+                       get { return stripped; }
+                       set { stripped = value; }
+               }
+
+               public CodeWriter (ReflectionWriter reflectWriter, MemoryBinaryWriter writer)
+               {
+                       m_reflectWriter = reflectWriter;
+                       m_binaryWriter = writer;
+                       m_codeWriter = new MemoryBinaryWriter ();
+
+                       m_localSigCache = new Hashtable ();
+                       m_standaloneSigCache = new Hashtable ();
+
+                       m_stackSizes = new Hashtable ();
+               }
+
+               public RVA WriteMethodBody (MethodDefinition meth)
+               {
+                       if (meth.Body == null)
+                               return RVA.Zero;
+
+                       RVA ret = m_reflectWriter.MetadataWriter.GetDataCursor ();
+                       meth.Body.Accept (this);
+                       return ret;
+               }
+
+               public override void VisitMethodBody (MethodBody body)
+               {
+                       m_codeWriter.Empty ();
+               }
+
+               void WriteToken (MetadataToken token)
+               {
+                       if (token.RID == 0)
+                               m_codeWriter.Write (0);
+                       else
+                               m_codeWriter.Write (token.ToUInt ());
+               }
+
+               static int GetParameterIndex (MethodBody body, ParameterDefinition p)
+               {
+                       int idx = body.Method.Parameters.IndexOf (p);
+                       if (idx == -1 && p == body.Method.This)
+                               return 0;
+                       if (body.Method.HasThis)
+                               idx++;
+
+                       return idx;
+               }
+
+               public override void VisitInstructionCollection (InstructionCollection instructions)
+               {
+                       MethodBody body = instructions.Container;
+                       long start = m_codeWriter.BaseStream.Position;
+
+                       ComputeMaxStack (instructions);
+
+                       foreach (Instruction instr in instructions) {
+
+                               instr.Offset = (int) (m_codeWriter.BaseStream.Position - start);
+
+                               if (instr.OpCode.Size == 1)
+                                       m_codeWriter.Write (instr.OpCode.Op2);
+                               else {
+                                       m_codeWriter.Write (instr.OpCode.Op1);
+                                       m_codeWriter.Write (instr.OpCode.Op2);
+                               }
+
+                               if (instr.OpCode.OperandType != OperandType.InlineNone &&
+                                       instr.Operand == null)
+                                       throw new ReflectionException ("OpCode {0} have null operand", instr.OpCode.Name);
+
+                               switch (instr.OpCode.OperandType) {
+                               case OperandType.InlineNone :
+                                       break;
+                               case OperandType.InlineSwitch :
+                                       Instruction [] targets = (Instruction []) instr.Operand;
+                                       for (int i = 0; i < targets.Length + 1; i++)
+                                               m_codeWriter.Write ((uint) 0);
+                                       break;
+                               case OperandType.ShortInlineBrTarget :
+                                       m_codeWriter.Write ((byte) 0);
+                                       break;
+                               case OperandType.InlineBrTarget :
+                                       m_codeWriter.Write (0);
+                                       break;
+                               case OperandType.ShortInlineI :
+                                       if (instr.OpCode == OpCodes.Ldc_I4_S)
+                                               m_codeWriter.Write ((sbyte) instr.Operand);
+                                       else
+                                               m_codeWriter.Write ((byte) instr.Operand);
+                                       break;
+                               case OperandType.ShortInlineVar :
+                                       m_codeWriter.Write ((byte) body.Variables.IndexOf (
+                                               (VariableDefinition) instr.Operand));
+                                       break;
+                               case OperandType.ShortInlineParam :
+                                       m_codeWriter.Write ((byte) GetParameterIndex (body, (ParameterDefinition) instr.Operand));
+                                       break;
+                               case OperandType.InlineSig :
+                                       WriteToken (GetCallSiteToken ((CallSite) instr.Operand));
+                                       break;
+                               case OperandType.InlineI :
+                                       m_codeWriter.Write ((int) instr.Operand);
+                                       break;
+                               case OperandType.InlineVar :
+                                       m_codeWriter.Write ((short) body.Variables.IndexOf (
+                                               (VariableDefinition) instr.Operand));
+                                       break;
+                               case OperandType.InlineParam :
+                                       m_codeWriter.Write ((short) GetParameterIndex (
+                                                       body, (ParameterDefinition) instr.Operand));
+                                       break;
+                               case OperandType.InlineI8 :
+                                       m_codeWriter.Write ((long) instr.Operand);
+                                       break;
+                               case OperandType.ShortInlineR :
+                                       m_codeWriter.Write ((float) instr.Operand);
+                                       break;
+                               case OperandType.InlineR :
+                                       m_codeWriter.Write ((double) instr.Operand);
+                                       break;
+                               case OperandType.InlineString :
+                                       WriteToken (new MetadataToken (TokenType.String,
+                                                       m_reflectWriter.MetadataWriter.AddUserString (instr.Operand as string)));
+                                       break;
+                               case OperandType.InlineField :
+                               case OperandType.InlineMethod :
+                               case OperandType.InlineType :
+                               case OperandType.InlineTok :
+                                       if (instr.Operand is TypeReference)
+                                               WriteToken (GetTypeToken ((TypeReference) instr.Operand));
+                                       else if (instr.Operand is GenericInstanceMethod)
+                                               WriteToken (m_reflectWriter.GetMethodSpecToken (instr.Operand as GenericInstanceMethod));
+                                       else if (instr.Operand is MemberReference)
+                                               WriteToken (m_reflectWriter.GetMemberRefToken ((MemberReference) instr.Operand));
+                                       else if (instr.Operand is IMetadataTokenProvider)
+                                               WriteToken (((IMetadataTokenProvider) instr.Operand).MetadataToken);
+                                       else
+                                               throw new ReflectionException (
+                                                       string.Format ("Wrong operand for {0} OpCode: {1}",
+                                                               instr.OpCode.OperandType,
+                                                               instr.Operand.GetType ().FullName));
+                                       break;
+                               }
+                       }
+
+                       // patch branches
+                       long pos = m_codeWriter.BaseStream.Position;
+
+                       foreach (Instruction instr in instructions) {
+                               switch (instr.OpCode.OperandType) {
+                               case OperandType.InlineSwitch :
+                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
+                                       Instruction [] targets = (Instruction []) instr.Operand;
+                                       m_codeWriter.Write ((uint) targets.Length);
+                                       foreach (Instruction tgt in targets)
+                                               m_codeWriter.Write ((tgt.Offset - (instr.Offset +
+                                                       instr.OpCode.Size + (4 * (targets.Length + 1)))));
+                                       break;
+                               case OperandType.ShortInlineBrTarget :
+                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
+                                       m_codeWriter.Write ((byte) (((Instruction) instr.Operand).Offset -
+                                               (instr.Offset + instr.OpCode.Size + 1)));
+                                       break;
+                               case OperandType.InlineBrTarget :
+                                       m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
+                                       m_codeWriter.Write(((Instruction) instr.Operand).Offset -
+                                               (instr.Offset + instr.OpCode.Size + 4));
+                                       break;
+                               }
+                       }
+
+                       m_codeWriter.BaseStream.Position = pos;
+               }
+
+               MetadataToken GetTypeToken (TypeReference type)
+               {
+                       return m_reflectWriter.GetTypeDefOrRefToken (type);
+               }
+
+               MetadataToken GetCallSiteToken (CallSite cs)
+               {
+                       uint sig;
+                       int sentinel = cs.GetSentinel ();
+                       if (sentinel > 0)
+                               sig = m_reflectWriter.SignatureWriter.AddMethodDefSig (
+                                       m_reflectWriter.GetMethodDefSig (cs));
+                       else
+                               sig = m_reflectWriter.SignatureWriter.AddMethodRefSig (
+                                       m_reflectWriter.GetMethodRefSig (cs));
+
+                       if (m_standaloneSigCache.Contains (sig))
+                               return (MetadataToken) m_standaloneSigCache [sig];
+
+                       StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
+                       StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (sig);
+
+                       sasTable.Rows.Add(sasRow);
+
+                       MetadataToken token = new MetadataToken (TokenType.Signature, (uint) sasTable.Rows.Count);
+                       m_standaloneSigCache [sig] = token;
+                       return token;
+               }
+
+               static int GetLength (Instruction start, Instruction end, InstructionCollection instructions)
+               {
+                       Instruction last = instructions [instructions.Count - 1];
+                       return (end == instructions.Outside ? last.Offset + last.GetSize () : end.Offset) - start.Offset;
+               }
+
+               static bool IsRangeFat (Instruction start, Instruction end, InstructionCollection instructions)
+               {
+                       return GetLength (start, end, instructions) >= 256 ||
+                               start.Offset >= 65536;
+               }
+
+               static bool IsFat (ExceptionHandlerCollection seh)
+               {
+                       for (int i = 0; i < seh.Count; i++) {
+                               ExceptionHandler eh = seh [i];
+                               if (IsRangeFat (eh.TryStart, eh.TryEnd, seh.Container.Instructions))
+                                       return true;
+
+                               if (IsRangeFat (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions))
+                                       return true;
+
+                               switch (eh.Type) {
+                               case ExceptionHandlerType.Filter :
+                                       if (IsRangeFat (eh.FilterStart, eh.FilterEnd, seh.Container.Instructions))
+                                               return true;
+                                       break;
+                               }
+                       }
+
+                       return false;
+               }
+
+               void WriteExceptionHandlerCollection (ExceptionHandlerCollection seh)
+               {
+                       m_codeWriter.QuadAlign ();
+
+                       if (seh.Count < 0x15 && !IsFat (seh)) {
+                               m_codeWriter.Write ((byte) MethodDataSection.EHTable);
+                               m_codeWriter.Write ((byte) (seh.Count * 12 + 4));
+                               m_codeWriter.Write (new byte [2]);
+                               foreach (ExceptionHandler eh in seh) {
+                                       m_codeWriter.Write ((ushort) eh.Type);
+                                       m_codeWriter.Write ((ushort) eh.TryStart.Offset);
+                                       m_codeWriter.Write ((byte) (eh.TryEnd.Offset - eh.TryStart.Offset));
+                                       m_codeWriter.Write ((ushort) eh.HandlerStart.Offset);
+                                       m_codeWriter.Write ((byte) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
+                                       WriteHandlerSpecific (eh);
+                               }
+                       } else {
+                               m_codeWriter.Write ((byte) (MethodDataSection.FatFormat | MethodDataSection.EHTable));
+                               WriteFatBlockSize (seh);
+                               foreach (ExceptionHandler eh in seh) {
+                                       m_codeWriter.Write ((uint) eh.Type);
+                                       m_codeWriter.Write ((uint) eh.TryStart.Offset);
+                                       m_codeWriter.Write ((uint) (eh.TryEnd.Offset - eh.TryStart.Offset));
+                                       m_codeWriter.Write ((uint) eh.HandlerStart.Offset);
+                                       m_codeWriter.Write ((uint) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
+                                       WriteHandlerSpecific (eh);
+                               }
+                       }
+               }
+
+               void WriteFatBlockSize (ExceptionHandlerCollection seh)
+               {
+                       int size = seh.Count * 24 + 4;
+                       m_codeWriter.Write ((byte) (size & 0xff));
+                       m_codeWriter.Write ((byte) ((size >> 8) & 0xff));
+                       m_codeWriter.Write ((byte) ((size >> 16) & 0xff));
+               }
+
+               void WriteHandlerSpecific (ExceptionHandler eh)
+               {
+                       switch (eh.Type) {
+                       case ExceptionHandlerType.Catch :
+                               WriteToken (GetTypeToken (eh.CatchType));
+                               break;
+                       case ExceptionHandlerType.Filter :
+                               m_codeWriter.Write ((uint) eh.FilterStart.Offset);
+                               break;
+                       default :
+                               m_codeWriter.Write (0);
+                               break;
+                       }
+               }
+
+               public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+               {
+                       MethodBody body = variables.Container as MethodBody;
+                       if (body == null || stripped)
+                               return;
+
+                       uint sig = m_reflectWriter.SignatureWriter.AddLocalVarSig (
+                                       GetLocalVarSig (variables));
+
+                       if (m_localSigCache.Contains (sig)) {
+                               body.LocalVarToken = (int) m_localSigCache [sig];
+                               return;
+                       }
+
+                       StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
+                       StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (
+                               sig);
+
+                       sasTable.Rows.Add (sasRow);
+                       body.LocalVarToken = sasTable.Rows.Count;
+                       m_localSigCache [sig] = body.LocalVarToken;
+               }
+
+               public override void TerminateMethodBody (MethodBody body)
+               {
+                       long pos = m_binaryWriter.BaseStream.Position;
+
+                       if (body.HasVariables || body.HasExceptionHandlers
+                               || m_codeWriter.BaseStream.Length >= 64 || body.MaxStack > 8) {
+
+                               MethodHeader header = MethodHeader.FatFormat;
+                               if (body.InitLocals)
+                                       header |= MethodHeader.InitLocals;
+                               if (body.HasExceptionHandlers)
+                                       header |= MethodHeader.MoreSects;
+
+                               m_binaryWriter.Write ((byte) header);
+                               m_binaryWriter.Write ((byte) 0x30); // (header size / 4) << 4
+                               m_binaryWriter.Write ((short) body.MaxStack);
+                               m_binaryWriter.Write ((int) m_codeWriter.BaseStream.Length);
+                               // the token should be zero if there are no variables
+                               int token = body.HasVariables ? ((int) TokenType.Signature | body.LocalVarToken) : 0;
+                               m_binaryWriter.Write (token);
+
+                               if (body.HasExceptionHandlers)
+                                       WriteExceptionHandlerCollection (body.ExceptionHandlers);
+                       } else
+                               m_binaryWriter.Write ((byte) ((byte) MethodHeader.TinyFormat |
+                                       m_codeWriter.BaseStream.Length << 2));
+
+                       m_binaryWriter.Write (m_codeWriter);
+                       m_binaryWriter.QuadAlign ();
+
+                       m_reflectWriter.MetadataWriter.AddData (
+                               (int) (m_binaryWriter.BaseStream.Position - pos));
+               }
+
+               public LocalVarSig.LocalVariable GetLocalVariableSig (VariableDefinition var)
+               {
+                       LocalVarSig.LocalVariable lv = new LocalVarSig.LocalVariable ();
+                       TypeReference type = var.VariableType;
+
+                       lv.CustomMods = m_reflectWriter.GetCustomMods (type);
+
+                       if (type is PinnedType) {
+                               lv.Constraint |= Constraint.Pinned;
+                               type = (type as PinnedType).ElementType;
+                       }
+
+                       if (type is ReferenceType) {
+                               lv.ByRef = true;
+                               type = (type as ReferenceType).ElementType;
+                       }
+
+                       lv.Type = m_reflectWriter.GetSigType (type);
+
+                       return lv;
+               }
+
+               public LocalVarSig GetLocalVarSig (VariableDefinitionCollection vars)
+               {
+                       LocalVarSig lvs = new LocalVarSig ();
+                       lvs.CallingConvention |= 0x7;
+                       lvs.Count = vars.Count;
+                       lvs.LocalVariables = new LocalVarSig.LocalVariable [lvs.Count];
+                       for (int i = 0; i < lvs.Count; i++) {
+                               lvs.LocalVariables [i] = GetLocalVariableSig (vars [i]);
+                       }
+
+                       return lvs;
+               }
+
+               void ComputeMaxStack (InstructionCollection instructions)
+               {
+                       int current = 0;
+                       int max = 0;
+                       m_stackSizes.Clear ();
+
+                       foreach (ExceptionHandler eh in instructions.Container.ExceptionHandlers) {
+                               switch (eh.Type) {
+                               case ExceptionHandlerType.Catch :
+                               case ExceptionHandlerType.Filter :
+                                       m_stackSizes [eh.HandlerStart] = 1;
+                                       max = 1;
+                                       break;
+                               }
+                       }
+
+                       foreach (Instruction instr in instructions) {
+
+                               object savedSize = m_stackSizes [instr];
+                               if (savedSize != null)
+                                       current = (int) savedSize;
+
+                               current -= GetPopDelta (instructions.Container.Method, instr, current);
+
+                               if (current < 0)
+                                       current = 0;
+
+                               current += GetPushDelta (instr);
+
+                               if (current > max)
+                                       max = current;
+
+                               // for forward branches, copy the stack size for the instruction that is being branched to
+                               switch (instr.OpCode.OperandType) {
+                                       case OperandType.InlineBrTarget:
+                                       case OperandType.ShortInlineBrTarget:
+                                               m_stackSizes [instr.Operand] = current;
+                                       break;
+                                       case OperandType.InlineSwitch:
+                                               foreach (Instruction target in (Instruction []) instr.Operand)
+                                                       m_stackSizes [target] = current;
+                                       break;
+                               }
+
+                               switch (instr.OpCode.FlowControl) {
+                               case FlowControl.Branch:
+                               case FlowControl.Throw:
+                               case FlowControl.Return:
+                                       // next statement is not reachable from this statement, so reset the stack depth to 0
+                                       current = 0;
+                                       break;
+                               }
+                       }
+
+                       instructions.Container.MaxStack = max + 1; // you never know
+               }
+
+               static int GetPushDelta (Instruction instruction)
+               {
+                       OpCode code = instruction.OpCode;
+                       switch (code.StackBehaviourPush) {
+                       case StackBehaviour.Push0:
+                               return 0;
+
+                       case StackBehaviour.Push1:
+                       case StackBehaviour.Pushi:
+                       case StackBehaviour.Pushi8:
+                       case StackBehaviour.Pushr4:
+                       case StackBehaviour.Pushr8:
+                       case StackBehaviour.Pushref:
+                               return 1;
+
+                       case StackBehaviour.Push1_push1:
+                               return 2;
+
+                       case StackBehaviour.Varpush:
+                               if (code.FlowControl != FlowControl.Call)
+                                       break;
+
+                               IMethodSignature method = (IMethodSignature) instruction.Operand;
+                               return IsVoid (method.ReturnType.ReturnType) ? 0 : 1;
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               static int GetPopDelta (MethodDefinition current, Instruction instruction, int height)
+               {
+                       OpCode code = instruction.OpCode;
+                       switch (code.StackBehaviourPop) {
+                       case StackBehaviour.Pop0:
+                               return 0;
+                       case StackBehaviour.Popi:
+                       case StackBehaviour.Popref:
+                       case StackBehaviour.Pop1:
+                               return 1;
+
+                       case StackBehaviour.Pop1_pop1:
+                       case StackBehaviour.Popi_pop1:
+                       case StackBehaviour.Popi_popi:
+                       case StackBehaviour.Popi_popi8:
+                       case StackBehaviour.Popi_popr4:
+                       case StackBehaviour.Popi_popr8:
+                       case StackBehaviour.Popref_pop1:
+                       case StackBehaviour.Popref_popi:
+                               return 2;
+
+                       case StackBehaviour.Popi_popi_popi:
+                       case StackBehaviour.Popref_popi_popi:
+                       case StackBehaviour.Popref_popi_popi8:
+                       case StackBehaviour.Popref_popi_popr4:
+                       case StackBehaviour.Popref_popi_popr8:
+                       case StackBehaviour.Popref_popi_popref:
+                               return 3;
+
+                       case StackBehaviour.PopAll:
+                               return height;
+
+                       case StackBehaviour.Varpop:
+                               if (code == OpCodes.Ret)
+                                       return IsVoid (current.ReturnType.ReturnType) ? 0 : 1;
+
+                               if (code.FlowControl != FlowControl.Call)
+                                       break;
+
+                               IMethodSignature method = (IMethodSignature) instruction.Operand;
+                               int count = method.HasParameters ? method.Parameters.Count : 0;
+                               if (method.HasThis && code != OpCodes.Newobj)
+                                       ++count;
+
+                               return count;
+                       }
+
+                       throw new NotSupportedException ();
+               }
+
+               static bool IsVoid (TypeReference type)
+               {
+                       return type.FullName == Constants.Void;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs
new file mode 100644 (file)
index 0000000..bdb107c
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// Document.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+
+       internal class Document {
+
+               string m_url;
+
+               Guid m_type;
+               DocumentHashAlgorithm m_hashAlgorithm;
+               Guid m_language;
+               Guid m_languageVendor;
+
+               byte [] m_hash;
+
+               public string Url {
+                       get { return m_url; }
+                       set { m_url = value; }
+               }
+
+               public Guid Type {
+                       get { return m_type; }
+                       set { m_type = value; }
+               }
+
+               public DocumentHashAlgorithm HashAlgorithm {
+                       get { return m_hashAlgorithm; }
+                       set { m_hashAlgorithm = value; }
+               }
+
+               public Guid Language {
+                       get { return m_language; }
+                       set { m_language = value; }
+               }
+
+               public Guid LanguageVendor {
+                       get { return m_languageVendor; }
+                       set { m_languageVendor = value; }
+               }
+
+               public byte [] Hash {
+                       get { return m_hash; }
+                       set { m_hash = value; }
+               }
+
+               public Document (string url)
+               {
+                       m_url = url;
+                       m_hash = new byte [0];
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
new file mode 100644 (file)
index 0000000..be6548a
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// DocumentHashAlgorithm.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum DocumentHashAlgorithm {
+               [Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)] None,
+               [Guid (0x406ea660, 0x64cf, 0x4c82, 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99)] MD5,
+               [Guid (0xff1816ec, 0xaa5e, 0x4d10, 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60)] SHA1
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs
new file mode 100644 (file)
index 0000000..37b6ece
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// DocumentLanguage.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+
+       internal abstract class DocumentLanguage {
+#if CF_2_0
+               public static readonly Guid None = new Guid ("00000000-0000-0000-0000-000000000000");
+               public static readonly Guid C = new Guid ("63a08714-fc37-11d2-904c-00c04fa302a1");
+               public static readonly Guid Cpp = new Guid ("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
+               public static readonly Guid CSharp = new Guid ("3f5162f8-07c6-11d3-9053-00c04fa302a1");
+               public static readonly Guid Basic = new Guid ("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
+               public static readonly Guid Java = new Guid ("3a12d0b4-c26c-11d0-b442-00a0244a1dd2");
+               public static readonly Guid Cobol = new Guid ("af046cd1-d0e1-11d2-977c-00a0c9b4d50c");
+               public static readonly Guid Pascal = new Guid ("af046cd2-d0e1-11d2-977c-00a0c9b4d50c");
+               public static readonly Guid CIL = new Guid ("af046cd3-d0e1-11d2-977c-00a0c9b4d50c");
+               public static readonly Guid JScript = new Guid ("3a12d0b6-c26c-11d0-b442-00a0244a1dd2");
+               public static readonly Guid SMC = new Guid ("0d9b9f7b-6611-11d3-bd2a-0000f80849bd");
+               public static readonly Guid MCpp = new Guid ("4b35fde8-07c6-11d3-9053-00c04fa302a1");
+#else
+               public static readonly Guid None = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00);
+               public static readonly Guid C = new Guid (0x63a08714, 0xfc37, 0x11d2, 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+               public static readonly Guid Cpp = new Guid (0x3a12d0b7, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+               public static readonly Guid CSharp = new Guid (0x3f5162f8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+               public static readonly Guid Basic = new Guid (0x3a12d0b8, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+               public static readonly Guid Java = new Guid (0x3a12d0b4, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+               public static readonly Guid Cobol = new Guid (0xaf046cd1, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+               public static readonly Guid Pascal = new Guid (0xaf046cd2, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+               public static readonly Guid CIL = new Guid (0xaf046cd3, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+               public static readonly Guid JScript = new Guid (0x3a12d0b6, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+               public static readonly Guid SMC = new Guid (0xd9b9f7b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
+               public static readonly Guid MCpp = new Guid (0x4b35fde8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+#endif
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs
new file mode 100644 (file)
index 0000000..e4bb6d0
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// DocumentLanguageVendor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+
+       internal abstract class DocumentLanguageVendor {
+#if CF_2_0
+               public static readonly Guid Other = new Guid ("00000000-0000-0000-0000-000000000000");
+               public static readonly Guid Microsoft = new Guid ("994b45c4-e6e9-11d2-903f-00c04fa302a1");
+#else
+               public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+               public static readonly Guid Microsoft = new Guid (0x994b45c4, 0xe6e9, 0x11d2, 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+#endif
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs
new file mode 100644 (file)
index 0000000..b66605e
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// DocumentType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+
+       internal abstract class DocumentType {
+
+               public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+               public static readonly Guid Text = new Guid (0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x00, 0x00, 0xf8, 0x08, 0x49, 0xbd);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs
new file mode 100644 (file)
index 0000000..8a86120
--- /dev/null
@@ -0,0 +1,95 @@
+//
+// ExceptionHandler.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using Mono.Cecil;
+
+       internal sealed class ExceptionHandler : ICodeVisitable {
+
+               Instruction m_tryStart;
+               Instruction m_tryEnd;
+               Instruction m_filterStart;
+               Instruction m_filterEnd;
+               Instruction m_handlerStart;
+               Instruction m_handlerEnd;
+
+               TypeReference m_catchType;
+               ExceptionHandlerType m_type;
+
+               public Instruction TryStart {
+                       get { return m_tryStart; }
+                       set { m_tryStart = value; }
+               }
+
+               public Instruction TryEnd {
+                       get { return m_tryEnd; }
+                       set { m_tryEnd = value; }
+               }
+
+               public Instruction FilterStart {
+                       get { return m_filterStart; }
+                       set { m_filterStart = value; }
+               }
+
+               public Instruction FilterEnd {
+                       get { return m_filterEnd; }
+                       set { m_filterEnd = value; }
+               }
+
+               public Instruction HandlerStart {
+                       get { return m_handlerStart; }
+                       set { m_handlerStart = value; }
+               }
+
+               public Instruction HandlerEnd {
+                       get { return m_handlerEnd; }
+                       set { m_handlerEnd = value; }
+               }
+
+               public TypeReference CatchType {
+                       get { return m_catchType; }
+                       set { m_catchType = value; }
+               }
+
+               public ExceptionHandlerType Type {
+                       get { return m_type; }
+                       set { m_type = value; }
+               }
+
+               public ExceptionHandler (ExceptionHandlerType type)
+               {
+                       m_type = type;
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitExceptionHandler (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
new file mode 100644 (file)
index 0000000..8897cbd
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ExceptionHandlerCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ExceptionHandlerCollection : CollectionBase, ICodeVisitable {
+
+               MethodBody m_container;
+
+               public ExceptionHandler this [int index] {
+                       get { return List [index] as ExceptionHandler; }
+                       set { List [index] = value; }
+               }
+
+               public MethodBody Container {
+                       get { return m_container; }
+               }
+
+               public ExceptionHandlerCollection (MethodBody container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (ExceptionHandler value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (ExceptionHandler value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (ExceptionHandler value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, ExceptionHandler value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (ExceptionHandler value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is ExceptionHandler))
+                               throw new ArgumentException ("Must be of type " + typeof (ExceptionHandler).FullName);
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitExceptionHandlerCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs
new file mode 100644 (file)
index 0000000..a2008eb
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// ExceptionHandlerType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum ExceptionHandlerType {
+               Catch = 0x0000,
+               Filter = 0x0001,
+               Finally = 0x0002,
+               Fault = 0x0004
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs
new file mode 100644 (file)
index 0000000..71789bc
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// FlowControl.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum FlowControl {
+               Branch,
+               Break,
+               Call,
+               Cond_Branch,
+               Meta,
+               Next,
+               Phi,
+               Return,
+               Throw
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs
new file mode 100644 (file)
index 0000000..fc6a8ef
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// GuidAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Reflection;
+
+       [AttributeUsage (AttributeTargets.Field)]
+       internal sealed class GuidAttribute : Attribute {
+
+               private Guid m_guid;
+
+               public Guid Guid {
+                       get { return m_guid; }
+               }
+
+               GuidAttribute ()
+               {
+                       m_guid = new Guid ();
+               }
+
+               public GuidAttribute (
+                       uint a,
+                       ushort b,
+                       ushort c,
+                       byte d,
+                       byte e,
+                       byte f,
+                       byte g,
+                       byte h,
+                       byte i,
+                       byte j,
+                       byte k)
+               {
+                       m_guid = new Guid ((int) a, (short) b, (short) c, d, e, f, g, h, i, j, k);
+               }
+
+               public static int GetValueFromGuid (Guid id, Type enumeration)
+               {
+                       foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
+                               if (id == GetGuidAttribute (fi).Guid)
+                                       return (int) fi.GetValue (null);
+
+                       return -1;
+               }
+
+               public static Guid GetGuidFromValue (int value, Type enumeration)
+               {
+                       foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
+                               if (value == (int) fi.GetValue (null))
+                                       return GetGuidAttribute (fi).Guid;
+
+                       return new Guid ();
+               }
+
+               static GuidAttribute GetGuidAttribute (FieldInfo fi)
+               {
+                       GuidAttribute [] attributes = fi.GetCustomAttributes (typeof (GuidAttribute), false) as GuidAttribute [];
+                       if (attributes == null || attributes.Length != 1)
+                               return new GuidAttribute ();
+
+                       return attributes [0];
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs
new file mode 100644 (file)
index 0000000..964bb42
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// ICodeVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal interface ICodeVisitable {
+               void Accept (ICodeVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs
new file mode 100644 (file)
index 0000000..1ce20a4
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// ICodeVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal interface ICodeVisitor {
+
+               void VisitMethodBody (MethodBody body);
+               void VisitInstructionCollection (InstructionCollection instructions);
+               void VisitInstruction (Instruction instr);
+               void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh);
+               void VisitExceptionHandler (ExceptionHandler eh);
+               void VisitVariableDefinitionCollection (VariableDefinitionCollection variables);
+               void VisitVariableDefinition (VariableDefinition var);
+               void VisitScopeCollection (ScopeCollection scopes);
+               void VisitScope (Scope scope);
+
+               void TerminateMethodBody (MethodBody body);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs
new file mode 100644 (file)
index 0000000..e246f84
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// Document.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal interface IScopeProvider {
+
+               ScopeCollection Scopes { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs
new file mode 100644 (file)
index 0000000..2050a3c
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// ISymbolReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace Mono.Cecil.Cil {
+
+       internal interface ISymbolReader : IDisposable {
+
+               void Read (MethodBody body, IDictionary instructions);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs
new file mode 100644 (file)
index 0000000..5d64c16
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// ISymbolStoreFactory.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal interface ISymbolStoreFactory {
+
+               ISymbolReader CreateReader (ModuleDefinition module, string assemblyFileName);
+               ISymbolWriter CreateWriter (ModuleDefinition module, string assemblyFileName);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs
new file mode 100644 (file)
index 0000000..615c54a
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// ISymbolWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+
+       internal interface ISymbolWriter : IDisposable {
+
+               void Write (MethodBody body);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
new file mode 100644 (file)
index 0000000..147c099
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// IVariableDefinitionProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal interface IVariableDefinitionProvider {
+
+               VariableDefinitionCollection Variables { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs
new file mode 100644 (file)
index 0000000..f4f92ea
--- /dev/null
@@ -0,0 +1,133 @@
+//
+// Instruction.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal sealed class Instruction : ICodeVisitable {
+
+               int m_offset;
+               OpCode m_opCode;
+               object m_operand;
+
+               Instruction m_previous;
+               Instruction m_next;
+
+               SequencePoint m_sequencePoint;
+
+               public int Offset {
+                       get { return m_offset; }
+                       set { m_offset = value; }
+               }
+
+               public OpCode OpCode {
+                       get { return m_opCode; }
+                       set { m_opCode = value; }
+               }
+
+               public object Operand {
+                       get { return m_operand; }
+                       set { m_operand = value; }
+               }
+
+               public Instruction Previous {
+                       get { return m_previous; }
+                       set { m_previous = value; }
+               }
+
+               public Instruction Next {
+                       get { return m_next; }
+                       set { m_next = value; }
+               }
+
+               public SequencePoint SequencePoint {
+                       get { return m_sequencePoint; }
+                       set { m_sequencePoint = value; }
+               }
+
+               internal Instruction (int offset, OpCode opCode, object operand) : this (offset, opCode)
+               {
+                       m_operand = operand;
+               }
+
+               internal Instruction (int offset, OpCode opCode)
+               {
+                       m_offset = offset;
+                       m_opCode = opCode;
+               }
+
+               internal Instruction (OpCode opCode, object operand) : this (0, opCode, operand)
+               {
+               }
+
+               internal Instruction (OpCode opCode) : this (0, opCode)
+               {
+               }
+
+               public int GetSize ()
+               {
+                       int size = m_opCode.Size;
+
+                       switch (m_opCode.OperandType) {
+                       case OperandType.InlineSwitch:
+                               size += (1 + ((Instruction []) m_operand).Length) * 4;
+                               break;
+                       case OperandType.InlineI8:
+                       case OperandType.InlineR:
+                               size += 8;
+                               break;
+                       case OperandType.InlineBrTarget:
+                       case OperandType.InlineField:
+                       case OperandType.InlineI:
+                       case OperandType.InlineMethod:
+                       case OperandType.InlineString:
+                       case OperandType.InlineTok:
+                       case OperandType.InlineType:
+                       case OperandType.ShortInlineR:
+                               size += 4;
+                               break;
+                       case OperandType.InlineParam:
+                       case OperandType.InlineVar:
+                               size += 2;
+                               break;
+                       case OperandType.ShortInlineBrTarget:
+                       case OperandType.ShortInlineI:
+                       case OperandType.ShortInlineParam:
+                       case OperandType.ShortInlineVar:
+                               size += 1;
+                               break;
+                       }
+
+                       return size;
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitInstruction (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs
new file mode 100644 (file)
index 0000000..1c6e60f
--- /dev/null
@@ -0,0 +1,94 @@
+//
+// InstructionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Sep 28 17:54:43 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class InstructionCollection : CollectionBase, ICodeVisitable {
+
+               MethodBody m_container;
+               public readonly Instruction Outside = new Instruction (int.MaxValue, OpCodes.Nop);
+
+               public Instruction this [int index] {
+                       get { return List [index] as Instruction; }
+                       set { List [index] = value; }
+               }
+
+               public MethodBody Container {
+                       get { return m_container; }
+               }
+
+               public InstructionCollection (MethodBody container)
+               {
+                       m_container = container;
+               }
+
+               internal void Add (Instruction value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (Instruction value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (Instruction value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               internal void Insert (int index, Instruction value)
+               {
+                       List.Insert (index, value);
+               }
+
+               internal void Remove (Instruction value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is Instruction))
+                               throw new ArgumentException ("Must be of type " + typeof (Instruction).FullName);
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitInstructionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs
new file mode 100644 (file)
index 0000000..56e08b3
--- /dev/null
@@ -0,0 +1,623 @@
+//
+// MethodBody.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using Mono.Cecil;
+
+       internal sealed class MethodBody : IVariableDefinitionProvider, IScopeProvider, ICodeVisitable {
+
+               MethodDefinition m_method;
+               int m_maxStack;
+               int m_codeSize;
+               bool m_initLocals;
+               int m_localVarToken;
+
+               InstructionCollection m_instructions;
+               ExceptionHandlerCollection m_exceptions;
+               VariableDefinitionCollection m_variables;
+               ScopeCollection m_scopes;
+
+               private CilWorker m_cilWorker;
+
+               public MethodDefinition Method {
+                       get { return m_method; }
+               }
+
+               public int MaxStack {
+                       get { return m_maxStack; }
+                       set { m_maxStack = value; }
+               }
+
+               public int CodeSize {
+                       get { return m_codeSize; }
+                       set { m_codeSize = value; }
+               }
+
+               public bool InitLocals {
+                       get { return m_initLocals; }
+                       set { m_initLocals = value; }
+               }
+
+               public int LocalVarToken {
+                       get { return m_localVarToken; }
+                       set { m_localVarToken = value; }
+               }
+
+               public CilWorker CilWorker {
+                       get {
+                               if (m_cilWorker == null)
+                                       m_cilWorker = new CilWorker (this);
+                               return m_cilWorker;
+                       }
+                       set { m_cilWorker = value; }
+               }
+
+               public InstructionCollection Instructions {
+                       get { return m_instructions; }
+               }
+
+               public bool HasExceptionHandlers {
+                       get { return m_exceptions != null && m_exceptions.Count > 0; }
+               }
+
+               public ExceptionHandlerCollection ExceptionHandlers {
+                       get {
+                               if (m_exceptions == null)
+                                       m_exceptions = new ExceptionHandlerCollection (this);
+                               return m_exceptions;
+                       }
+               }
+
+               public bool HasVariables {
+                       get { return m_variables != null && m_variables.Count > 0; }
+               }
+
+               public VariableDefinitionCollection Variables {
+                       get {
+                               if (m_variables == null)
+                                       m_variables = new VariableDefinitionCollection (this);
+                               return m_variables;
+                       }
+               }
+
+               public bool HasScopes {
+                       get { return m_scopes != null && m_scopes.Count > 0; }
+               }
+
+               public ScopeCollection Scopes {
+                       get {
+                               if (m_scopes == null)
+                                       m_scopes = new ScopeCollection (this);
+                               return m_scopes;
+                       }
+               }
+
+               public MethodBody (MethodDefinition meth)
+               {
+                       m_method = meth;
+                       // there is always a RET instruction (if a body is present)
+                       m_instructions = new InstructionCollection (this);
+               }
+
+               internal static Instruction GetInstruction (MethodBody oldBody, MethodBody newBody, Instruction i)
+               {
+                       int pos = oldBody.Instructions.IndexOf (i);
+                       if (pos > -1 && pos < newBody.Instructions.Count)
+                               return newBody.Instructions [pos];
+
+                       return newBody.Instructions.Outside;
+               }
+
+               internal static MethodBody Clone (MethodBody body, MethodDefinition parent, ImportContext context)
+               {
+                       MethodBody nb = new MethodBody (parent);
+                       nb.MaxStack = body.MaxStack;
+                       nb.InitLocals = body.InitLocals;
+                       nb.CodeSize = body.CodeSize;
+
+                       CilWorker worker = nb.CilWorker;
+
+                       if (body.HasVariables) {
+                               foreach (VariableDefinition var in body.Variables)
+                                       nb.Variables.Add (new VariableDefinition (
+                                               var.Name, var.Index, parent,
+                                               context.Import (var.VariableType)));
+                       }
+
+                       foreach (Instruction instr in body.Instructions) {
+                               Instruction ni = new Instruction (instr.OpCode);
+
+                               switch (instr.OpCode.OperandType) {
+                               case OperandType.InlineParam :
+                               case OperandType.ShortInlineParam :
+                                       if (instr.Operand == body.Method.This)
+                                               ni.Operand = nb.Method.This;
+                                       else {
+                                               int param = body.Method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+                                               ni.Operand = parent.Parameters [param];
+                                       }
+                                       break;
+                               case OperandType.InlineVar :
+                               case OperandType.ShortInlineVar :
+                                       int var = body.Variables.IndexOf ((VariableDefinition) instr.Operand);
+                                       ni.Operand = nb.Variables [var];
+                                       break;
+                               case OperandType.InlineField :
+                                       ni.Operand = context.Import ((FieldReference) instr.Operand);
+                                       break;
+                               case OperandType.InlineMethod :
+                                       ni.Operand = context.Import ((MethodReference) instr.Operand);
+                                       break;
+                               case OperandType.InlineType :
+                                       ni.Operand = context.Import ((TypeReference) instr.Operand);
+                                       break;
+                               case OperandType.InlineTok :
+                                       if (instr.Operand is TypeReference)
+                                               ni.Operand = context.Import ((TypeReference) instr.Operand);
+                                       else if (instr.Operand is FieldReference)
+                                               ni.Operand = context.Import ((FieldReference) instr.Operand);
+                                       else if (instr.Operand is MethodReference)
+                                               ni.Operand = context.Import ((MethodReference) instr.Operand);
+                                       break;
+                               case OperandType.ShortInlineBrTarget :
+                               case OperandType.InlineBrTarget :
+                               case OperandType.InlineSwitch :
+                                       break;
+                               default :
+                                       ni.Operand = instr.Operand;
+                                       break;
+                               }
+
+                               worker.Append (ni);
+                       }
+
+                       for (int i = 0; i < body.Instructions.Count; i++) {
+                               Instruction instr = nb.Instructions [i];
+                               Instruction oldi = body.Instructions [i];
+
+                               if (instr.OpCode.OperandType == OperandType.InlineSwitch) {
+                                       Instruction [] olds = (Instruction []) oldi.Operand;
+                                       Instruction [] targets = new Instruction [olds.Length];
+
+                                       for (int j = 0; j < targets.Length; j++)
+                                               targets [j] = GetInstruction (body, nb, olds [j]);
+
+                                       instr.Operand = targets;
+                               } else if (instr.OpCode.OperandType == OperandType.ShortInlineBrTarget || instr.OpCode.OperandType == OperandType.InlineBrTarget)
+                                       instr.Operand = GetInstruction (body, nb, (Instruction) oldi.Operand);
+                       }
+
+                       if (!body.HasExceptionHandlers)
+                               return nb;
+
+                       foreach (ExceptionHandler eh in body.ExceptionHandlers) {
+                               ExceptionHandler neh = new ExceptionHandler (eh.Type);
+                               neh.TryStart = GetInstruction (body, nb, eh.TryStart);
+                               neh.TryEnd = GetInstruction (body, nb, eh.TryEnd);
+                               neh.HandlerStart = GetInstruction (body, nb, eh.HandlerStart);
+                               neh.HandlerEnd = GetInstruction (body, nb, eh.HandlerEnd);
+
+                               switch (eh.Type) {
+                               case ExceptionHandlerType.Catch :
+                                       neh.CatchType = context.Import (eh.CatchType);
+                                       break;
+                               case ExceptionHandlerType.Filter :
+                                       neh.FilterStart = GetInstruction (body, nb, eh.FilterStart);
+                                       neh.FilterEnd = GetInstruction (body, nb, eh.FilterEnd);
+                                       break;
+                               }
+
+                               nb.ExceptionHandlers.Add (neh);
+                       }
+
+                       return nb;
+               }
+
+               public void Simplify ()
+               {
+                       foreach (Instruction i in this.Instructions) {
+                               if (i.OpCode.OpCodeType != OpCodeType.Macro)
+                                       continue;
+
+                               switch (i.OpCode.Code) {
+                               case Code.Ldarg_0 :
+                                       Modify (i, OpCodes.Ldarg,
+                                               CodeReader.GetParameter (this, 0));
+                                       break;
+                               case Code.Ldarg_1 :
+                                       Modify (i, OpCodes.Ldarg,
+                                               CodeReader.GetParameter (this, 1));
+                                       break;
+                               case Code.Ldarg_2 :
+                                       Modify (i, OpCodes.Ldarg,
+                                               CodeReader.GetParameter (this, 2));
+                                       break;
+                               case Code.Ldarg_3 :
+                                       Modify (i, OpCodes.Ldarg,
+                                               CodeReader.GetParameter (this, 3));
+                                       break;
+                               case Code.Ldloc_0 :
+                                       Modify (i, OpCodes.Ldloc,
+                                               CodeReader.GetVariable (this, 0));
+                                       break;
+                               case Code.Ldloc_1 :
+                                       Modify (i, OpCodes.Ldloc,
+                                               CodeReader.GetVariable (this, 1));
+                                       break;
+                               case Code.Ldloc_2 :
+                                       Modify (i, OpCodes.Ldloc,
+                                               CodeReader.GetVariable (this, 2));
+                                       break;
+                               case Code.Ldloc_3 :
+                                       Modify (i, OpCodes.Ldloc,
+                                               CodeReader.GetVariable (this, 3));
+                                       break;
+                               case Code.Stloc_0 :
+                                       Modify (i, OpCodes.Stloc,
+                                               CodeReader.GetVariable (this, 0));
+                                       break;
+                               case Code.Stloc_1 :
+                                       Modify (i, OpCodes.Stloc,
+                                               CodeReader.GetVariable (this, 1));
+                                       break;
+                               case Code.Stloc_2 :
+                                       Modify (i, OpCodes.Stloc,
+                                               CodeReader.GetVariable (this, 2));
+                                       break;
+                               case Code.Stloc_3 :
+                                       Modify (i, OpCodes.Stloc,
+                                               CodeReader.GetVariable (this, 3));
+                                       break;
+                               case Code.Ldarg_S :
+                                       i.OpCode = OpCodes.Ldarg;
+                                       break;
+                               case Code.Ldarga_S :
+                                       i.OpCode = OpCodes.Ldarga;
+                                       break;
+                               case Code.Starg_S :
+                                       i.OpCode = OpCodes.Starg;
+                                       break;
+                               case Code.Ldloc_S :
+                                       i.OpCode = OpCodes.Ldloc;
+                                       break;
+                               case Code.Ldloca_S :
+                                       i.OpCode = OpCodes.Ldloca;
+                                       break;
+                               case Code.Stloc_S :
+                                       i.OpCode = OpCodes.Stloc;
+                                       break;
+                               case Code.Ldc_I4_M1 :
+                                       Modify (i, OpCodes.Ldc_I4, -1);
+                                       break;
+                               case Code.Ldc_I4_0 :
+                                       Modify (i, OpCodes.Ldc_I4, 0);
+                                       break;
+                               case Code.Ldc_I4_1 :
+                                       Modify (i, OpCodes.Ldc_I4, 1);
+                                       break;
+                               case Code.Ldc_I4_2 :
+                                       Modify (i, OpCodes.Ldc_I4, 2);
+                                       break;
+                               case Code.Ldc_I4_3 :
+                                       Modify (i, OpCodes.Ldc_I4, 3);
+                                       break;
+                               case Code.Ldc_I4_4 :
+                                       Modify (i, OpCodes.Ldc_I4, 4);
+                                       break;
+                               case Code.Ldc_I4_5 :
+                                       Modify (i, OpCodes.Ldc_I4, 5);
+                                       break;
+                               case Code.Ldc_I4_6 :
+                                       Modify (i, OpCodes.Ldc_I4, 6);
+                                       break;
+                               case Code.Ldc_I4_7 :
+                                       Modify (i, OpCodes.Ldc_I4, 7);
+                                       break;
+                               case Code.Ldc_I4_8 :
+                                       Modify (i, OpCodes.Ldc_I4, 8);
+                                       break;
+                               case Code.Ldc_I4_S :
+                                       i.OpCode = OpCodes.Ldc_I4;
+                                       i.Operand = (int) (sbyte) i.Operand;
+                                       break;
+                               case Code.Br_S :
+                                       i.OpCode = OpCodes.Br;
+                                       break;
+                               case Code.Brfalse_S :
+                                       i.OpCode = OpCodes.Brfalse;
+                                       break;
+                               case Code.Brtrue_S :
+                                       i.OpCode = OpCodes.Brtrue;
+                                       break;
+                               case Code.Beq_S :
+                                       i.OpCode = OpCodes.Beq;
+                                       break;
+                               case Code.Bge_S :
+                                       i.OpCode = OpCodes.Bge;
+                                       break;
+                               case Code.Bgt_S :
+                                       i.OpCode = OpCodes.Bgt;
+                                       break;
+                               case Code.Ble_S :
+                                       i.OpCode = OpCodes.Ble;
+                                       break;
+                               case Code.Blt_S :
+                                       i.OpCode = OpCodes.Blt;
+                                       break;
+                               case Code.Bne_Un_S :
+                                       i.OpCode = OpCodes.Bne_Un;
+                                       break;
+                               case Code.Bge_Un_S :
+                                       i.OpCode = OpCodes.Bge_Un;
+                                       break;
+                               case Code.Bgt_Un_S :
+                                       i.OpCode = OpCodes.Bgt_Un;
+                                       break;
+                               case Code.Ble_Un_S :
+                                       i.OpCode = OpCodes.Ble_Un;
+                                       break;
+                               case Code.Blt_Un_S :
+                                       i.OpCode = OpCodes.Blt_Un;
+                                       break;
+                               case Code.Leave_S :
+                                       i.OpCode = OpCodes.Leave;
+                                       break;
+                               }
+                       }
+               }
+
+               public void Optimize ()
+               {
+                       foreach (Instruction instr in m_instructions) {
+                               int index;
+                               switch (instr.OpCode.Code) {
+                               case Code.Ldarg:
+                                       index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+                                       if (index == -1 && instr.Operand == m_method.This)
+                                               index = 0;
+                                       else if (m_method.HasThis)
+                                               index++;
+
+                                       switch (index) {
+                                       case 0:
+                                               Modify (instr, OpCodes.Ldarg_0, null);
+                                               break;
+                                       case 1:
+                                               Modify (instr, OpCodes.Ldarg_1, null);
+                                               break;
+                                       case 2:
+                                               Modify (instr, OpCodes.Ldarg_2, null);
+                                               break;
+                                       case 3:
+                                               Modify (instr, OpCodes.Ldarg_3, null);
+                                               break;
+                                       default:
+                                               if (index < 256)
+                                                       Modify (instr, OpCodes.Ldarg_S, instr.Operand);
+                                               break;
+                                       }
+                                       break;
+                               case Code.Ldloc:
+                                       index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
+                                       switch (index) {
+                                       case 0:
+                                               Modify (instr, OpCodes.Ldloc_0, null);
+                                               break;
+                                       case 1:
+                                               Modify (instr, OpCodes.Ldloc_1, null);
+                                               break;
+                                       case 2:
+                                               Modify (instr, OpCodes.Ldloc_2, null);
+                                               break;
+                                       case 3:
+                                               Modify (instr, OpCodes.Ldloc_3, null);
+                                               break;
+                                       default:
+                                               if (index < 256)
+                                                       Modify (instr, OpCodes.Ldloc_S, instr.Operand);
+                                               break;
+                                       }
+                                       break;
+                               case Code.Stloc:
+                                       index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
+                                       switch (index) {
+                                       case 0:
+                                               Modify (instr, OpCodes.Stloc_0, null);
+                                               break;
+                                       case 1:
+                                               Modify (instr, OpCodes.Stloc_1, null);
+                                               break;
+                                       case 2:
+                                               Modify (instr, OpCodes.Stloc_2, null);
+                                               break;
+                                       case 3:
+                                               Modify (instr, OpCodes.Stloc_3, null);
+                                               break;
+                                       default:
+                                               if (index < 256)
+                                                       Modify (instr, OpCodes.Stloc_S, instr.Operand);
+                                               break;
+                                       }
+                                       break;
+                               case Code.Ldarga:
+                                       index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+                                       if (index == -1 && instr.Operand == m_method.This)
+                                               index = 0;
+                                       else if (m_method.HasThis)
+                                               index++;
+                                       if (index < 256)
+                                               Modify (instr, OpCodes.Ldarga_S, instr.Operand);
+                                       break;
+                               case Code.Ldloca:
+                                       if (m_variables.IndexOf ((VariableDefinition) instr.Operand) < 256)
+                                               Modify (instr, OpCodes.Ldloca_S, instr.Operand);
+                                       break;
+                               case Code.Ldc_I4:
+                                       int i = (int) instr.Operand;
+                                       switch (i) {
+                                       case -1:
+                                               Modify (instr, OpCodes.Ldc_I4_M1, null);
+                                               break;
+                                       case 0:
+                                               Modify (instr, OpCodes.Ldc_I4_0, null);
+                                               break;
+                                       case 1:
+                                               Modify (instr, OpCodes.Ldc_I4_1, null);
+                                               break;
+                                       case 2:
+                                               Modify (instr, OpCodes.Ldc_I4_2, null);
+                                               break;
+                                       case 3:
+                                               Modify (instr, OpCodes.Ldc_I4_3, null);
+                                               break;
+                                       case 4:
+                                               Modify (instr, OpCodes.Ldc_I4_4, null);
+                                               break;
+                                       case 5:
+                                               Modify (instr, OpCodes.Ldc_I4_5, null);
+                                               break;
+                                       case 6:
+                                               Modify (instr, OpCodes.Ldc_I4_6, null);
+                                               break;
+                                       case 7:
+                                               Modify (instr, OpCodes.Ldc_I4_7, null);
+                                               break;
+                                       case 8:
+                                               Modify (instr, OpCodes.Ldc_I4_8, null);
+                                               break;
+                                       default:
+                                               if (i >= -128 && i < 128)
+                                                       Modify (instr, OpCodes.Ldc_I4_S, (sbyte) i);
+                                               break;
+                                       }
+                                       break;
+                               }
+                       }
+
+                       OptimizeBranches ();
+               }
+
+               void OptimizeBranches ()
+               {
+                       ComputeOffsets ();
+
+                       foreach (Instruction instr in m_instructions) {
+                               if (instr.OpCode.OperandType != OperandType.InlineBrTarget)
+                                       continue;
+
+                               if (OptimizeBranch (instr))
+                                       ComputeOffsets ();
+                       }
+               }
+
+               static bool OptimizeBranch (Instruction instr)
+               {
+                       int offset = ((Instruction) instr.Operand).Offset - (instr.Offset + instr.OpCode.Size + 4);
+                       if (! (offset >= -128 && offset <= 127))
+                               return false;
+
+                       switch (instr.OpCode.Code) {
+                       case Code.Br:
+                               instr.OpCode = OpCodes.Br_S;
+                               break;
+                       case Code.Brfalse:
+                               instr.OpCode = OpCodes.Brfalse_S;
+                               break;
+                       case Code.Brtrue:
+                               instr.OpCode = OpCodes.Brtrue_S;
+                               break;
+                       case Code.Beq:
+                               instr.OpCode = OpCodes.Beq_S;
+                               break;
+                       case Code.Bge:
+                               instr.OpCode = OpCodes.Bge_S;
+                               break;
+                       case Code.Bgt:
+                               instr.OpCode = OpCodes.Bgt_S;
+                               break;
+                       case Code.Ble:
+                               instr.OpCode = OpCodes.Ble_S;
+                               break;
+                       case Code.Blt:
+                               instr.OpCode = OpCodes.Blt_S;
+                               break;
+                       case Code.Bne_Un:
+                               instr.OpCode = OpCodes.Bne_Un_S;
+                               break;
+                       case Code.Bge_Un:
+                               instr.OpCode = OpCodes.Bge_Un_S;
+                               break;
+                       case Code.Bgt_Un:
+                               instr.OpCode = OpCodes.Bgt_Un_S;
+                               break;
+                       case Code.Ble_Un:
+                               instr.OpCode = OpCodes.Ble_Un_S;
+                               break;
+                       case Code.Blt_Un:
+                               instr.OpCode = OpCodes.Blt_Un_S;
+                               break;
+                       case Code.Leave:
+                               instr.OpCode = OpCodes.Leave_S;
+                               break;
+                       }
+
+                       return true;
+               }
+
+               void ComputeOffsets ()
+               {
+                       int offset = 0;
+
+                       foreach (Instruction instr in m_instructions) {
+                               instr.Offset = offset;
+                               offset += instr.GetSize ();
+                       }
+               }
+
+               static void Modify (Instruction i, OpCode op, object operand)
+               {
+                       i.OpCode = op;
+                       i.Operand = operand;
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitMethodBody (this);
+                       if (HasVariables)
+                               m_variables.Accept (visitor);
+                       m_instructions.Accept (visitor);
+                       if (HasExceptionHandlers)
+                               m_exceptions.Accept (visitor);
+                       if (HasScopes)
+                               m_scopes.Accept (visitor);
+
+                       visitor.TerminateMethodBody (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodDataSection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodDataSection.cs
new file mode 100644 (file)
index 0000000..295ccdb
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// MethodDataSection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum MethodDataSection : ushort {
+               EHTable = 0x1,
+               OptILTable = 0x2,
+               FatFormat = 0x40,
+               MoreSects = 0x80
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodHeader.cs
new file mode 100644 (file)
index 0000000..c90ce2f
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// MethodHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum MethodHeader : ushort {
+               TinyFormat = 0x2,
+               FatFormat = 0x3,
+               MoreSects = 0x8,
+               InitLocals = 0x10
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs
new file mode 100644 (file)
index 0000000..2406ec1
--- /dev/null
@@ -0,0 +1,139 @@
+//
+// OpCode.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal struct OpCode {
+               short m_value;
+               byte m_code;
+               byte m_flowControl;
+               byte m_opCodeType;
+               byte m_operandType;
+               byte m_stackBehaviourPop;
+               byte m_stackBehaviourPush;
+
+               public string Name {
+                       get {
+                               int index = (Size == 1) ? Op2 : (Op2 + 256);
+                               return OpCodeNames.names [index];
+                       }
+               }
+
+               public int Size {
+                       get { return ((m_value & 0xff00) == 0xff00) ? 1 : 2; }
+               }
+
+               public byte Op1 {
+                       get { return (byte) (m_value >> 8); }
+               }
+
+               public byte Op2 {
+                       get { return (byte) m_value; }
+               }
+
+               public short Value {
+                       get { return (Size == 1) ? Op2 : m_value; }
+               }
+
+               public Code Code {
+                       get { return (Code) m_code; }
+               }
+
+               public FlowControl FlowControl {
+                       get { return (FlowControl) m_flowControl; }
+               }
+
+               public OpCodeType OpCodeType {
+                       get { return (OpCodeType) m_opCodeType; }
+               }
+
+               public OperandType OperandType {
+                       get { return (OperandType) m_operandType; }
+               }
+
+               public StackBehaviour StackBehaviourPop {
+                       get { return (StackBehaviour) m_stackBehaviourPop; }
+               }
+
+               public StackBehaviour StackBehaviourPush {
+                       get { return (StackBehaviour) m_stackBehaviourPush; }
+               }
+
+               internal OpCode (byte op1, byte op2,
+                       Code code, FlowControl flowControl,
+                       OpCodeType opCodeType, OperandType operandType,
+                       StackBehaviour pop, StackBehaviour push)
+               {
+                       m_value = (short) ((op1 << 8) | op2);
+                       m_code = (byte) code;
+                       m_flowControl = (byte) flowControl;
+                       m_opCodeType = (byte) opCodeType;
+                       m_operandType = (byte) operandType;
+                       m_stackBehaviourPop = (byte) pop;
+                       m_stackBehaviourPush = (byte) push;
+
+                       if (op1 == 0xff)
+                               OpCodes.OneByteOpCode [op2] = this;
+                       else
+                               OpCodes.TwoBytesOpCode [op2] = this;
+               }
+
+               public override int GetHashCode ()
+               {
+                       return m_value;
+               }
+
+               public override bool Equals (object obj)
+               {
+                       if (!(obj is OpCode))
+                               return false;
+                       OpCode v = (OpCode) obj;
+                       return v.m_value == m_value;
+               }
+
+               public bool Equals (OpCode opcode)
+               {
+                       return (m_value == opcode.m_value);
+               }
+
+               public static bool operator == (OpCode one, OpCode other)
+               {
+                       return (one.m_value == other.m_value);
+               }
+
+               public static bool operator != (OpCode one, OpCode other)
+               {
+                       return (one.m_value != other.m_value);
+               }
+
+               public override string ToString ()
+               {
+                       return Name;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeNames.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeNames.cs
new file mode 100644 (file)
index 0000000..4d7f0cc
--- /dev/null
@@ -0,0 +1,338 @@
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+// copy-pasted from /mcs/class/corlib/System.Reflection.Emit/OpCodeNames.cs
+// added names for "no." and "readonly."
+
+namespace Mono.Cecil.Cil {
+
+       internal sealed class OpCodeNames {
+
+               internal static readonly string [] names = {
+                       "nop",
+                       "break",
+                       "ldarg.0",
+                       "ldarg.1",
+                       "ldarg.2",
+                       "ldarg.3",
+                       "ldloc.0",
+                       "ldloc.1",
+                       "ldloc.2",
+                       "ldloc.3",
+                       "stloc.0",
+                       "stloc.1",
+                       "stloc.2",
+                       "stloc.3",
+                       "ldarg.s",
+                       "ldarga.s",
+                       "starg.s",
+                       "ldloc.s",
+                       "ldloca.s",
+                       "stloc.s",
+                       "ldnull",
+                       "ldc.i4.m1",
+                       "ldc.i4.0",
+                       "ldc.i4.1",
+                       "ldc.i4.2",
+                       "ldc.i4.3",
+                       "ldc.i4.4",
+                       "ldc.i4.5",
+                       "ldc.i4.6",
+                       "ldc.i4.7",
+                       "ldc.i4.8",
+                       "ldc.i4.s",
+                       "ldc.i4",
+                       "ldc.i8",
+                       "ldc.r4",
+                       "ldc.r8",
+                       null,
+                       "dup",
+                       "pop",
+                       "jmp",
+                       "call",
+                       "calli",
+                       "ret",
+                       "br.s",
+                       "brfalse.s",
+                       "brtrue.s",
+                       "beq.s",
+                       "bge.s",
+                       "bgt.s",
+                       "ble.s",
+                       "blt.s",
+                       "bne.un.s",
+                       "bge.un.s",
+                       "bgt.un.s",
+                       "ble.un.s",
+                       "blt.un.s",
+                       "br",
+                       "brfalse",
+                       "brtrue",
+                       "beq",
+                       "bge",
+                       "bgt",
+                       "ble",
+                       "blt",
+                       "bne.un",
+                       "bge.un",
+                       "bgt.un",
+                       "ble.un",
+                       "blt.un",
+                       "switch",
+                       "ldind.i1",
+                       "ldind.u1",
+                       "ldind.i2",
+                       "ldind.u2",
+                       "ldind.i4",
+                       "ldind.u4",
+                       "ldind.i8",
+                       "ldind.i",
+                       "ldind.r4",
+                       "ldind.r8",
+                       "ldind.ref",
+                       "stind.ref",
+                       "stind.i1",
+                       "stind.i2",
+                       "stind.i4",
+                       "stind.i8",
+                       "stind.r4",
+                       "stind.r8",
+                       "add",
+                       "sub",
+                       "mul",
+                       "div",
+                       "div.un",
+                       "rem",
+                       "rem.un",
+                       "and",
+                       "or",
+                       "xor",
+                       "shl",
+                       "shr",
+                       "shr.un",
+                       "neg",
+                       "not",
+                       "conv.i1",
+                       "conv.i2",
+                       "conv.i4",
+                       "conv.i8",
+                       "conv.r4",
+                       "conv.r8",
+                       "conv.u4",
+                       "conv.u8",
+                       "callvirt",
+                       "cpobj",
+                       "ldobj",
+                       "ldstr",
+                       "newobj",
+                       "castclass",
+                       "isinst",
+                       "conv.r.un",
+                       null,
+                       null,
+                       "unbox",
+                       "throw",
+                       "ldfld",
+                       "ldflda",
+                       "stfld",
+                       "ldsfld",
+                       "ldsflda",
+                       "stsfld",
+                       "stobj",
+                       "conv.ovf.i1.un",
+                       "conv.ovf.i2.un",
+                       "conv.ovf.i4.un",
+                       "conv.ovf.i8.un",
+                       "conv.ovf.u1.un",
+                       "conv.ovf.u2.un",
+                       "conv.ovf.u4.un",
+                       "conv.ovf.u8.un",
+                       "conv.ovf.i.un",
+                       "conv.ovf.u.un",
+                       "box",
+                       "newarr",
+                       "ldlen",
+                       "ldelema",
+                       "ldelem.i1",
+                       "ldelem.u1",
+                       "ldelem.i2",
+                       "ldelem.u2",
+                       "ldelem.i4",
+                       "ldelem.u4",
+                       "ldelem.i8",
+                       "ldelem.i",
+                       "ldelem.r4",
+                       "ldelem.r8",
+                       "ldelem.ref",
+                       "stelem.i",
+                       "stelem.i1",
+                       "stelem.i2",
+                       "stelem.i4",
+                       "stelem.i8",
+                       "stelem.r4",
+                       "stelem.r8",
+                       "stelem.ref",
+                       "ldelem.any",
+                       "stelem.any",
+                       "unbox.any",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "conv.ovf.i1",
+                       "conv.ovf.u1",
+                       "conv.ovf.i2",
+                       "conv.ovf.u2",
+                       "conv.ovf.i4",
+                       "conv.ovf.u4",
+                       "conv.ovf.i8",
+                       "conv.ovf.u8",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "refanyval",
+                       "ckfinite",
+                       null,
+                       null,
+                       "mkrefany",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "ldtoken",
+                       "conv.u2",
+                       "conv.u1",
+                       "conv.i",
+                       "conv.ovf.i",
+                       "conv.ovf.u",
+                       "add.ovf",
+                       "add.ovf.un",
+                       "mul.ovf",
+                       "mul.ovf.un",
+                       "sub.ovf",
+                       "sub.ovf.un",
+                       "endfinally",
+                       "leave",
+                       "leave.s",
+                       "stind.i",
+                       "conv.u",
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       "prefix7",
+                       "prefix6",
+                       "prefix5",
+                       "prefix4",
+                       "prefix3",
+                       "prefix2",
+                       "prefix1",
+                       "prefixref",
+                       "arglist",
+                       "ceq",
+                       "cgt",
+                       "cgt.un",
+                       "clt",
+                       "clt.un",
+                       "ldftn",
+                       "ldvirtftn",
+                       null,
+                       "ldarg",
+                       "ldarga",
+                       "starg",
+                       "ldloc",
+                       "ldloca",
+                       "stloc",
+                       "localloc",
+                       null,
+                       "endfilter",
+                       "unaligned.",
+                       "volatile.",
+                       "tail.",
+                       "initobj",
+                       "constrained.",
+                       "cpblk",
+                       "initblk",
+                       "no.",          // added by spouliot to match Cecil existing definitions
+                       "rethrow",
+                       null,
+                       "sizeof",
+                       "refanytype",
+                       "readonly.",    // added by spouliot to match Cecil existing definitions
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+                       null,
+               };
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs
new file mode 100644 (file)
index 0000000..ef85f52
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// OpCodeType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum OpCodeType {
+               Annotation,
+               Macro,
+               Nternal,
+               Objmodel,
+               Prefix,
+               Primitive
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs
new file mode 100644 (file)
index 0000000..a54e326
--- /dev/null
@@ -0,0 +1,1583 @@
+//
+// OpCodes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Jun 06 13:04:02 +0200 2008
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal sealed class OpCodes {
+
+               internal static readonly OpCode [] OneByteOpCode = new OpCode [0xe0 + 1];
+               internal static readonly OpCode [] TwoBytesOpCode = new OpCode [0x1e + 1];
+
+               public static readonly OpCode Nop = new OpCode (
+                       0xff, 0x00,
+                       Code.Nop, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Break = new OpCode (
+                       0xff, 0x01,
+                       Code.Break, FlowControl.Break,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldarg_0 = new OpCode (
+                       0xff, 0x02,
+                       Code.Ldarg_0, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldarg_1 = new OpCode (
+                       0xff, 0x03,
+                       Code.Ldarg_1, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldarg_2 = new OpCode (
+                       0xff, 0x04,
+                       Code.Ldarg_2, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldarg_3 = new OpCode (
+                       0xff, 0x05,
+                       Code.Ldarg_3, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloc_0 = new OpCode (
+                       0xff, 0x06,
+                       Code.Ldloc_0, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloc_1 = new OpCode (
+                       0xff, 0x07,
+                       Code.Ldloc_1, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloc_2 = new OpCode (
+                       0xff, 0x08,
+                       Code.Ldloc_2, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloc_3 = new OpCode (
+                       0xff, 0x09,
+                       Code.Ldloc_3, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Stloc_0 = new OpCode (
+                       0xff, 0x0a,
+                       Code.Stloc_0, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Stloc_1 = new OpCode (
+                       0xff, 0x0b,
+                       Code.Stloc_1, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Stloc_2 = new OpCode (
+                       0xff, 0x0c,
+                       Code.Stloc_2, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Stloc_3 = new OpCode (
+                       0xff, 0x0d,
+                       Code.Stloc_3, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldarg_S = new OpCode (
+                       0xff, 0x0e,
+                       Code.Ldarg_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineParam,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldarga_S = new OpCode (
+                       0xff, 0x0f,
+                       Code.Ldarga_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineParam,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Starg_S = new OpCode (
+                       0xff, 0x10,
+                       Code.Starg_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineParam,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldloc_S = new OpCode (
+                       0xff, 0x11,
+                       Code.Ldloc_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineVar,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloca_S = new OpCode (
+                       0xff, 0x12,
+                       Code.Ldloca_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineVar,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Stloc_S = new OpCode (
+                       0xff, 0x13,
+                       Code.Stloc_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineVar,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldnull = new OpCode (
+                       0xff, 0x14,
+                       Code.Ldnull, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushref);
+
+               public static readonly OpCode Ldc_I4_M1 = new OpCode (
+                       0xff, 0x15,
+                       Code.Ldc_I4_M1, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_0 = new OpCode (
+                       0xff, 0x16,
+                       Code.Ldc_I4_0, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_1 = new OpCode (
+                       0xff, 0x17,
+                       Code.Ldc_I4_1, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_2 = new OpCode (
+                       0xff, 0x18,
+                       Code.Ldc_I4_2, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_3 = new OpCode (
+                       0xff, 0x19,
+                       Code.Ldc_I4_3, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_4 = new OpCode (
+                       0xff, 0x1a,
+                       Code.Ldc_I4_4, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_5 = new OpCode (
+                       0xff, 0x1b,
+                       Code.Ldc_I4_5, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_6 = new OpCode (
+                       0xff, 0x1c,
+                       Code.Ldc_I4_6, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_7 = new OpCode (
+                       0xff, 0x1d,
+                       Code.Ldc_I4_7, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_8 = new OpCode (
+                       0xff, 0x1e,
+                       Code.Ldc_I4_8, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4_S = new OpCode (
+                       0xff, 0x1f,
+                       Code.Ldc_I4_S, FlowControl.Next,
+                       OpCodeType.Macro, OperandType.ShortInlineI,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I4 = new OpCode (
+                       0xff, 0x20,
+                       Code.Ldc_I4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineI,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldc_I8 = new OpCode (
+                       0xff, 0x21,
+                       Code.Ldc_I8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineI8,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Ldc_R4 = new OpCode (
+                       0xff, 0x22,
+                       Code.Ldc_R4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.ShortInlineR,
+                       StackBehaviour.Pop0, StackBehaviour.Pushr4);
+
+               public static readonly OpCode Ldc_R8 = new OpCode (
+                       0xff, 0x23,
+                       Code.Ldc_R8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineR,
+                       StackBehaviour.Pop0, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Dup = new OpCode (
+                       0xff, 0x25,
+                       Code.Dup, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push1_push1);
+
+               public static readonly OpCode Pop = new OpCode (
+                       0xff, 0x26,
+                       Code.Pop, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Jmp = new OpCode (
+                       0xff, 0x27,
+                       Code.Jmp, FlowControl.Call,
+                       OpCodeType.Primitive, OperandType.InlineMethod,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Call = new OpCode (
+                       0xff, 0x28,
+                       Code.Call, FlowControl.Call,
+                       OpCodeType.Primitive, OperandType.InlineMethod,
+                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+               public static readonly OpCode Calli = new OpCode (
+                       0xff, 0x29,
+                       Code.Calli, FlowControl.Call,
+                       OpCodeType.Primitive, OperandType.InlineSig,
+                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+               public static readonly OpCode Ret = new OpCode (
+                       0xff, 0x2a,
+                       Code.Ret, FlowControl.Return,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Varpop, StackBehaviour.Push0);
+
+               public static readonly OpCode Br_S = new OpCode (
+                       0xff, 0x2b,
+                       Code.Br_S, FlowControl.Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Brfalse_S = new OpCode (
+                       0xff, 0x2c,
+                       Code.Brfalse_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Brtrue_S = new OpCode (
+                       0xff, 0x2d,
+                       Code.Brtrue_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Beq_S = new OpCode (
+                       0xff, 0x2e,
+                       Code.Beq_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bge_S = new OpCode (
+                       0xff, 0x2f,
+                       Code.Bge_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bgt_S = new OpCode (
+                       0xff, 0x30,
+                       Code.Bgt_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ble_S = new OpCode (
+                       0xff, 0x31,
+                       Code.Ble_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Blt_S = new OpCode (
+                       0xff, 0x32,
+                       Code.Blt_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bne_Un_S = new OpCode (
+                       0xff, 0x33,
+                       Code.Bne_Un_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bge_Un_S = new OpCode (
+                       0xff, 0x34,
+                       Code.Bge_Un_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bgt_Un_S = new OpCode (
+                       0xff, 0x35,
+                       Code.Bgt_Un_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ble_Un_S = new OpCode (
+                       0xff, 0x36,
+                       Code.Ble_Un_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Blt_Un_S = new OpCode (
+                       0xff, 0x37,
+                       Code.Blt_Un_S, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Br = new OpCode (
+                       0xff, 0x38,
+                       Code.Br, FlowControl.Branch,
+                       OpCodeType.Primitive, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Brfalse = new OpCode (
+                       0xff, 0x39,
+                       Code.Brfalse, FlowControl.Cond_Branch,
+                       OpCodeType.Primitive, OperandType.InlineBrTarget,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Brtrue = new OpCode (
+                       0xff, 0x3a,
+                       Code.Brtrue, FlowControl.Cond_Branch,
+                       OpCodeType.Primitive, OperandType.InlineBrTarget,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Beq = new OpCode (
+                       0xff, 0x3b,
+                       Code.Beq, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bge = new OpCode (
+                       0xff, 0x3c,
+                       Code.Bge, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bgt = new OpCode (
+                       0xff, 0x3d,
+                       Code.Bgt, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ble = new OpCode (
+                       0xff, 0x3e,
+                       Code.Ble, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Blt = new OpCode (
+                       0xff, 0x3f,
+                       Code.Blt, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bne_Un = new OpCode (
+                       0xff, 0x40,
+                       Code.Bne_Un, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bge_Un = new OpCode (
+                       0xff, 0x41,
+                       Code.Bge_Un, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Bgt_Un = new OpCode (
+                       0xff, 0x42,
+                       Code.Bgt_Un, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ble_Un = new OpCode (
+                       0xff, 0x43,
+                       Code.Ble_Un, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Blt_Un = new OpCode (
+                       0xff, 0x44,
+                       Code.Blt_Un, FlowControl.Cond_Branch,
+                       OpCodeType.Macro, OperandType.InlineBrTarget,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Switch = new OpCode (
+                       0xff, 0x45,
+                       Code.Switch, FlowControl.Cond_Branch,
+                       OpCodeType.Primitive, OperandType.InlineSwitch,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldind_I1 = new OpCode (
+                       0xff, 0x46,
+                       Code.Ldind_I1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_U1 = new OpCode (
+                       0xff, 0x47,
+                       Code.Ldind_U1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_I2 = new OpCode (
+                       0xff, 0x48,
+                       Code.Ldind_I2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_U2 = new OpCode (
+                       0xff, 0x49,
+                       Code.Ldind_U2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_I4 = new OpCode (
+                       0xff, 0x4a,
+                       Code.Ldind_I4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_U4 = new OpCode (
+                       0xff, 0x4b,
+                       Code.Ldind_U4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_I8 = new OpCode (
+                       0xff, 0x4c,
+                       Code.Ldind_I8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Ldind_I = new OpCode (
+                       0xff, 0x4d,
+                       Code.Ldind_I, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldind_R4 = new OpCode (
+                       0xff, 0x4e,
+                       Code.Ldind_R4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushr4);
+
+               public static readonly OpCode Ldind_R8 = new OpCode (
+                       0xff, 0x4f,
+                       Code.Ldind_R8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Ldind_Ref = new OpCode (
+                       0xff, 0x50,
+                       Code.Ldind_Ref, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushref);
+
+               public static readonly OpCode Stind_Ref = new OpCode (
+                       0xff, 0x51,
+                       Code.Stind_Ref, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_I1 = new OpCode (
+                       0xff, 0x52,
+                       Code.Stind_I1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_I2 = new OpCode (
+                       0xff, 0x53,
+                       Code.Stind_I2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_I4 = new OpCode (
+                       0xff, 0x54,
+                       Code.Stind_I4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_I8 = new OpCode (
+                       0xff, 0x55,
+                       Code.Stind_I8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi8, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_R4 = new OpCode (
+                       0xff, 0x56,
+                       Code.Stind_R4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popr4, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_R8 = new OpCode (
+                       0xff, 0x57,
+                       Code.Stind_R8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popr8, StackBehaviour.Push0);
+
+               public static readonly OpCode Add = new OpCode (
+                       0xff, 0x58,
+                       Code.Add, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Sub = new OpCode (
+                       0xff, 0x59,
+                       Code.Sub, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Mul = new OpCode (
+                       0xff, 0x5a,
+                       Code.Mul, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Div = new OpCode (
+                       0xff, 0x5b,
+                       Code.Div, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Div_Un = new OpCode (
+                       0xff, 0x5c,
+                       Code.Div_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Rem = new OpCode (
+                       0xff, 0x5d,
+                       Code.Rem, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Rem_Un = new OpCode (
+                       0xff, 0x5e,
+                       Code.Rem_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode And = new OpCode (
+                       0xff, 0x5f,
+                       Code.And, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Or = new OpCode (
+                       0xff, 0x60,
+                       Code.Or, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Xor = new OpCode (
+                       0xff, 0x61,
+                       Code.Xor, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Shl = new OpCode (
+                       0xff, 0x62,
+                       Code.Shl, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Shr = new OpCode (
+                       0xff, 0x63,
+                       Code.Shr, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Shr_Un = new OpCode (
+                       0xff, 0x64,
+                       Code.Shr_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Neg = new OpCode (
+                       0xff, 0x65,
+                       Code.Neg, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Not = new OpCode (
+                       0xff, 0x66,
+                       Code.Not, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Conv_I1 = new OpCode (
+                       0xff, 0x67,
+                       Code.Conv_I1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_I2 = new OpCode (
+                       0xff, 0x68,
+                       Code.Conv_I2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_I4 = new OpCode (
+                       0xff, 0x69,
+                       Code.Conv_I4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_I8 = new OpCode (
+                       0xff, 0x6a,
+                       Code.Conv_I8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Conv_R4 = new OpCode (
+                       0xff, 0x6b,
+                       Code.Conv_R4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushr4);
+
+               public static readonly OpCode Conv_R8 = new OpCode (
+                       0xff, 0x6c,
+                       Code.Conv_R8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Conv_U4 = new OpCode (
+                       0xff, 0x6d,
+                       Code.Conv_U4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_U8 = new OpCode (
+                       0xff, 0x6e,
+                       Code.Conv_U8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Callvirt = new OpCode (
+                       0xff, 0x6f,
+                       Code.Callvirt, FlowControl.Call,
+                       OpCodeType.Objmodel, OperandType.InlineMethod,
+                       StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+               public static readonly OpCode Cpobj = new OpCode (
+                       0xff, 0x70,
+                       Code.Cpobj, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldobj = new OpCode (
+                       0xff, 0x71,
+                       Code.Ldobj, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popi, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldstr = new OpCode (
+                       0xff, 0x72,
+                       Code.Ldstr, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineString,
+                       StackBehaviour.Pop0, StackBehaviour.Pushref);
+
+               public static readonly OpCode Newobj = new OpCode (
+                       0xff, 0x73,
+                       Code.Newobj, FlowControl.Call,
+                       OpCodeType.Objmodel, OperandType.InlineMethod,
+                       StackBehaviour.Varpop, StackBehaviour.Pushref);
+
+               public static readonly OpCode Castclass = new OpCode (
+                       0xff, 0x74,
+                       Code.Castclass, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref, StackBehaviour.Pushref);
+
+               public static readonly OpCode Isinst = new OpCode (
+                       0xff, 0x75,
+                       Code.Isinst, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_R_Un = new OpCode (
+                       0xff, 0x76,
+                       Code.Conv_R_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Unbox = new OpCode (
+                       0xff, 0x79,
+                       Code.Unbox, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineType,
+                       StackBehaviour.Popref, StackBehaviour.Pushi);
+
+               public static readonly OpCode Throw = new OpCode (
+                       0xff, 0x7a,
+                       Code.Throw, FlowControl.Throw,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldfld = new OpCode (
+                       0xff, 0x7b,
+                       Code.Ldfld, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Popref, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldflda = new OpCode (
+                       0xff, 0x7c,
+                       Code.Ldflda, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Popref, StackBehaviour.Pushi);
+
+               public static readonly OpCode Stfld = new OpCode (
+                       0xff, 0x7d,
+                       Code.Stfld, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Popref_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldsfld = new OpCode (
+                       0xff, 0x7e,
+                       Code.Ldsfld, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldsflda = new OpCode (
+                       0xff, 0x7f,
+                       Code.Ldsflda, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Stsfld = new OpCode (
+                       0xff, 0x80,
+                       Code.Stsfld, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineField,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Stobj = new OpCode (
+                       0xff, 0x81,
+                       Code.Stobj, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popi_pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Conv_Ovf_I1_Un = new OpCode (
+                       0xff, 0x82,
+                       Code.Conv_Ovf_I1_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I2_Un = new OpCode (
+                       0xff, 0x83,
+                       Code.Conv_Ovf_I2_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I4_Un = new OpCode (
+                       0xff, 0x84,
+                       Code.Conv_Ovf_I4_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I8_Un = new OpCode (
+                       0xff, 0x85,
+                       Code.Conv_Ovf_I8_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Conv_Ovf_U1_Un = new OpCode (
+                       0xff, 0x86,
+                       Code.Conv_Ovf_U1_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U2_Un = new OpCode (
+                       0xff, 0x87,
+                       Code.Conv_Ovf_U2_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U4_Un = new OpCode (
+                       0xff, 0x88,
+                       Code.Conv_Ovf_U4_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U8_Un = new OpCode (
+                       0xff, 0x89,
+                       Code.Conv_Ovf_U8_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Conv_Ovf_I_Un = new OpCode (
+                       0xff, 0x8a,
+                       Code.Conv_Ovf_I_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U_Un = new OpCode (
+                       0xff, 0x8b,
+                       Code.Conv_Ovf_U_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Box = new OpCode (
+                       0xff, 0x8c,
+                       Code.Box, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineType,
+                       StackBehaviour.Pop1, StackBehaviour.Pushref);
+
+               public static readonly OpCode Newarr = new OpCode (
+                       0xff, 0x8d,
+                       Code.Newarr, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popi, StackBehaviour.Pushref);
+
+               public static readonly OpCode Ldlen = new OpCode (
+                       0xff, 0x8e,
+                       Code.Ldlen, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelema = new OpCode (
+                       0xff, 0x8f,
+                       Code.Ldelema, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_I1 = new OpCode (
+                       0xff, 0x90,
+                       Code.Ldelem_I1, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_U1 = new OpCode (
+                       0xff, 0x91,
+                       Code.Ldelem_U1, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_I2 = new OpCode (
+                       0xff, 0x92,
+                       Code.Ldelem_I2, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_U2 = new OpCode (
+                       0xff, 0x93,
+                       Code.Ldelem_U2, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_I4 = new OpCode (
+                       0xff, 0x94,
+                       Code.Ldelem_I4, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_U4 = new OpCode (
+                       0xff, 0x95,
+                       Code.Ldelem_U4, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_I8 = new OpCode (
+                       0xff, 0x96,
+                       Code.Ldelem_I8, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Ldelem_I = new OpCode (
+                       0xff, 0x97,
+                       Code.Ldelem_I, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldelem_R4 = new OpCode (
+                       0xff, 0x98,
+                       Code.Ldelem_R4, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushr4);
+
+               public static readonly OpCode Ldelem_R8 = new OpCode (
+                       0xff, 0x99,
+                       Code.Ldelem_R8, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Ldelem_Ref = new OpCode (
+                       0xff, 0x9a,
+                       Code.Ldelem_Ref, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi, StackBehaviour.Pushref);
+
+               public static readonly OpCode Stelem_I = new OpCode (
+                       0xff, 0x9b,
+                       Code.Stelem_I, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_I1 = new OpCode (
+                       0xff, 0x9c,
+                       Code.Stelem_I1, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_I2 = new OpCode (
+                       0xff, 0x9d,
+                       Code.Stelem_I2, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_I4 = new OpCode (
+                       0xff, 0x9e,
+                       Code.Stelem_I4, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_I8 = new OpCode (
+                       0xff, 0x9f,
+                       Code.Stelem_I8, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popi8, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_R4 = new OpCode (
+                       0xff, 0xa0,
+                       Code.Stelem_R4, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popr4, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_R8 = new OpCode (
+                       0xff, 0xa1,
+                       Code.Stelem_R8, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popr8, StackBehaviour.Push0);
+
+               public static readonly OpCode Stelem_Ref = new OpCode (
+                       0xff, 0xa2,
+                       Code.Stelem_Ref, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldelem_Any = new OpCode (
+                       0xff, 0xa3,
+                       Code.Ldelem_Any, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref_popi, StackBehaviour.Push1);
+
+               public static readonly OpCode Stelem_Any = new OpCode (
+                       0xff, 0xa4,
+                       Code.Stelem_Any, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+
+               public static readonly OpCode Unbox_Any = new OpCode (
+                       0xff, 0xa5,
+                       Code.Unbox_Any, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popref, StackBehaviour.Push1);
+
+               public static readonly OpCode Conv_Ovf_I1 = new OpCode (
+                       0xff, 0xb3,
+                       Code.Conv_Ovf_I1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U1 = new OpCode (
+                       0xff, 0xb4,
+                       Code.Conv_Ovf_U1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I2 = new OpCode (
+                       0xff, 0xb5,
+                       Code.Conv_Ovf_I2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U2 = new OpCode (
+                       0xff, 0xb6,
+                       Code.Conv_Ovf_U2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I4 = new OpCode (
+                       0xff, 0xb7,
+                       Code.Conv_Ovf_I4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U4 = new OpCode (
+                       0xff, 0xb8,
+                       Code.Conv_Ovf_U4, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I8 = new OpCode (
+                       0xff, 0xb9,
+                       Code.Conv_Ovf_I8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Conv_Ovf_U8 = new OpCode (
+                       0xff, 0xba,
+                       Code.Conv_Ovf_U8, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+               public static readonly OpCode Refanyval = new OpCode (
+                       0xff, 0xc2,
+                       Code.Refanyval, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineType,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ckfinite = new OpCode (
+                       0xff, 0xc3,
+                       Code.Ckfinite, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+               public static readonly OpCode Mkrefany = new OpCode (
+                       0xff, 0xc6,
+                       Code.Mkrefany, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineType,
+                       StackBehaviour.Popi, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldtoken = new OpCode (
+                       0xff, 0xd0,
+                       Code.Ldtoken, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineTok,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_U2 = new OpCode (
+                       0xff, 0xd1,
+                       Code.Conv_U2, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_U1 = new OpCode (
+                       0xff, 0xd2,
+                       Code.Conv_U1, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_I = new OpCode (
+                       0xff, 0xd3,
+                       Code.Conv_I, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_I = new OpCode (
+                       0xff, 0xd4,
+                       Code.Conv_Ovf_I, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Conv_Ovf_U = new OpCode (
+                       0xff, 0xd5,
+                       Code.Conv_Ovf_U, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Add_Ovf = new OpCode (
+                       0xff, 0xd6,
+                       Code.Add_Ovf, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Add_Ovf_Un = new OpCode (
+                       0xff, 0xd7,
+                       Code.Add_Ovf_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Mul_Ovf = new OpCode (
+                       0xff, 0xd8,
+                       Code.Mul_Ovf, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Mul_Ovf_Un = new OpCode (
+                       0xff, 0xd9,
+                       Code.Mul_Ovf_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Sub_Ovf = new OpCode (
+                       0xff, 0xda,
+                       Code.Sub_Ovf, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Sub_Ovf_Un = new OpCode (
+                       0xff, 0xdb,
+                       Code.Sub_Ovf_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+               public static readonly OpCode Endfinally = new OpCode (
+                       0xff, 0xdc,
+                       Code.Endfinally, FlowControl.Return,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Leave = new OpCode (
+                       0xff, 0xdd,
+                       Code.Leave, FlowControl.Branch,
+                       OpCodeType.Primitive, OperandType.InlineBrTarget,
+                       StackBehaviour.PopAll, StackBehaviour.Push0);
+
+               public static readonly OpCode Leave_S = new OpCode (
+                       0xff, 0xde,
+                       Code.Leave_S, FlowControl.Branch,
+                       OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+                       StackBehaviour.PopAll, StackBehaviour.Push0);
+
+               public static readonly OpCode Stind_I = new OpCode (
+                       0xff, 0xdf,
+                       Code.Stind_I, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Conv_U = new OpCode (
+                       0xff, 0xe0,
+                       Code.Conv_U, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Arglist = new OpCode (
+                       0xfe, 0x00,
+                       Code.Arglist, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ceq = new OpCode (
+                       0xfe, 0x01,
+                       Code.Ceq, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Cgt = new OpCode (
+                       0xfe, 0x02,
+                       Code.Cgt, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Cgt_Un = new OpCode (
+                       0xfe, 0x03,
+                       Code.Cgt_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Clt = new OpCode (
+                       0xfe, 0x04,
+                       Code.Clt, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Clt_Un = new OpCode (
+                       0xfe, 0x05,
+                       Code.Clt_Un, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldftn = new OpCode (
+                       0xfe, 0x06,
+                       Code.Ldftn, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineMethod,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldvirtftn = new OpCode (
+                       0xfe, 0x07,
+                       Code.Ldvirtftn, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineMethod,
+                       StackBehaviour.Popref, StackBehaviour.Pushi);
+
+               public static readonly OpCode Ldarg = new OpCode (
+                       0xfe, 0x09,
+                       Code.Ldarg, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineParam,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldarga = new OpCode (
+                       0xfe, 0x0a,
+                       Code.Ldarga, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineParam,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Starg = new OpCode (
+                       0xfe, 0x0b,
+                       Code.Starg, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineParam,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Ldloc = new OpCode (
+                       0xfe, 0x0c,
+                       Code.Ldloc, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineVar,
+                       StackBehaviour.Pop0, StackBehaviour.Push1);
+
+               public static readonly OpCode Ldloca = new OpCode (
+                       0xfe, 0x0d,
+                       Code.Ldloca, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineVar,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Stloc = new OpCode (
+                       0xfe, 0x0e,
+                       Code.Stloc, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineVar,
+                       StackBehaviour.Pop1, StackBehaviour.Push0);
+
+               public static readonly OpCode Localloc = new OpCode (
+                       0xfe, 0x0f,
+                       Code.Localloc, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Pushi);
+
+               public static readonly OpCode Endfilter = new OpCode (
+                       0xfe, 0x11,
+                       Code.Endfilter, FlowControl.Return,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Unaligned = new OpCode (
+                       0xfe, 0x12,
+                       Code.Unaligned, FlowControl.Meta,
+                       OpCodeType.Prefix, OperandType.ShortInlineI,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Volatile = new OpCode (
+                       0xfe, 0x13,
+                       Code.Volatile, FlowControl.Meta,
+                       OpCodeType.Prefix, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Tail = new OpCode (
+                       0xfe, 0x14,
+                       Code.Tail, FlowControl.Meta,
+                       OpCodeType.Prefix, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Initobj = new OpCode (
+                       0xfe, 0x15,
+                       Code.Initobj, FlowControl.Next,
+                       OpCodeType.Objmodel, OperandType.InlineType,
+                       StackBehaviour.Popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Constrained = new OpCode (
+                       0xfe, 0x16,
+                       Code.Constrained, FlowControl.Next,
+                       OpCodeType.Prefix, OperandType.InlineType,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Cpblk = new OpCode (
+                       0xfe, 0x17,
+                       Code.Cpblk, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode Initblk = new OpCode (
+                       0xfe, 0x18,
+                       Code.Initblk, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+
+               public static readonly OpCode No = new OpCode (
+                       0xfe, 0x19,
+                       Code.No, FlowControl.Next,
+                       OpCodeType.Prefix, OperandType.ShortInlineI,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Rethrow = new OpCode (
+                       0xfe, 0x1a,
+                       Code.Rethrow, FlowControl.Throw,
+                       OpCodeType.Objmodel, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               public static readonly OpCode Sizeof = new OpCode (
+                       0xfe, 0x1c,
+                       Code.Sizeof, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineType,
+                       StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+               public static readonly OpCode Refanytype = new OpCode (
+                       0xfe, 0x1d,
+                       Code.Refanytype, FlowControl.Next,
+                       OpCodeType.Primitive, OperandType.InlineNone,
+                       StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+               public static readonly OpCode Readonly = new OpCode (
+                       0xfe, 0x1e,
+                       Code.Readonly, FlowControl.Next,
+                       OpCodeType.Prefix, OperandType.InlineNone,
+                       StackBehaviour.Pop0, StackBehaviour.Push0);
+
+               OpCodes ()
+               {
+               }
+
+               public static OpCode GetOpCode (Code code)
+               {
+                       switch (code) {
+                       case Code.Nop : return OpCodes.Nop;
+                       case Code.Break : return OpCodes.Break;
+                       case Code.Ldarg_0 : return OpCodes.Ldarg_0;
+                       case Code.Ldarg_1 : return OpCodes.Ldarg_1;
+                       case Code.Ldarg_2 : return OpCodes.Ldarg_2;
+                       case Code.Ldarg_3 : return OpCodes.Ldarg_3;
+                       case Code.Ldloc_0 : return OpCodes.Ldloc_0;
+                       case Code.Ldloc_1 : return OpCodes.Ldloc_1;
+                       case Code.Ldloc_2 : return OpCodes.Ldloc_2;
+                       case Code.Ldloc_3 : return OpCodes.Ldloc_3;
+                       case Code.Stloc_0 : return OpCodes.Stloc_0;
+                       case Code.Stloc_1 : return OpCodes.Stloc_1;
+                       case Code.Stloc_2 : return OpCodes.Stloc_2;
+                       case Code.Stloc_3 : return OpCodes.Stloc_3;
+                       case Code.Ldarg_S : return OpCodes.Ldarg_S;
+                       case Code.Ldarga_S : return OpCodes.Ldarga_S;
+                       case Code.Starg_S : return OpCodes.Starg_S;
+                       case Code.Ldloc_S : return OpCodes.Ldloc_S;
+                       case Code.Ldloca_S : return OpCodes.Ldloca_S;
+                       case Code.Stloc_S : return OpCodes.Stloc_S;
+                       case Code.Ldnull : return OpCodes.Ldnull;
+                       case Code.Ldc_I4_M1 : return OpCodes.Ldc_I4_M1;
+                       case Code.Ldc_I4_0 : return OpCodes.Ldc_I4_0;
+                       case Code.Ldc_I4_1 : return OpCodes.Ldc_I4_1;
+                       case Code.Ldc_I4_2 : return OpCodes.Ldc_I4_2;
+                       case Code.Ldc_I4_3 : return OpCodes.Ldc_I4_3;
+                       case Code.Ldc_I4_4 : return OpCodes.Ldc_I4_4;
+                       case Code.Ldc_I4_5 : return OpCodes.Ldc_I4_5;
+                       case Code.Ldc_I4_6 : return OpCodes.Ldc_I4_6;
+                       case Code.Ldc_I4_7 : return OpCodes.Ldc_I4_7;
+                       case Code.Ldc_I4_8 : return OpCodes.Ldc_I4_8;
+                       case Code.Ldc_I4_S : return OpCodes.Ldc_I4_S;
+                       case Code.Ldc_I4 : return OpCodes.Ldc_I4;
+                       case Code.Ldc_I8 : return OpCodes.Ldc_I8;
+                       case Code.Ldc_R4 : return OpCodes.Ldc_R4;
+                       case Code.Ldc_R8 : return OpCodes.Ldc_R8;
+                       case Code.Dup : return OpCodes.Dup;
+                       case Code.Pop : return OpCodes.Pop;
+                       case Code.Jmp : return OpCodes.Jmp;
+                       case Code.Call : return OpCodes.Call;
+                       case Code.Calli : return OpCodes.Calli;
+                       case Code.Ret : return OpCodes.Ret;
+                       case Code.Br_S : return OpCodes.Br_S;
+                       case Code.Brfalse_S : return OpCodes.Brfalse_S;
+                       case Code.Brtrue_S : return OpCodes.Brtrue_S;
+                       case Code.Beq_S : return OpCodes.Beq_S;
+                       case Code.Bge_S : return OpCodes.Bge_S;
+                       case Code.Bgt_S : return OpCodes.Bgt_S;
+                       case Code.Ble_S : return OpCodes.Ble_S;
+                       case Code.Blt_S : return OpCodes.Blt_S;
+                       case Code.Bne_Un_S : return OpCodes.Bne_Un_S;
+                       case Code.Bge_Un_S : return OpCodes.Bge_Un_S;
+                       case Code.Bgt_Un_S : return OpCodes.Bgt_Un_S;
+                       case Code.Ble_Un_S : return OpCodes.Ble_Un_S;
+                       case Code.Blt_Un_S : return OpCodes.Blt_Un_S;
+                       case Code.Br : return OpCodes.Br;
+                       case Code.Brfalse : return OpCodes.Brfalse;
+                       case Code.Brtrue : return OpCodes.Brtrue;
+                       case Code.Beq : return OpCodes.Beq;
+                       case Code.Bge : return OpCodes.Bge;
+                       case Code.Bgt : return OpCodes.Bgt;
+                       case Code.Ble : return OpCodes.Ble;
+                       case Code.Blt : return OpCodes.Blt;
+                       case Code.Bne_Un : return OpCodes.Bne_Un;
+                       case Code.Bge_Un : return OpCodes.Bge_Un;
+                       case Code.Bgt_Un : return OpCodes.Bgt_Un;
+                       case Code.Ble_Un : return OpCodes.Ble_Un;
+                       case Code.Blt_Un : return OpCodes.Blt_Un;
+                       case Code.Switch : return OpCodes.Switch;
+                       case Code.Ldind_I1 : return OpCodes.Ldind_I1;
+                       case Code.Ldind_U1 : return OpCodes.Ldind_U1;
+                       case Code.Ldind_I2 : return OpCodes.Ldind_I2;
+                       case Code.Ldind_U2 : return OpCodes.Ldind_U2;
+                       case Code.Ldind_I4 : return OpCodes.Ldind_I4;
+                       case Code.Ldind_U4 : return OpCodes.Ldind_U4;
+                       case Code.Ldind_I8 : return OpCodes.Ldind_I8;
+                       case Code.Ldind_I : return OpCodes.Ldind_I;
+                       case Code.Ldind_R4 : return OpCodes.Ldind_R4;
+                       case Code.Ldind_R8 : return OpCodes.Ldind_R8;
+                       case Code.Ldind_Ref : return OpCodes.Ldind_Ref;
+                       case Code.Stind_Ref : return OpCodes.Stind_Ref;
+                       case Code.Stind_I1 : return OpCodes.Stind_I1;
+                       case Code.Stind_I2 : return OpCodes.Stind_I2;
+                       case Code.Stind_I4 : return OpCodes.Stind_I4;
+                       case Code.Stind_I8 : return OpCodes.Stind_I8;
+                       case Code.Stind_R4 : return OpCodes.Stind_R4;
+                       case Code.Stind_R8 : return OpCodes.Stind_R8;
+                       case Code.Add : return OpCodes.Add;
+                       case Code.Sub : return OpCodes.Sub;
+                       case Code.Mul : return OpCodes.Mul;
+                       case Code.Div : return OpCodes.Div;
+                       case Code.Div_Un : return OpCodes.Div_Un;
+                       case Code.Rem : return OpCodes.Rem;
+                       case Code.Rem_Un : return OpCodes.Rem_Un;
+                       case Code.And : return OpCodes.And;
+                       case Code.Or : return OpCodes.Or;
+                       case Code.Xor : return OpCodes.Xor;
+                       case Code.Shl : return OpCodes.Shl;
+                       case Code.Shr : return OpCodes.Shr;
+                       case Code.Shr_Un : return OpCodes.Shr_Un;
+                       case Code.Neg : return OpCodes.Neg;
+                       case Code.Not : return OpCodes.Not;
+                       case Code.Conv_I1 : return OpCodes.Conv_I1;
+                       case Code.Conv_I2 : return OpCodes.Conv_I2;
+                       case Code.Conv_I4 : return OpCodes.Conv_I4;
+                       case Code.Conv_I8 : return OpCodes.Conv_I8;
+                       case Code.Conv_R4 : return OpCodes.Conv_R4;
+                       case Code.Conv_R8 : return OpCodes.Conv_R8;
+                       case Code.Conv_U4 : return OpCodes.Conv_U4;
+                       case Code.Conv_U8 : return OpCodes.Conv_U8;
+                       case Code.Callvirt : return OpCodes.Callvirt;
+                       case Code.Cpobj : return OpCodes.Cpobj;
+                       case Code.Ldobj : return OpCodes.Ldobj;
+                       case Code.Ldstr : return OpCodes.Ldstr;
+                       case Code.Newobj : return OpCodes.Newobj;
+                       case Code.Castclass : return OpCodes.Castclass;
+                       case Code.Isinst : return OpCodes.Isinst;
+                       case Code.Conv_R_Un : return OpCodes.Conv_R_Un;
+                       case Code.Unbox : return OpCodes.Unbox;
+                       case Code.Throw : return OpCodes.Throw;
+                       case Code.Ldfld : return OpCodes.Ldfld;
+                       case Code.Ldflda : return OpCodes.Ldflda;
+                       case Code.Stfld : return OpCodes.Stfld;
+                       case Code.Ldsfld : return OpCodes.Ldsfld;
+                       case Code.Ldsflda : return OpCodes.Ldsflda;
+                       case Code.Stsfld : return OpCodes.Stsfld;
+                       case Code.Stobj : return OpCodes.Stobj;
+                       case Code.Conv_Ovf_I1_Un : return OpCodes.Conv_Ovf_I1_Un;
+                       case Code.Conv_Ovf_I2_Un : return OpCodes.Conv_Ovf_I2_Un;
+                       case Code.Conv_Ovf_I4_Un : return OpCodes.Conv_Ovf_I4_Un;
+                       case Code.Conv_Ovf_I8_Un : return OpCodes.Conv_Ovf_I8_Un;
+                       case Code.Conv_Ovf_U1_Un : return OpCodes.Conv_Ovf_U1_Un;
+                       case Code.Conv_Ovf_U2_Un : return OpCodes.Conv_Ovf_U2_Un;
+                       case Code.Conv_Ovf_U4_Un : return OpCodes.Conv_Ovf_U4_Un;
+                       case Code.Conv_Ovf_U8_Un : return OpCodes.Conv_Ovf_U8_Un;
+                       case Code.Conv_Ovf_I_Un : return OpCodes.Conv_Ovf_I_Un;
+                       case Code.Conv_Ovf_U_Un : return OpCodes.Conv_Ovf_U_Un;
+                       case Code.Box : return OpCodes.Box;
+                       case Code.Newarr : return OpCodes.Newarr;
+                       case Code.Ldlen : return OpCodes.Ldlen;
+                       case Code.Ldelema : return OpCodes.Ldelema;
+                       case Code.Ldelem_I1 : return OpCodes.Ldelem_I1;
+                       case Code.Ldelem_U1 : return OpCodes.Ldelem_U1;
+                       case Code.Ldelem_I2 : return OpCodes.Ldelem_I2;
+                       case Code.Ldelem_U2 : return OpCodes.Ldelem_U2;
+                       case Code.Ldelem_I4 : return OpCodes.Ldelem_I4;
+                       case Code.Ldelem_U4 : return OpCodes.Ldelem_U4;
+                       case Code.Ldelem_I8 : return OpCodes.Ldelem_I8;
+                       case Code.Ldelem_I : return OpCodes.Ldelem_I;
+                       case Code.Ldelem_R4 : return OpCodes.Ldelem_R4;
+                       case Code.Ldelem_R8 : return OpCodes.Ldelem_R8;
+                       case Code.Ldelem_Ref : return OpCodes.Ldelem_Ref;
+                       case Code.Stelem_I : return OpCodes.Stelem_I;
+                       case Code.Stelem_I1 : return OpCodes.Stelem_I1;
+                       case Code.Stelem_I2 : return OpCodes.Stelem_I2;
+                       case Code.Stelem_I4 : return OpCodes.Stelem_I4;
+                       case Code.Stelem_I8 : return OpCodes.Stelem_I8;
+                       case Code.Stelem_R4 : return OpCodes.Stelem_R4;
+                       case Code.Stelem_R8 : return OpCodes.Stelem_R8;
+                       case Code.Stelem_Ref : return OpCodes.Stelem_Ref;
+                       case Code.Ldelem_Any : return OpCodes.Ldelem_Any;
+                       case Code.Stelem_Any : return OpCodes.Stelem_Any;
+                       case Code.Unbox_Any : return OpCodes.Unbox_Any;
+                       case Code.Conv_Ovf_I1 : return OpCodes.Conv_Ovf_I1;
+                       case Code.Conv_Ovf_U1 : return OpCodes.Conv_Ovf_U1;
+                       case Code.Conv_Ovf_I2 : return OpCodes.Conv_Ovf_I2;
+                       case Code.Conv_Ovf_U2 : return OpCodes.Conv_Ovf_U2;
+                       case Code.Conv_Ovf_I4 : return OpCodes.Conv_Ovf_I4;
+                       case Code.Conv_Ovf_U4 : return OpCodes.Conv_Ovf_U4;
+                       case Code.Conv_Ovf_I8 : return OpCodes.Conv_Ovf_I8;
+                       case Code.Conv_Ovf_U8 : return OpCodes.Conv_Ovf_U8;
+                       case Code.Refanyval : return OpCodes.Refanyval;
+                       case Code.Ckfinite : return OpCodes.Ckfinite;
+                       case Code.Mkrefany : return OpCodes.Mkrefany;
+                       case Code.Ldtoken : return OpCodes.Ldtoken;
+                       case Code.Conv_U2 : return OpCodes.Conv_U2;
+                       case Code.Conv_U1 : return OpCodes.Conv_U1;
+                       case Code.Conv_I : return OpCodes.Conv_I;
+                       case Code.Conv_Ovf_I : return OpCodes.Conv_Ovf_I;
+                       case Code.Conv_Ovf_U : return OpCodes.Conv_Ovf_U;
+                       case Code.Add_Ovf : return OpCodes.Add_Ovf;
+                       case Code.Add_Ovf_Un : return OpCodes.Add_Ovf_Un;
+                       case Code.Mul_Ovf : return OpCodes.Mul_Ovf;
+                       case Code.Mul_Ovf_Un : return OpCodes.Mul_Ovf_Un;
+                       case Code.Sub_Ovf : return OpCodes.Sub_Ovf;
+                       case Code.Sub_Ovf_Un : return OpCodes.Sub_Ovf_Un;
+                       case Code.Endfinally : return OpCodes.Endfinally;
+                       case Code.Leave : return OpCodes.Leave;
+                       case Code.Leave_S : return OpCodes.Leave_S;
+                       case Code.Stind_I : return OpCodes.Stind_I;
+                       case Code.Conv_U : return OpCodes.Conv_U;
+                       case Code.Arglist : return OpCodes.Arglist;
+                       case Code.Ceq : return OpCodes.Ceq;
+                       case Code.Cgt : return OpCodes.Cgt;
+                       case Code.Cgt_Un : return OpCodes.Cgt_Un;
+                       case Code.Clt : return OpCodes.Clt;
+                       case Code.Clt_Un : return OpCodes.Clt_Un;
+                       case Code.Ldftn : return OpCodes.Ldftn;
+                       case Code.Ldvirtftn : return OpCodes.Ldvirtftn;
+                       case Code.Ldarg : return OpCodes.Ldarg;
+                       case Code.Ldarga : return OpCodes.Ldarga;
+                       case Code.Starg : return OpCodes.Starg;
+                       case Code.Ldloc : return OpCodes.Ldloc;
+                       case Code.Ldloca : return OpCodes.Ldloca;
+                       case Code.Stloc : return OpCodes.Stloc;
+                       case Code.Localloc : return OpCodes.Localloc;
+                       case Code.Endfilter : return OpCodes.Endfilter;
+                       case Code.Unaligned : return OpCodes.Unaligned;
+                       case Code.Volatile : return OpCodes.Volatile;
+                       case Code.Tail : return OpCodes.Tail;
+                       case Code.Initobj : return OpCodes.Initobj;
+                       case Code.Constrained : return OpCodes.Constrained;
+                       case Code.Cpblk : return OpCodes.Cpblk;
+                       case Code.Initblk : return OpCodes.Initblk;
+                       case Code.No : return OpCodes.No;
+                       case Code.Rethrow : return OpCodes.Rethrow;
+                       case Code.Sizeof : return OpCodes.Sizeof;
+                       case Code.Refanytype : return OpCodes.Refanytype;
+                       case Code.Readonly : return OpCodes.Readonly;
+                       default : return OpCodes.Nop;
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs
new file mode 100644 (file)
index 0000000..9284ae6
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// OperandType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum OperandType {
+               InlineBrTarget,
+               InlineField,
+               InlineI,
+               InlineI8,
+               InlineMethod,
+               InlineNone,
+               InlinePhi,
+               InlineR,
+               InlineSig,
+               InlineString,
+               InlineSwitch,
+               InlineTok,
+               InlineType,
+               InlineVar,
+               InlineParam,
+               ShortInlineBrTarget,
+               ShortInlineI,
+               ShortInlineR,
+               ShortInlineVar,
+               ShortInlineParam
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs
new file mode 100644 (file)
index 0000000..d941cc0
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// Scope.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal class Scope : IScopeProvider, IVariableDefinitionProvider, ICodeVisitable {
+
+               Instruction m_start;
+               Instruction m_end;
+
+               Scope m_parent;
+               ScopeCollection m_scopes;
+
+               VariableDefinitionCollection m_variables;
+
+               public Instruction Start {
+                       get { return m_start; }
+                       set { m_start = value; }
+               }
+
+               public Instruction End {
+                       get { return m_end; }
+                       set { m_end = value; }
+               }
+
+               public Scope Parent {
+                       get { return m_parent; }
+                       set { m_parent = value; }
+               }
+
+               public ScopeCollection Scopes {
+                       get {
+                               if (m_scopes == null)
+                                       m_scopes = new ScopeCollection (this);
+
+                               return m_scopes;
+                       }
+               }
+
+               public VariableDefinitionCollection Variables {
+                       get {
+                               if (m_variables == null)
+                                       m_variables = new VariableDefinitionCollection (this);
+
+                               return m_variables;
+                       }
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitScope (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs
new file mode 100644 (file)
index 0000000..b9eda34
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ScopeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ScopeCollection : CollectionBase, ICodeVisitable {
+
+               IScopeProvider m_container;
+
+               public Scope this [int index] {
+                       get { return List [index] as Scope; }
+                       set { List [index] = value; }
+               }
+
+               public IScopeProvider Container {
+                       get { return m_container; }
+               }
+
+               public ScopeCollection (IScopeProvider container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (Scope value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (Scope value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (Scope value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, Scope value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (Scope value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is Scope))
+                               throw new ArgumentException ("Must be of type " + typeof (Scope).FullName);
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitScopeCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs
new file mode 100644 (file)
index 0000000..0704756
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// SequencePoint.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal class SequencePoint {
+
+               Document m_document;
+
+               int m_startLine;
+               int m_startColumn;
+               int m_endLine;
+               int m_endColumn;
+
+               public int StartLine {
+                       get { return m_startLine; }
+                       set { m_startLine = value; }
+               }
+
+               public int StartColumn {
+                       get { return m_startColumn; }
+                       set { m_startColumn = value; }
+               }
+
+               public int EndLine {
+                       get { return m_endLine; }
+                       set { m_endLine = value; }
+               }
+
+               public int EndColumn {
+                       get { return m_endColumn; }
+                       set { m_endColumn = value; }
+               }
+
+               public Document Document {
+                       get { return m_document; }
+                       set { m_document = value; }
+               }
+
+               public SequencePoint (Document document)
+               {
+                       m_document = document;
+               }
+
+               public SequencePoint (Document doc, int startLine, int startCol, int endLine, int endCol) : this (doc)
+               {
+                       m_startLine = startLine;
+                       m_startColumn = startCol;
+                       m_endLine = endLine;
+                       m_endColumn = endCol;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs
new file mode 100644 (file)
index 0000000..91c0eba
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// StackBehaviour.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal enum StackBehaviour {
+               Pop0,
+               Pop1,
+               Pop1_pop1,
+               Popi,
+               Popi_pop1,
+               Popi_popi,
+               Popi_popi8,
+               Popi_popi_popi,
+               Popi_popr4,
+               Popi_popr8,
+               Popref,
+               Popref_pop1,
+               Popref_popi,
+               Popref_popi_popi,
+               Popref_popi_popi8,
+               Popref_popi_popr4,
+               Popref_popi_popr8,
+               Popref_popi_popref,
+               PopAll,
+               Push0,
+               Push1,
+               Push1_push1,
+               Pushi,
+               Pushi8,
+               Pushr4,
+               Pushr8,
+               Pushref,
+               Varpop,
+               Varpush
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/SymbolStoreHelper.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/SymbolStoreHelper.cs
new file mode 100644 (file)
index 0000000..5abf3a2
--- /dev/null
@@ -0,0 +1,95 @@
+//
+// SymbolStoreHelper.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using SR = System.Reflection;
+
+       sealed class SymbolStoreHelper {
+
+               static ISymbolStoreFactory s_factory;
+
+               SymbolStoreHelper ()
+               {
+               }
+
+               public static ISymbolReader GetReader (ModuleDefinition module)
+               {
+                       InitFactory ();
+
+                       return s_factory.CreateReader (module, module.Image.FileInformation.FullName);
+               }
+
+               public static ISymbolWriter GetWriter (ModuleDefinition module, string assemblyFileName)
+               {
+                       InitFactory ();
+
+                       return s_factory.CreateWriter (module, assemblyFileName);
+               }
+
+               static void InitFactory ()
+               {
+                       if (s_factory != null)
+                               return;
+
+                       string assembly_name;
+                       string type_name = GetSymbolSupportType (out assembly_name);
+
+                       Type factoryType = Type.GetType (type_name + ", " + assembly_name, false);
+                       if (factoryType == null) {
+                               try {
+                                       SR.Assembly assembly = SR.Assembly.LoadWithPartialName (assembly_name);
+                                       factoryType = assembly.GetType (type_name);
+                               } catch {}
+                       }
+
+                       if (factoryType == null)
+                               throw new NotSupportedException ();
+
+                       s_factory = (ISymbolStoreFactory) Activator.CreateInstance (factoryType);
+               }
+
+               static string GetSymbolSupportType (out string assembly)
+               {
+                       string kind = GetSymbolKind ();
+                       assembly = "Mono.Cecil." + kind;
+                       return string.Format (assembly + "." + kind + "Factory");
+               }
+
+               static string GetSymbolKind ()
+               {
+                       return OnMono () ? "Mdb" : "Pdb";
+               }
+
+               static bool OnMono ()
+               {
+                       return Type.GetType ("Mono.Runtime") != null;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs
new file mode 100644 (file)
index 0000000..74c1c4d
--- /dev/null
@@ -0,0 +1,60 @@
+//
+// VariableDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal sealed class VariableDefinition : VariableReference {
+
+               MethodDefinition m_method;
+
+               public MethodDefinition Method {
+                       get { return m_method; }
+                       set { m_method = value; }
+               }
+
+               public VariableDefinition (TypeReference variableType) : base (variableType)
+               {
+               }
+
+               public VariableDefinition (string name, int index, MethodDefinition method, TypeReference variableType) :
+                       base (name, index, variableType)
+               {
+                       m_method = method;
+               }
+
+               public override VariableDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public override void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitVariableDefinition (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..6f01604
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// VariableDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class VariableDefinitionCollection : CollectionBase, ICodeVisitable {
+
+               IVariableDefinitionProvider m_container;
+
+               public VariableDefinition this [int index] {
+                       get { return List [index] as VariableDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public IVariableDefinitionProvider Container {
+                       get { return m_container; }
+               }
+
+               public VariableDefinitionCollection (IVariableDefinitionProvider container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (VariableDefinition value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (VariableDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (VariableDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, VariableDefinition value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (VariableDefinition value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is VariableDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (VariableDefinition).FullName);
+               }
+
+               public void Accept (ICodeVisitor visitor)
+               {
+                       visitor.VisitVariableDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs
new file mode 100644 (file)
index 0000000..a8cace1
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// VariableReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+       internal abstract class VariableReference : ICodeVisitable {
+
+               string m_name;
+               int m_index;
+               TypeReference m_variableType;
+
+               public string Name {
+                       get { return m_name; }
+                       set { m_name = value; }
+               }
+
+               public int Index {
+                       get { return m_index; }
+                       set { m_index = value; }
+               }
+
+               public TypeReference VariableType {
+                       get { return m_variableType; }
+                       set { m_variableType = value; }
+               }
+
+               public VariableReference (TypeReference variableType)
+               {
+                       m_variableType = variableType;
+               }
+
+               public VariableReference (string name, int index, TypeReference variableType) : this (variableType)
+               {
+                       m_name = name;
+                       m_index = index;
+               }
+
+               public abstract VariableDefinition Resolve ();
+
+               public override string ToString ()
+               {
+                       if (m_name != null && m_name.Length > 0)
+                               return m_name;
+
+                       return string.Concat ("V_", m_index);
+               }
+
+               public abstract void Accept (ICodeVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs
new file mode 100644 (file)
index 0000000..d72fdab
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// AssemblyTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class AssemblyTable : IMetadataTable {
+
+               public const int RId = 0x20;
+
+               RowCollection m_rows;
+
+               public AssemblyRow this [int index] {
+                       get { return m_rows [index] as AssemblyRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyRow : IMetadataRow {
+
+               public AssemblyHashAlgorithm HashAlgId;
+               public ushort MajorVersion;
+               public ushort MinorVersion;
+               public ushort BuildNumber;
+               public ushort RevisionNumber;
+               public AssemblyFlags Flags;
+               public uint PublicKey;
+               public uint Name;
+               public uint Culture;
+
+               internal AssemblyRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs
new file mode 100644 (file)
index 0000000..a87ce94
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// AssemblyOSTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class AssemblyOSTable : IMetadataTable {
+
+               public const int RId = 0x22;
+
+               RowCollection m_rows;
+
+               public AssemblyOSRow this [int index] {
+                       get { return m_rows [index] as AssemblyOSRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyOSTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyOSTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyOSRow : IMetadataRow {
+
+               public uint OSPlatformID;
+               public uint OSMajorVersion;
+               public uint OSMinorVersion;
+
+               internal AssemblyOSRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyOSRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs
new file mode 100644 (file)
index 0000000..f46d227
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// AssemblyProcessorTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class AssemblyProcessorTable : IMetadataTable {
+
+               public const int RId = 0x21;
+
+               RowCollection m_rows;
+
+               public AssemblyProcessorRow this [int index] {
+                       get { return m_rows [index] as AssemblyProcessorRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyProcessorTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyProcessorTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyProcessorRow : IMetadataRow {
+
+               public uint Processor;
+
+               internal AssemblyProcessorRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyProcessorRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs
new file mode 100644 (file)
index 0000000..9dbff40
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// AssemblyRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class AssemblyRefTable : IMetadataTable {
+
+               public const int RId = 0x23;
+
+               RowCollection m_rows;
+
+               public AssemblyRefRow this [int index] {
+                       get { return m_rows [index] as AssemblyRefRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyRefTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyRefRow : IMetadataRow {
+
+               public ushort MajorVersion;
+               public ushort MinorVersion;
+               public ushort BuildNumber;
+               public ushort RevisionNumber;
+               public AssemblyFlags Flags;
+               public uint PublicKeyOrToken;
+               public uint Name;
+               public uint Culture;
+               public uint HashValue;
+
+               internal AssemblyRefRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs
new file mode 100644 (file)
index 0000000..858651d
--- /dev/null
@@ -0,0 +1,81 @@
+//
+// AssemblyRefOSTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class AssemblyRefOSTable : IMetadataTable {
+
+               public const int RId = 0x25;
+
+               RowCollection m_rows;
+
+               public AssemblyRefOSRow this [int index] {
+                       get { return m_rows [index] as AssemblyRefOSRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyRefOSTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefOSTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyRefOSRow : IMetadataRow {
+
+               public uint OSPlatformID;
+               public uint OSMajorVersion;
+               public uint OSMinorVersion;
+               public uint AssemblyRef;
+
+               internal AssemblyRefOSRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefOSRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
new file mode 100644 (file)
index 0000000..744a356
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// AssemblyRefProcessorTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class AssemblyRefProcessorTable : IMetadataTable {
+
+               public const int RId = 0x24;
+
+               RowCollection m_rows;
+
+               public AssemblyRefProcessorRow this [int index] {
+                       get { return m_rows [index] as AssemblyRefProcessorRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal AssemblyRefProcessorTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefProcessorTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class AssemblyRefProcessorRow : IMetadataRow {
+
+               public uint Processor;
+               public uint AssemblyRef;
+
+               internal AssemblyRefProcessorRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitAssemblyRefProcessorRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
new file mode 100644 (file)
index 0000000..7a1baf6
--- /dev/null
@@ -0,0 +1,448 @@
+//
+// BaseMetadataVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal abstract class BaseMetadataVisitor : IMetadataVisitor {
+
+               public virtual void VisitMetadataRoot (MetadataRoot root)
+               {
+               }
+
+               public virtual void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
+               {
+               }
+
+               public virtual void VisitMetadataStreamCollection (MetadataStreamCollection streams)
+               {
+               }
+
+               public virtual void VisitMetadataStream (MetadataStream stream)
+               {
+               }
+
+               public virtual void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
+               {
+               }
+
+               public virtual void VisitGuidHeap (GuidHeap heap)
+               {
+               }
+
+               public virtual void VisitStringsHeap (StringsHeap heap)
+               {
+               }
+
+               public virtual void VisitTablesHeap (TablesHeap heap)
+               {
+               }
+
+               public virtual void VisitBlobHeap (BlobHeap heap)
+               {
+               }
+
+               public virtual void VisitUserStringsHeap (UserStringsHeap heap)
+               {
+               }
+
+               public virtual void TerminateMetadataRoot (MetadataRoot root)
+               {
+               }
+       }
+
+       internal abstract class BaseMetadataTableVisitor : IMetadataTableVisitor {
+
+               public virtual void VisitTableCollection (TableCollection coll)
+               {
+               }
+
+               public virtual void VisitAssemblyTable (AssemblyTable table)
+               {
+               }
+
+               public virtual void VisitAssemblyOSTable (AssemblyOSTable table)
+               {
+               }
+
+               public virtual void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
+               {
+               }
+
+               public virtual void VisitAssemblyRefTable (AssemblyRefTable table)
+               {
+               }
+
+               public virtual void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
+               {
+               }
+
+               public virtual void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
+               {
+               }
+
+               public virtual void VisitClassLayoutTable (ClassLayoutTable table)
+               {
+               }
+
+               public virtual void VisitConstantTable (ConstantTable table)
+               {
+               }
+
+               public virtual void VisitCustomAttributeTable (CustomAttributeTable table)
+               {
+               }
+
+               public virtual void VisitDeclSecurityTable (DeclSecurityTable table)
+               {
+               }
+
+               public virtual void VisitEventTable (EventTable table)
+               {
+               }
+
+               public virtual void VisitEventMapTable (EventMapTable table)
+               {
+               }
+
+               public virtual void VisitEventPtrTable (EventPtrTable table)
+               {
+               }
+
+               public virtual void VisitExportedTypeTable (ExportedTypeTable table)
+               {
+               }
+
+               public virtual void VisitFieldTable (FieldTable table)
+               {
+               }
+
+               public virtual void VisitFieldLayoutTable (FieldLayoutTable table)
+               {
+               }
+
+               public virtual void VisitFieldMarshalTable (FieldMarshalTable table)
+               {
+               }
+
+               public virtual void VisitFieldPtrTable (FieldPtrTable table)
+               {
+               }
+
+               public virtual void VisitFieldRVATable (FieldRVATable table)
+               {
+               }
+
+               public virtual void VisitFileTable (FileTable table)
+               {
+               }
+
+               public virtual void VisitGenericParamTable (GenericParamTable table)
+               {
+               }
+
+               public virtual void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
+               {
+               }
+
+               public virtual void VisitImplMapTable (ImplMapTable table)
+               {
+               }
+
+               public virtual void VisitInterfaceImplTable (InterfaceImplTable table)
+               {
+               }
+
+               public virtual void VisitManifestResourceTable (ManifestResourceTable table)
+               {
+               }
+
+               public virtual void VisitMemberRefTable (MemberRefTable table)
+               {
+               }
+
+               public virtual void VisitMethodTable (MethodTable table)
+               {
+               }
+
+               public virtual void VisitMethodImplTable (MethodImplTable table)
+               {
+               }
+
+               public virtual void VisitMethodPtrTable (MethodPtrTable table)
+               {
+               }
+
+               public virtual void VisitMethodSemanticsTable (MethodSemanticsTable table)
+               {
+               }
+
+               public virtual void VisitMethodSpecTable (MethodSpecTable table)
+               {
+               }
+
+               public virtual void VisitModuleTable (ModuleTable table)
+               {
+               }
+
+               public virtual void VisitModuleRefTable (ModuleRefTable table)
+               {
+               }
+
+               public virtual void VisitNestedClassTable (NestedClassTable table)
+               {
+               }
+
+               public virtual void VisitParamTable (ParamTable table)
+               {
+               }
+
+               public virtual void VisitParamPtrTable (ParamPtrTable table)
+               {
+               }
+
+               public virtual void VisitPropertyTable (PropertyTable table)
+               {
+               }
+
+               public virtual void VisitPropertyMapTable (PropertyMapTable table)
+               {
+               }
+
+               public virtual void VisitPropertyPtrTable (PropertyPtrTable table)
+               {
+               }
+
+               public virtual void VisitStandAloneSigTable (StandAloneSigTable table)
+               {
+               }
+
+               public virtual void VisitTypeDefTable (TypeDefTable table)
+               {
+               }
+
+               public virtual void VisitTypeRefTable (TypeRefTable table)
+               {
+               }
+
+               public virtual void VisitTypeSpecTable (TypeSpecTable table)
+               {
+               }
+
+               public virtual void TerminateTableCollection (TableCollection coll)
+               {
+               }
+
+               public abstract IMetadataRowVisitor GetRowVisitor();
+       }
+
+       internal abstract class BaseMetadataRowVisitor : IMetadataRowVisitor {
+
+               public virtual void VisitRowCollection (RowCollection coll)
+               {
+               }
+
+               public virtual void VisitAssemblyRow (AssemblyRow row)
+               {
+               }
+
+               public virtual void VisitAssemblyOSRow (AssemblyOSRow row)
+               {
+               }
+
+               public virtual void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
+               {
+               }
+
+               public virtual void VisitAssemblyRefRow (AssemblyRefRow row)
+               {
+               }
+
+               public virtual void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
+               {
+               }
+
+               public virtual void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
+               {
+               }
+
+               public virtual void VisitClassLayoutRow (ClassLayoutRow row)
+               {
+               }
+
+               public virtual void VisitConstantRow (ConstantRow row)
+               {
+               }
+
+               public virtual void VisitCustomAttributeRow (CustomAttributeRow row)
+               {
+               }
+
+               public virtual void VisitDeclSecurityRow (DeclSecurityRow row)
+               {
+               }
+
+               public virtual void VisitEventRow (EventRow row)
+               {
+               }
+
+               public virtual void VisitEventMapRow (EventMapRow row)
+               {
+               }
+
+               public virtual void VisitEventPtrRow (EventPtrRow row)
+               {
+               }
+
+               public virtual void VisitExportedTypeRow (ExportedTypeRow row)
+               {
+               }
+
+               public virtual void VisitFieldRow (FieldRow row)
+               {
+               }
+
+               public virtual void VisitFieldLayoutRow (FieldLayoutRow row)
+               {
+               }
+
+               public virtual void VisitFieldMarshalRow (FieldMarshalRow row)
+               {
+               }
+
+               public virtual void VisitFieldPtrRow (FieldPtrRow row)
+               {
+               }
+
+               public virtual void VisitFieldRVARow (FieldRVARow row)
+               {
+               }
+
+               public virtual void VisitFileRow (FileRow row)
+               {
+               }
+
+               public virtual void VisitGenericParamRow (GenericParamRow row)
+               {
+               }
+
+               public virtual void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
+               {
+               }
+
+               public virtual void VisitImplMapRow (ImplMapRow row)
+               {
+               }
+
+               public virtual void VisitInterfaceImplRow (InterfaceImplRow row)
+               {
+               }
+
+               public virtual void VisitManifestResourceRow (ManifestResourceRow row)
+               {
+               }
+
+               public virtual void VisitMemberRefRow (MemberRefRow row)
+               {
+               }
+
+               public virtual void VisitMethodRow (MethodRow row)
+               {
+               }
+
+               public virtual void VisitMethodImplRow (MethodImplRow row)
+               {
+               }
+
+               public virtual void VisitMethodPtrRow (MethodPtrRow row)
+               {
+               }
+
+               public virtual void VisitMethodSemanticsRow (MethodSemanticsRow row)
+               {
+               }
+
+               public virtual void VisitMethodSpecRow (MethodSpecRow row)
+               {
+               }
+
+               public virtual void VisitModuleRow (ModuleRow row)
+               {
+               }
+
+               public virtual void VisitModuleRefRow (ModuleRefRow row)
+               {
+               }
+
+               public virtual void VisitNestedClassRow (NestedClassRow row)
+               {
+               }
+
+               public virtual void VisitParamRow (ParamRow row)
+               {
+               }
+
+               public virtual void VisitParamPtrRow (ParamPtrRow row)
+               {
+               }
+
+               public virtual void VisitPropertyRow (PropertyRow row)
+               {
+               }
+
+               public virtual void VisitPropertyMapRow (PropertyMapRow row)
+               {
+               }
+
+               public virtual void VisitPropertyPtrRow (PropertyPtrRow row)
+               {
+               }
+
+               public virtual void VisitStandAloneSigRow (StandAloneSigRow row)
+               {
+               }
+
+               public virtual void VisitTypeDefRow (TypeDefRow row)
+               {
+               }
+
+               public virtual void VisitTypeRefRow (TypeRefRow row)
+               {
+               }
+
+               public virtual void VisitTypeSpecRow (TypeSpecRow row)
+               {
+               }
+
+               public virtual void TerminateRowCollection (RowCollection coll)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs
new file mode 100644 (file)
index 0000000..63adb29
--- /dev/null
@@ -0,0 +1,90 @@
+//
+// BlobHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+
+       internal class BlobHeap : MetadataHeap {
+
+               internal BlobHeap (MetadataStream stream) : base (stream, MetadataStream.Blob)
+               {
+               }
+
+               public byte [] Read (uint index)
+               {
+                       return ReadBytesFromStream (index);
+               }
+
+               public BinaryReader GetReader (uint index)
+               {
+                       return new BinaryReader (new MemoryStream (Read (index)));
+               }
+
+               public override void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitBlobHeap (this);
+               }
+       }
+
+       class ByteArrayEqualityComparer : IHashCodeProvider, IComparer {
+
+               public static readonly ByteArrayEqualityComparer Instance = new ByteArrayEqualityComparer ();
+
+               public int GetHashCode (object obj)
+               {
+                       byte [] array = (byte []) obj;
+
+                       int hash = 0;
+                       for (int i = 0; i < array.Length; i++)
+                               hash = (hash * 37) ^ array [i];
+
+                       return hash;
+               }
+
+               public int Compare (object a, object b)
+               {
+                       byte [] x = (byte []) a;
+                       byte [] y = (byte []) b;
+
+                       if (x == null || y == null)
+                               return x == y ? 0 : 1;
+
+                       if (x.Length != y.Length)
+                               return 1;
+
+                       for (int i = 0; i < x.Length; i++)
+                               if (x [i] != y [i])
+                                       return 1;
+
+                       return 0;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs
new file mode 100644 (file)
index 0000000..cb937ec
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// ClassLayoutTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class ClassLayoutTable : IMetadataTable {
+
+               public const int RId = 0x0f;
+
+               RowCollection m_rows;
+
+               public ClassLayoutRow this [int index] {
+                       get { return m_rows [index] as ClassLayoutRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ClassLayoutTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitClassLayoutTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ClassLayoutRow : IMetadataRow {
+
+               public ushort PackingSize;
+               public uint ClassSize;
+               public uint Parent;
+
+               internal ClassLayoutRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitClassLayoutRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs
new file mode 100644 (file)
index 0000000..c8e1e1e
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// CodedIndex.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Mar 20 16:02:16 +0100 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal enum CodedIndex {
+               TypeDefOrRef,
+               HasConstant,
+               HasCustomAttribute,
+               HasFieldMarshal,
+               HasDeclSecurity,
+               MemberRefParent,
+               HasSemantics,
+               MethodDefOrRef,
+               MemberForwarded,
+               Implementation,
+               CustomAttributeType,
+               ResolutionScope,
+               TypeOrMethodDef
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs
new file mode 100644 (file)
index 0000000..c109fdf
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// ConstantTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class ConstantTable : IMetadataTable {
+
+               public const int RId = 0x0b;
+
+               RowCollection m_rows;
+
+               public ConstantRow this [int index] {
+                       get { return m_rows [index] as ConstantRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ConstantTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitConstantTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ConstantRow : IMetadataRow {
+
+               public ElementType Type;
+               public MetadataToken Parent;
+               public uint Value;
+
+               internal ConstantRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitConstantRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/CultureUtils.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CultureUtils.cs
new file mode 100644 (file)
index 0000000..24c319c
--- /dev/null
@@ -0,0 +1,83 @@
+//
+// CultureUtils.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.Globalization;
+
+       sealed class CultureUtils {
+
+               static IDictionary m_cultures;
+
+               CultureUtils ()
+               {
+               }
+
+               static void LoadCultures ()
+               {
+                       if (m_cultures != null)
+                               return;
+
+#if CF_1_0 || CF_2_0
+                       CultureInfo [] cultures = new CultureInfo [0];
+#else
+                       CultureInfo [] cultures = CultureInfo.GetCultures (CultureTypes.AllCultures);
+#endif
+                       m_cultures = new Hashtable (cultures.Length + 2);
+
+                       foreach (CultureInfo ci in cultures)
+                               if (!m_cultures.Contains (ci.Name))
+                                       m_cultures.Add (ci.Name, ci);
+
+                       if (!m_cultures.Contains (string.Empty))
+                               m_cultures.Add (string.Empty, CultureInfo.InvariantCulture);
+
+                       m_cultures.Add ("neutral", CultureInfo.InvariantCulture);
+               }
+
+               public static bool IsValid (string culture)
+               {
+                       if (culture == null)
+                               throw new ArgumentNullException ("culture");
+
+                       LoadCultures ();
+
+                       return m_cultures.Contains (culture);
+               }
+
+               public static CultureInfo GetCultureInfo (string culture)
+               {
+                       if (IsValid (culture))
+                               return m_cultures [culture] as CultureInfo;
+
+                       return CultureInfo.InvariantCulture;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs
new file mode 100644 (file)
index 0000000..ce49b8f
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// CustomAttributeTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class CustomAttributeTable : IMetadataTable {
+
+               public const int RId = 0x0c;
+
+               RowCollection m_rows;
+
+               public CustomAttributeRow this [int index] {
+                       get { return m_rows [index] as CustomAttributeRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal CustomAttributeTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitCustomAttributeTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class CustomAttributeRow : IMetadataRow {
+
+               public MetadataToken Parent;
+               public MetadataToken Type;
+               public uint Value;
+
+               internal CustomAttributeRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitCustomAttributeRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs
new file mode 100644 (file)
index 0000000..78784ad
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// DeclSecurityTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class DeclSecurityTable : IMetadataTable {
+
+               public const int RId = 0x0e;
+
+               RowCollection m_rows;
+
+               public DeclSecurityRow this [int index] {
+                       get { return m_rows [index] as DeclSecurityRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal DeclSecurityTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitDeclSecurityTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class DeclSecurityRow : IMetadataRow {
+
+               public SecurityAction Action;
+               public MetadataToken Parent;
+               public uint PermissionSet;
+
+               internal DeclSecurityRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitDeclSecurityRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs
new file mode 100644 (file)
index 0000000..81b1807
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// ElementType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal enum ElementType {
+               End              = 0x00,   // Marks end of a list
+               Void            = 0x01,
+               Boolean  = 0x02,
+               Char            = 0x03,
+               I1                = 0x04,
+               U1                = 0x05,
+               I2                = 0x06,
+               U2                = 0x07,
+               I4                = 0x08,
+               U4                = 0x09,
+               I8                = 0x0a,
+               U8                = 0x0b,
+               R4                = 0x0c,
+               R8                = 0x0d,
+               String    = 0x0e,
+               Ptr              = 0x0f,   // Followed by <type> token
+               ByRef      = 0x10,   // Followed by <type> token
+               ValueType   = 0x11,   // Followed by <type> token
+               Class      = 0x12,   // Followed by <type> token
+               Var        = 0x13,   // Followed by generic parameter number
+               Array      = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
+               GenericInst = 0x15,   // <type> <type-arg-count> <type-1> ... <type-n> */
+               TypedByRef  = 0x16,
+               I                  = 0x18,   // System.IntPtr
+               U                  = 0x19,   // System.UIntPtr
+               FnPtr      = 0x1b,   // Followed by full method signature
+               Object    = 0x1c,   // System.Object
+               SzArray  = 0x1d,   // Single-dim array with 0 lower bound
+               MVar       = 0x1e,   // Followed by generic parameter number
+               CModReqD        = 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
+               CModOpt  = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
+               Internal        = 0x21,   // Implemented within the CLI
+               Modifier        = 0x40,   // Or'd with following element types
+               Sentinel        = 0x41,   // Sentinel for varargs method signature
+               Pinned    = 0x45,   // Denotes a local variable that points at a pinned object
+
+               // special undocumented constants
+               Type            = 0x50,
+               Boxed      = 0x51,
+               Enum            = 0x55
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs
new file mode 100644 (file)
index 0000000..154134d
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// EventTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class EventTable : IMetadataTable {
+
+               public const int RId = 0x14;
+
+               RowCollection m_rows;
+
+               public EventRow this [int index] {
+                       get { return m_rows [index] as EventRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal EventTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitEventTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class EventRow : IMetadataRow {
+
+               public EventAttributes EventFlags;
+               public uint Name;
+               public MetadataToken EventType;
+
+               internal EventRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitEventRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs
new file mode 100644 (file)
index 0000000..58e977a
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// EventMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class EventMapTable : IMetadataTable {
+
+               public const int RId = 0x12;
+
+               RowCollection m_rows;
+
+               public EventMapRow this [int index] {
+                       get { return m_rows [index] as EventMapRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal EventMapTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitEventMapTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class EventMapRow : IMetadataRow {
+
+               public uint Parent;
+               public uint EventList;
+
+               internal EventMapRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitEventMapRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs
new file mode 100644 (file)
index 0000000..d719c56
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// EventPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class EventPtrTable : IMetadataTable {
+
+               public const int RId = 0x13;
+
+               RowCollection m_rows;
+
+               public EventPtrRow this [int index] {
+                       get { return m_rows [index] as EventPtrRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal EventPtrTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitEventPtrTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class EventPtrRow : IMetadataRow {
+
+               public uint Event;
+
+               internal EventPtrRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitEventPtrRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs
new file mode 100644 (file)
index 0000000..316f2a1
--- /dev/null
@@ -0,0 +1,84 @@
+//
+// ExportedTypeTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class ExportedTypeTable : IMetadataTable {
+
+               public const int RId = 0x27;
+
+               RowCollection m_rows;
+
+               public ExportedTypeRow this [int index] {
+                       get { return m_rows [index] as ExportedTypeRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ExportedTypeTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitExportedTypeTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ExportedTypeRow : IMetadataRow {
+
+               public TypeAttributes Flags;
+               public uint TypeDefId;
+               public uint TypeName;
+               public uint TypeNamespace;
+               public MetadataToken Implementation;
+
+               internal ExportedTypeRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitExportedTypeRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs
new file mode 100644 (file)
index 0000000..ddddc61
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// FieldTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class FieldTable : IMetadataTable {
+
+               public const int RId = 0x04;
+
+               RowCollection m_rows;
+
+               public FieldRow this [int index] {
+                       get { return m_rows [index] as FieldRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FieldTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFieldTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FieldRow : IMetadataRow {
+
+               public FieldAttributes Flags;
+               public uint Name;
+               public uint Signature;
+
+               internal FieldRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFieldRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs
new file mode 100644 (file)
index 0000000..5537695
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// FieldLayoutTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class FieldLayoutTable : IMetadataTable {
+
+               public const int RId = 0x10;
+
+               RowCollection m_rows;
+
+               public FieldLayoutRow this [int index] {
+                       get { return m_rows [index] as FieldLayoutRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FieldLayoutTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFieldLayoutTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FieldLayoutRow : IMetadataRow {
+
+               public uint Offset;
+               public uint Field;
+
+               internal FieldLayoutRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFieldLayoutRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs
new file mode 100644 (file)
index 0000000..45d3e75
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// FieldMarshalTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class FieldMarshalTable : IMetadataTable {
+
+               public const int RId = 0x0d;
+
+               RowCollection m_rows;
+
+               public FieldMarshalRow this [int index] {
+                       get { return m_rows [index] as FieldMarshalRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FieldMarshalTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFieldMarshalTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FieldMarshalRow : IMetadataRow {
+
+               public MetadataToken Parent;
+               public uint NativeType;
+
+               internal FieldMarshalRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFieldMarshalRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs
new file mode 100644 (file)
index 0000000..5810b28
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// FieldPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class FieldPtrTable : IMetadataTable {
+
+               public const int RId = 0x03;
+
+               RowCollection m_rows;
+
+               public FieldPtrRow this [int index] {
+                       get { return m_rows [index] as FieldPtrRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FieldPtrTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFieldPtrTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FieldPtrRow : IMetadataRow {
+
+               public uint Field;
+
+               internal FieldPtrRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFieldPtrRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs
new file mode 100644 (file)
index 0000000..56af427
--- /dev/null
@@ -0,0 +1,81 @@
+//
+// FieldRVATable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil.Binary;
+
+       internal sealed class FieldRVATable : IMetadataTable {
+
+               public const int RId = 0x1d;
+
+               RowCollection m_rows;
+
+               public FieldRVARow this [int index] {
+                       get { return m_rows [index] as FieldRVARow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FieldRVATable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFieldRVATable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FieldRVARow : IMetadataRow {
+
+               public RVA RVA;
+               public uint Field;
+
+               internal FieldRVARow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFieldRVARow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs
new file mode 100644 (file)
index 0000000..af0d81b
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// FileTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class FileTable : IMetadataTable {
+
+               public const int RId = 0x26;
+
+               RowCollection m_rows;
+
+               public FileRow this [int index] {
+                       get { return m_rows [index] as FileRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal FileTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitFileTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class FileRow : IMetadataRow {
+
+               public FileAttributes Flags;
+               public uint Name;
+               public uint HashValue;
+
+               internal FileRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitFileRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs
new file mode 100644 (file)
index 0000000..2e6b578
--- /dev/null
@@ -0,0 +1,83 @@
+//
+// GenericParamTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class GenericParamTable : IMetadataTable {
+
+               public const int RId = 0x2a;
+
+               RowCollection m_rows;
+
+               public GenericParamRow this [int index] {
+                       get { return m_rows [index] as GenericParamRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal GenericParamTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitGenericParamTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class GenericParamRow : IMetadataRow {
+
+               public ushort Number;
+               public GenericParameterAttributes Flags;
+               public MetadataToken Owner;
+               public uint Name;
+
+               internal GenericParamRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitGenericParamRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs
new file mode 100644 (file)
index 0000000..d91c2e5
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// GenericParamConstraintTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class GenericParamConstraintTable : IMetadataTable {
+
+               public const int RId = 0x2c;
+
+               RowCollection m_rows;
+
+               public GenericParamConstraintRow this [int index] {
+                       get { return m_rows [index] as GenericParamConstraintRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal GenericParamConstraintTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitGenericParamConstraintTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class GenericParamConstraintRow : IMetadataRow {
+
+               public uint Owner;
+               public MetadataToken Constraint;
+
+               internal GenericParamConstraintRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitGenericParamConstraintRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs
new file mode 100644 (file)
index 0000000..46a1729
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// GuidHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       internal class GuidHeap : MetadataHeap {
+
+               readonly IDictionary m_guids;
+
+               public IDictionary Guids {
+                       get { return m_guids; }
+               }
+
+               public GuidHeap (MetadataStream stream) : base (stream, MetadataStream.GUID)
+               {
+                       int capacity = (int)(stream.Header.Size / 16);
+                       m_guids = new Hashtable (capacity);
+               }
+
+               public Guid this [uint index] {
+                       get {
+                               if (index == 0)
+                                       return new Guid (new byte [16]);
+
+                               int idx = (int) index - 1;
+
+                               if (m_guids.Contains (idx))
+                                       return (Guid) m_guids [idx];
+
+                               if (idx + 16 > this.Data.Length)
+                                       throw new IndexOutOfRangeException ();
+
+                               byte [] buffer = null;
+                               if (this.Data.Length == 16) {
+                                       buffer = this.Data;
+                               } else {
+                                       buffer = new byte [16];
+                                       Buffer.BlockCopy (this.Data, idx, buffer, 0, 16);
+                               }
+                               Guid res = new Guid (buffer);
+                               m_guids [idx] = res;
+                               return res;
+                       }
+                       set { m_guids [index] = value; }
+               }
+
+               public override void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitGuidHeap (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs
new file mode 100644 (file)
index 0000000..ac36673
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// IMetadataRow.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal interface IMetadataRow : IMetadataRowVisitable {
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs
new file mode 100644 (file)
index 0000000..6dfaa77
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// IMetadataTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal interface IMetadataTable : IMetadataTableVisitable {
+               int Id { get; }
+               RowCollection Rows { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs
new file mode 100644 (file)
index 0000000..3762837
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// IMetadataVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal interface IMetadataVisitable {
+               void Accept (IMetadataVisitor visitor);
+       }
+
+       internal interface IMetadataTableVisitable {
+               void Accept (IMetadataTableVisitor visitor);
+       }
+
+       internal interface IMetadataRowVisitable {
+               void Accept (IMetadataRowVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs
new file mode 100644 (file)
index 0000000..5ba6959
--- /dev/null
@@ -0,0 +1,149 @@
+//
+// IMetadataVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal interface IMetadataVisitor {
+               void VisitMetadataRoot (MetadataRoot root);
+               void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header);
+               void VisitMetadataStreamCollection (MetadataStreamCollection streams);
+               void VisitMetadataStream (MetadataStream stream);
+               void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header);
+               void VisitGuidHeap (GuidHeap heap);
+               void VisitStringsHeap (StringsHeap heap);
+               void VisitTablesHeap (TablesHeap heap);
+               void VisitBlobHeap (BlobHeap heap);
+               void VisitUserStringsHeap (UserStringsHeap heap);
+
+               void TerminateMetadataRoot (MetadataRoot root);
+       }
+
+       internal interface IMetadataTableVisitor {
+               void VisitTableCollection (TableCollection coll);
+
+               void VisitAssemblyTable (AssemblyTable table);
+               void VisitAssemblyOSTable (AssemblyOSTable table);
+               void VisitAssemblyProcessorTable (AssemblyProcessorTable table);
+               void VisitAssemblyRefTable (AssemblyRefTable table);
+               void VisitAssemblyRefOSTable (AssemblyRefOSTable table);
+               void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table);
+               void VisitClassLayoutTable (ClassLayoutTable table);
+               void VisitConstantTable (ConstantTable table);
+               void VisitCustomAttributeTable (CustomAttributeTable table);
+               void VisitDeclSecurityTable (DeclSecurityTable table);
+               void VisitEventTable (EventTable table);
+               void VisitEventMapTable (EventMapTable table);
+               void VisitEventPtrTable (EventPtrTable table);
+               void VisitExportedTypeTable (ExportedTypeTable table);
+               void VisitFieldTable (FieldTable table);
+               void VisitFieldLayoutTable (FieldLayoutTable table);
+               void VisitFieldMarshalTable (FieldMarshalTable table);
+               void VisitFieldPtrTable (FieldPtrTable table);
+               void VisitFieldRVATable (FieldRVATable table);
+               void VisitFileTable (FileTable table);
+               void VisitGenericParamTable (GenericParamTable table);
+               void VisitGenericParamConstraintTable (GenericParamConstraintTable table);
+               void VisitImplMapTable (ImplMapTable table);
+               void VisitInterfaceImplTable (InterfaceImplTable table);
+               void VisitManifestResourceTable (ManifestResourceTable table);
+               void VisitMemberRefTable (MemberRefTable table);
+               void VisitMethodTable (MethodTable table);
+               void VisitMethodImplTable (MethodImplTable table);
+               void VisitMethodPtrTable (MethodPtrTable table);
+               void VisitMethodSemanticsTable (MethodSemanticsTable table);
+               void VisitMethodSpecTable (MethodSpecTable table);
+               void VisitModuleTable (ModuleTable table);
+               void VisitModuleRefTable (ModuleRefTable table);
+               void VisitNestedClassTable (NestedClassTable table);
+               void VisitParamTable (ParamTable table);
+               void VisitParamPtrTable (ParamPtrTable table);
+               void VisitPropertyTable (PropertyTable table);
+               void VisitPropertyMapTable (PropertyMapTable table);
+               void VisitPropertyPtrTable (PropertyPtrTable table);
+               void VisitStandAloneSigTable (StandAloneSigTable table);
+               void VisitTypeDefTable (TypeDefTable table);
+               void VisitTypeRefTable (TypeRefTable table);
+               void VisitTypeSpecTable (TypeSpecTable table);
+
+               void TerminateTableCollection (TableCollection coll);
+               IMetadataRowVisitor GetRowVisitor();
+}
+
+       internal interface IMetadataRowVisitor {
+               void VisitRowCollection (RowCollection coll);
+
+               void VisitAssemblyRow (AssemblyRow row);
+               void VisitAssemblyOSRow (AssemblyOSRow row);
+               void VisitAssemblyProcessorRow (AssemblyProcessorRow row);
+               void VisitAssemblyRefRow (AssemblyRefRow row);
+               void VisitAssemblyRefOSRow (AssemblyRefOSRow row);
+               void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row);
+               void VisitClassLayoutRow (ClassLayoutRow row);
+               void VisitConstantRow (ConstantRow row);
+               void VisitCustomAttributeRow (CustomAttributeRow row);
+               void VisitDeclSecurityRow (DeclSecurityRow row);
+               void VisitEventRow (EventRow row);
+               void VisitEventMapRow (EventMapRow row);
+               void VisitEventPtrRow (EventPtrRow row);
+               void VisitExportedTypeRow (ExportedTypeRow row);
+               void VisitFieldRow (FieldRow row);
+               void VisitFieldLayoutRow (FieldLayoutRow row);
+               void VisitFieldMarshalRow (FieldMarshalRow row);
+               void VisitFieldPtrRow (FieldPtrRow row);
+               void VisitFieldRVARow (FieldRVARow row);
+               void VisitFileRow (FileRow row);
+               void VisitGenericParamRow (GenericParamRow row);
+               void VisitGenericParamConstraintRow (GenericParamConstraintRow row);
+               void VisitImplMapRow (ImplMapRow row);
+               void VisitInterfaceImplRow (InterfaceImplRow row);
+               void VisitManifestResourceRow (ManifestResourceRow row);
+               void VisitMemberRefRow (MemberRefRow row);
+               void VisitMethodRow (MethodRow row);
+               void VisitMethodImplRow (MethodImplRow row);
+               void VisitMethodPtrRow (MethodPtrRow row);
+               void VisitMethodSemanticsRow (MethodSemanticsRow row);
+               void VisitMethodSpecRow (MethodSpecRow row);
+               void VisitModuleRow (ModuleRow row);
+               void VisitModuleRefRow (ModuleRefRow row);
+               void VisitNestedClassRow (NestedClassRow row);
+               void VisitParamRow (ParamRow row);
+               void VisitParamPtrRow (ParamPtrRow row);
+               void VisitPropertyRow (PropertyRow row);
+               void VisitPropertyMapRow (PropertyMapRow row);
+               void VisitPropertyPtrRow (PropertyPtrRow row);
+               void VisitStandAloneSigRow (StandAloneSigRow row);
+               void VisitTypeDefRow (TypeDefRow row);
+               void VisitTypeRefRow (TypeRefRow row);
+               void VisitTypeSpecRow (TypeSpecRow row);
+
+               void TerminateRowCollection (RowCollection coll);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs
new file mode 100644 (file)
index 0000000..688c864
--- /dev/null
@@ -0,0 +1,83 @@
+//
+// ImplMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class ImplMapTable : IMetadataTable {
+
+               public const int RId = 0x1c;
+
+               RowCollection m_rows;
+
+               public ImplMapRow this [int index] {
+                       get { return m_rows [index] as ImplMapRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ImplMapTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitImplMapTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ImplMapRow : IMetadataRow {
+
+               public PInvokeAttributes MappingFlags;
+               public MetadataToken MemberForwarded;
+               public uint ImportName;
+               public uint ImportScope;
+
+               internal ImplMapRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitImplMapRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs
new file mode 100644 (file)
index 0000000..8558c74
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// InterfaceImplTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class InterfaceImplTable : IMetadataTable {
+
+               public const int RId = 0x09;
+
+               RowCollection m_rows;
+
+               public InterfaceImplRow this [int index] {
+                       get { return m_rows [index] as InterfaceImplRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal InterfaceImplTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitInterfaceImplTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class InterfaceImplRow : IMetadataRow {
+
+               public uint Class;
+               public MetadataToken Interface;
+
+               internal InterfaceImplRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitInterfaceImplRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs
new file mode 100644 (file)
index 0000000..5fec7e0
--- /dev/null
@@ -0,0 +1,83 @@
+//
+// ManifestResourceTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class ManifestResourceTable : IMetadataTable {
+
+               public const int RId = 0x28;
+
+               RowCollection m_rows;
+
+               public ManifestResourceRow this [int index] {
+                       get { return m_rows [index] as ManifestResourceRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ManifestResourceTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitManifestResourceTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ManifestResourceRow : IMetadataRow {
+
+               public uint Offset;
+               public ManifestResourceAttributes Flags;
+               public uint Name;
+               public MetadataToken Implementation;
+
+               internal ManifestResourceRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitManifestResourceRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs
new file mode 100644 (file)
index 0000000..15354f9
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// MemberRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class MemberRefTable : IMetadataTable {
+
+               public const int RId = 0x0a;
+
+               RowCollection m_rows;
+
+               public MemberRefRow this [int index] {
+                       get { return m_rows [index] as MemberRefRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MemberRefTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMemberRefTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MemberRefRow : IMetadataRow {
+
+               public MetadataToken Class;
+               public uint Name;
+               public uint Signature;
+
+               internal MemberRefRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMemberRefRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs
new file mode 100644 (file)
index 0000000..2dee4dc
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// MetadataFormatException.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+
+       using Mono.Cecil.Binary;
+
+       internal class MetadataFormatException : ImageFormatException {
+
+               internal MetadataFormatException () : base ()
+               {
+               }
+
+               internal MetadataFormatException (string message) : base (message)
+               {
+               }
+
+               internal MetadataFormatException (string message, params string [] parameters) :
+                       base (string.Format (message, parameters))
+               {
+               }
+
+               internal MetadataFormatException (string message, Exception inner) :
+                       base (message, inner)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs
new file mode 100644 (file)
index 0000000..ed793e3
--- /dev/null
@@ -0,0 +1,92 @@
+//
+// MetadataHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+
+       using Mono.Cecil;
+
+       internal abstract class MetadataHeap : IMetadataVisitable  {
+
+               MetadataStream m_stream;
+               string m_name;
+               byte [] m_data;
+
+               public string Name {
+                       get { return m_name; }
+               }
+
+               public byte [] Data {
+                       get { return m_data; }
+                       set { m_data = value; }
+               }
+
+               public int IndexSize;
+
+               internal MetadataHeap (MetadataStream stream, string name)
+               {
+                       m_name = name;
+                       m_stream = stream;
+               }
+
+               public static MetadataHeap HeapFactory (MetadataStream stream)
+               {
+                       switch (stream.Header.Name) {
+                       case MetadataStream.Tables :
+                       case MetadataStream.IncrementalTables :
+                               return new TablesHeap (stream);
+                       case MetadataStream.GUID :
+                               return new GuidHeap (stream);
+                       case MetadataStream.Strings :
+                               return new StringsHeap (stream);
+                       case MetadataStream.UserStrings :
+                               return new UserStringsHeap (stream);
+                       case MetadataStream.Blob :
+                               return new BlobHeap (stream);
+                       default :
+                               return null;
+                       }
+               }
+
+               public MetadataStream GetStream ()
+               {
+                       return m_stream;
+               }
+
+               protected virtual byte [] ReadBytesFromStream (uint pos)
+               {
+                       int start, length = Utilities.ReadCompressedInteger (m_data, (int) pos, out start);
+                       byte [] buffer = new byte [length];
+                       Buffer.BlockCopy (m_data, start, buffer, 0, length);
+                       return buffer;
+               }
+
+               public abstract void Accept (IMetadataVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataInitializer.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataInitializer.cs
new file mode 100644 (file)
index 0000000..28cc840
--- /dev/null
@@ -0,0 +1,77 @@
+//
+// MetadataInitializer.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Binary;
+
+       sealed class MetadataInitializer : BaseMetadataVisitor {
+
+               MetadataRoot m_root;
+
+               public MetadataInitializer (ImageInitializer init)
+               {
+                       m_root = init.Image.MetadataRoot;
+               }
+
+               public override void VisitMetadataRoot (MetadataRoot root)
+               {
+                       root.Header = new MetadataRoot.MetadataRootHeader ();
+                       root.Streams = new MetadataStreamCollection ();
+               }
+
+               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
+               {
+                       header.SetDefaultValues ();
+               }
+
+               public override void VisitMetadataStreamCollection (MetadataStreamCollection coll)
+               {
+                       MetadataStream tables = new MetadataStream ();
+                       tables.Header.Name = MetadataStream.Tables;
+                       tables.Heap = MetadataHeap.HeapFactory (tables);
+                       TablesHeap th = tables.Heap as TablesHeap;
+                       th.Tables = new TableCollection (th);
+                       m_root.Streams.Add (tables);
+               }
+
+               public override void VisitTablesHeap (TablesHeap th)
+               {
+                       th.Reserved = 0;
+                       th.MajorVersion = 1;
+                       th.MinorVersion = 0;
+                       th.Reserved2 = 1;
+                       th.Sorted = 0x2003301fa00;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataReader.cs
new file mode 100644 (file)
index 0000000..cc9d594
--- /dev/null
@@ -0,0 +1,229 @@
+//
+// MetadataReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil.Binary;
+
+       sealed class MetadataReader : BaseMetadataVisitor {
+
+               ImageReader m_ir;
+               BinaryReader m_binaryReader;
+               MetadataTableReader m_tableReader;
+               MetadataRoot m_root;
+
+               public MetadataTableReader TableReader {
+                       get { return m_tableReader; }
+               }
+
+               public MetadataReader (ImageReader brv)
+               {
+                       m_ir = brv;
+                       m_binaryReader = brv.GetReader ();
+               }
+
+               public MetadataRoot GetMetadataRoot ()
+               {
+                       return m_root;
+               }
+
+               public BinaryReader GetDataReader (RVA rva)
+               {
+                       return m_ir.Image.GetReaderAtVirtualAddress (rva);
+               }
+
+               public override void VisitMetadataRoot (MetadataRoot root)
+               {
+                       m_root = root;
+                       root.Header = new MetadataRoot.MetadataRootHeader ();
+                       root.Streams = new MetadataStreamCollection ();
+               }
+
+               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
+               {
+                       long headpos = m_binaryReader.BaseStream.Position;
+
+                       header.Signature = m_binaryReader.ReadUInt32 ();
+
+                       if (header.Signature != MetadataRoot.MetadataRootHeader.StandardSignature)
+                               throw new MetadataFormatException ("Wrong magic number");
+
+                       header.MajorVersion = m_binaryReader.ReadUInt16 ();
+                       header.MinorVersion = m_binaryReader.ReadUInt16 ();
+                       header.Reserved = m_binaryReader.ReadUInt32 ();
+
+                       // read version
+                       uint length = m_binaryReader.ReadUInt32 ();
+                       if (length != 0) {
+                               long pos = m_binaryReader.BaseStream.Position;
+
+                               byte [] version, buffer = new byte [length];
+                               int read = 0;
+                               while (read < length) {
+                                       byte cur = (byte)m_binaryReader.ReadSByte ();
+                                       if (cur == 0)
+                                               break;
+                                       buffer [read++] = cur;
+                               }
+                               version = new byte [read];
+                               Buffer.BlockCopy (buffer, 0, version, 0, read);
+                               header.Version = Encoding.UTF8.GetString (version, 0, version.Length);
+
+                               pos += length - headpos + 3;
+                               pos &= ~3;
+                               pos += headpos;
+
+                               m_binaryReader.BaseStream.Position = pos;
+                       } else
+                               header.Version = string.Empty;
+
+                       header.Flags = m_binaryReader.ReadUInt16 ();
+                       header.Streams = m_binaryReader.ReadUInt16 ();
+               }
+
+               public override void VisitMetadataStreamCollection (MetadataStreamCollection coll)
+               {
+                       for (int i = 0; i < m_root.Header.Streams; i++)
+                               coll.Add (new MetadataStream ());
+               }
+
+               public override void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
+               {
+                       header.Offset = m_binaryReader.ReadUInt32 ();
+                       header.Size = m_binaryReader.ReadUInt32 ();
+
+                       StringBuilder buffer = new StringBuilder ();
+                       while (true) {
+                               char cur = (char) m_binaryReader.ReadSByte ();
+                               if (cur == '\0')
+                                       break;
+                               buffer.Append (cur);
+                       }
+                       header.Name = buffer.ToString ();
+                       if (header.Name.Length == 0)
+                               throw new MetadataFormatException ("Invalid stream name");
+
+                       long rootpos = m_root.GetImage ().ResolveVirtualAddress (
+                               m_root.GetImage ().CLIHeader.Metadata.VirtualAddress);
+
+                       long curpos = m_binaryReader.BaseStream.Position;
+
+                       if (header.Size != 0)
+                               curpos -= rootpos;
+
+                       curpos += 3;
+                       curpos &= ~3;
+
+                       if (header.Size != 0)
+                               curpos += rootpos;
+
+                       m_binaryReader.BaseStream.Position = curpos;
+
+                       header.Stream.Heap = MetadataHeap.HeapFactory (header.Stream);
+               }
+
+               public override void VisitGuidHeap (GuidHeap heap)
+               {
+                       VisitHeap (heap);
+               }
+
+               public override void VisitStringsHeap (StringsHeap heap)
+               {
+                       VisitHeap (heap);
+
+                       if (heap.Data.Length < 1 && heap.Data [0] != 0)
+                               throw new MetadataFormatException ("Malformed #Strings heap");
+
+                       heap [(uint) 0] = string.Empty;
+               }
+
+               public override void VisitTablesHeap (TablesHeap heap)
+               {
+                       VisitHeap (heap);
+                       heap.Tables = new TableCollection (heap);
+
+                       BinaryReader br = new BinaryReader (new MemoryStream (heap.Data));
+                       try {
+                               heap.Reserved = br.ReadUInt32 ();
+                               heap.MajorVersion = br.ReadByte ();
+                               heap.MinorVersion = br.ReadByte ();
+                               heap.HeapSizes = br.ReadByte ();
+                               heap.Reserved2 = br.ReadByte ();
+                               heap.Valid = br.ReadInt64 ();
+                               heap.Sorted = br.ReadInt64 ();
+                       } finally {
+                               // COMPACT FRAMEWORK NOTE: BinaryReader is not IDisposable
+                               br.Close ();
+                       }
+               }
+
+               public override void VisitBlobHeap (BlobHeap heap)
+               {
+                       VisitHeap (heap);
+               }
+
+               public override void VisitUserStringsHeap (UserStringsHeap heap)
+               {
+                       VisitHeap (heap);
+               }
+
+               void VisitHeap (MetadataHeap heap)
+               {
+                       long cursor = m_binaryReader.BaseStream.Position;
+
+                       m_binaryReader.BaseStream.Position = m_root.GetImage ().ResolveVirtualAddress (
+                               m_root.GetImage ().CLIHeader.Metadata.VirtualAddress)
+                               + heap.GetStream ().Header.Offset;
+
+                       heap.Data = m_binaryReader.ReadBytes ((int) heap.GetStream ().Header.Size);
+
+                       m_binaryReader.BaseStream.Position = cursor;
+               }
+
+               void SetHeapIndexSize (MetadataHeap heap, byte flag)
+               {
+                       if (heap == null)
+                               return;
+                       TablesHeap th = m_root.Streams.TablesHeap;
+                       heap.IndexSize = ((th.HeapSizes & flag) > 0) ? 4 : 2;
+               }
+
+               public override void TerminateMetadataRoot (MetadataRoot root)
+               {
+                       SetHeapIndexSize (root.Streams.StringsHeap, 0x01);
+                       SetHeapIndexSize (root.Streams.GuidHeap, 0x02);
+                       SetHeapIndexSize (root.Streams.BlobHeap, 0x04);
+                       m_tableReader = new MetadataTableReader (this);
+                       root.Streams.TablesHeap.Tables.Accept (m_tableReader);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs
new file mode 100644 (file)
index 0000000..fbf76a8
--- /dev/null
@@ -0,0 +1,99 @@
+//
+// MetadataRoot.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil.Binary;
+
+       internal sealed class MetadataRoot : IMetadataVisitable {
+
+               MetadataRootHeader m_header;
+               Image m_image;
+
+               MetadataStreamCollection m_streams;
+
+               public MetadataRootHeader Header {
+                       get { return m_header; }
+                       set { m_header = value; }
+               }
+
+               public MetadataStreamCollection Streams {
+                       get { return m_streams; }
+                       set { m_streams = value; }
+               }
+
+               internal MetadataRoot (Image img)
+               {
+                       m_image = img;
+               }
+
+               public Image GetImage ()
+               {
+                       return m_image;
+               }
+
+               public void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitMetadataRoot (this);
+
+                       m_header.Accept (visitor);
+                       m_streams.Accept (visitor);
+
+                       visitor.TerminateMetadataRoot (this);
+               }
+
+               internal sealed class MetadataRootHeader : IHeader, IMetadataVisitable {
+
+                       public const uint StandardSignature = 0x424a5342;
+
+                       public uint Signature;
+                       public ushort MinorVersion;
+                       public ushort MajorVersion;
+                       public uint Reserved;
+                       public string Version;
+                       public ushort Flags;
+                       public ushort Streams;
+
+                       internal MetadataRootHeader ()
+                       {
+                       }
+
+                       public void SetDefaultValues ()
+                       {
+                               Signature = StandardSignature;
+                               Reserved = 0;
+                               Flags = 0;
+                       }
+
+                       public void Accept (IMetadataVisitor visitor)
+                       {
+                               visitor.VisitMetadataRootHeader (this);
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowReader.cs
new file mode 100644 (file)
index 0000000..c8b5374
--- /dev/null
@@ -0,0 +1,369 @@
+//
+// MetadataRowReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Sat Feb 16 23:24:17 +0100 2008
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+
+       using Mono.Cecil.Binary;
+
+       sealed class MetadataRowReader : BaseMetadataRowVisitor {
+
+               MetadataTableReader m_mtrv;
+               BinaryReader m_binaryReader;
+               MetadataRoot m_metadataRoot;
+
+               Utilities.TableRowCounter m_counter;
+               int [] m_ciCache;
+
+               int m_blobHeapIdxSz;
+               int m_stringsHeapIdxSz;
+               int m_guidHeapIdxSz;
+
+               public MetadataRowReader (MetadataTableReader mtrv)
+               {
+                       m_mtrv = mtrv;
+                       m_binaryReader = mtrv.GetReader ();
+                       m_metadataRoot = mtrv.GetMetadataRoot ();
+                       m_ciCache = new int [13];
+                       m_counter = new Utilities.TableRowCounter (m_mtrv.GetNumberOfRows);
+               }
+
+               int GetIndexSize (int rid)
+               {
+                       return m_mtrv.GetNumberOfRows (rid) < (1 << 16) ? 2 : 4;
+               }
+
+               int GetCodedIndexSize (CodedIndex ci)
+               {
+                       return Utilities.GetCodedIndexSize (ci, m_counter, m_ciCache);
+               }
+
+               uint ReadByIndexSize (int size)
+               {
+                       if (size == 2) {
+                               return (uint) m_binaryReader.ReadUInt16 ();
+                       } else if (size == 4) {
+                               return m_binaryReader.ReadUInt32 ();
+                       } else {
+                               throw new MetadataFormatException ("Non valid size for indexing");
+                       }
+               }
+
+               public override void VisitRowCollection (RowCollection coll)
+               {
+                       m_blobHeapIdxSz = m_metadataRoot.Streams.BlobHeap != null ?
+                               m_metadataRoot.Streams.BlobHeap.IndexSize : 2;
+                       m_stringsHeapIdxSz = m_metadataRoot.Streams.StringsHeap != null ?
+                               m_metadataRoot.Streams.StringsHeap.IndexSize : 2;
+                       m_guidHeapIdxSz = m_metadataRoot.Streams.GuidHeap != null ?
+                               m_metadataRoot.Streams.GuidHeap.IndexSize : 2;
+               }
+
+               public override void VisitAssemblyRow (AssemblyRow row)
+               {
+                       row.HashAlgId = (Mono.Cecil.AssemblyHashAlgorithm) m_binaryReader.ReadUInt32 ();
+                       row.MajorVersion = m_binaryReader.ReadUInt16 ();
+                       row.MinorVersion = m_binaryReader.ReadUInt16 ();
+                       row.BuildNumber = m_binaryReader.ReadUInt16 ();
+                       row.RevisionNumber = m_binaryReader.ReadUInt16 ();
+                       row.Flags = (Mono.Cecil.AssemblyFlags) m_binaryReader.ReadUInt32 ();
+                       row.PublicKey = ReadByIndexSize (m_blobHeapIdxSz);
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Culture = ReadByIndexSize (m_stringsHeapIdxSz);
+               }
+               public override void VisitAssemblyOSRow (AssemblyOSRow row)
+               {
+                       row.OSPlatformID = m_binaryReader.ReadUInt32 ();
+                       row.OSMajorVersion = m_binaryReader.ReadUInt32 ();
+                       row.OSMinorVersion = m_binaryReader.ReadUInt32 ();
+               }
+               public override void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
+               {
+                       row.Processor = m_binaryReader.ReadUInt32 ();
+               }
+               public override void VisitAssemblyRefRow (AssemblyRefRow row)
+               {
+                       row.MajorVersion = m_binaryReader.ReadUInt16 ();
+                       row.MinorVersion = m_binaryReader.ReadUInt16 ();
+                       row.BuildNumber = m_binaryReader.ReadUInt16 ();
+                       row.RevisionNumber = m_binaryReader.ReadUInt16 ();
+                       row.Flags = (Mono.Cecil.AssemblyFlags) m_binaryReader.ReadUInt32 ();
+                       row.PublicKeyOrToken = ReadByIndexSize (m_blobHeapIdxSz);
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Culture = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.HashValue = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
+               {
+                       row.OSPlatformID = m_binaryReader.ReadUInt32 ();
+                       row.OSMajorVersion = m_binaryReader.ReadUInt32 ();
+                       row.OSMinorVersion = m_binaryReader.ReadUInt32 ();
+                       row.AssemblyRef = ReadByIndexSize (GetIndexSize (AssemblyRefTable.RId));
+               }
+               public override void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
+               {
+                       row.Processor = m_binaryReader.ReadUInt32 ();
+                       row.AssemblyRef = ReadByIndexSize (GetIndexSize (AssemblyRefTable.RId));
+               }
+               public override void VisitClassLayoutRow (ClassLayoutRow row)
+               {
+                       row.PackingSize = m_binaryReader.ReadUInt16 ();
+                       row.ClassSize = m_binaryReader.ReadUInt32 ();
+                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+               }
+               public override void VisitConstantRow (ConstantRow row)
+               {
+                       row.Type = (Mono.Cecil.Metadata.ElementType) m_binaryReader.ReadUInt16 ();
+                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasConstant,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasConstant)));
+                       row.Value = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitCustomAttributeRow (CustomAttributeRow row)
+               {
+                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasCustomAttribute,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasCustomAttribute)));
+                       row.Type = Utilities.GetMetadataToken (CodedIndex.CustomAttributeType,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.CustomAttributeType)));
+                       row.Value = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitDeclSecurityRow (DeclSecurityRow row)
+               {
+                       row.Action = (Mono.Cecil.SecurityAction) m_binaryReader.ReadInt16 ();
+                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasDeclSecurity,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasDeclSecurity)));
+                       row.PermissionSet = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitEventRow (EventRow row)
+               {
+                       row.EventFlags = (Mono.Cecil.EventAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.EventType = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
+               }
+               public override void VisitEventMapRow (EventMapRow row)
+               {
+                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+                       row.EventList = ReadByIndexSize (GetIndexSize (EventTable.RId));
+               }
+               public override void VisitEventPtrRow (EventPtrRow row)
+               {
+                       row.Event = ReadByIndexSize (GetIndexSize (EventTable.RId));
+               }
+               public override void VisitExportedTypeRow (ExportedTypeRow row)
+               {
+                       row.Flags = (Mono.Cecil.TypeAttributes) m_binaryReader.ReadUInt32 ();
+                       row.TypeDefId = m_binaryReader.ReadUInt32 ();
+                       row.TypeName = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.TypeNamespace = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Implementation = Utilities.GetMetadataToken (CodedIndex.Implementation,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.Implementation)));
+               }
+               public override void VisitFieldRow (FieldRow row)
+               {
+                       row.Flags = (Mono.Cecil.FieldAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitFieldLayoutRow (FieldLayoutRow row)
+               {
+                       row.Offset = m_binaryReader.ReadUInt32 ();
+                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
+               }
+               public override void VisitFieldMarshalRow (FieldMarshalRow row)
+               {
+                       row.Parent = Utilities.GetMetadataToken (CodedIndex.HasFieldMarshal,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasFieldMarshal)));
+                       row.NativeType = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitFieldPtrRow (FieldPtrRow row)
+               {
+                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
+               }
+               public override void VisitFieldRVARow (FieldRVARow row)
+               {
+                       row.RVA = new RVA (m_binaryReader.ReadUInt32 ());
+                       row.Field = ReadByIndexSize (GetIndexSize (FieldTable.RId));
+               }
+               public override void VisitFileRow (FileRow row)
+               {
+                       row.Flags = (Mono.Cecil.FileAttributes) m_binaryReader.ReadUInt32 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.HashValue = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitGenericParamRow (GenericParamRow row)
+               {
+                       row.Number = m_binaryReader.ReadUInt16 ();
+                       row.Flags = (Mono.Cecil.GenericParameterAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Owner = Utilities.GetMetadataToken (CodedIndex.TypeOrMethodDef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeOrMethodDef)));
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+               }
+               public override void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
+               {
+                       row.Owner = ReadByIndexSize (GetIndexSize (GenericParamTable.RId));
+                       row.Constraint = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
+               }
+               public override void VisitImplMapRow (ImplMapRow row)
+               {
+                       row.MappingFlags = (Mono.Cecil.PInvokeAttributes) m_binaryReader.ReadUInt16 ();
+                       row.MemberForwarded = Utilities.GetMetadataToken (CodedIndex.MemberForwarded,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MemberForwarded)));
+                       row.ImportName = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.ImportScope = ReadByIndexSize (GetIndexSize (ModuleRefTable.RId));
+               }
+               public override void VisitInterfaceImplRow (InterfaceImplRow row)
+               {
+                       row.Class = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+                       row.Interface = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
+               }
+               public override void VisitManifestResourceRow (ManifestResourceRow row)
+               {
+                       row.Offset = m_binaryReader.ReadUInt32 ();
+                       row.Flags = (Mono.Cecil.ManifestResourceAttributes) m_binaryReader.ReadUInt32 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Implementation = Utilities.GetMetadataToken (CodedIndex.Implementation,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.Implementation)));
+               }
+               public override void VisitMemberRefRow (MemberRefRow row)
+               {
+                       row.Class = Utilities.GetMetadataToken (CodedIndex.MemberRefParent,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MemberRefParent)));
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitMethodRow (MethodRow row)
+               {
+                       row.RVA = new RVA (m_binaryReader.ReadUInt32 ());
+                       row.ImplFlags = (Mono.Cecil.MethodImplAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Flags = (Mono.Cecil.MethodAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
+                       row.ParamList = ReadByIndexSize (GetIndexSize (ParamTable.RId));
+               }
+               public override void VisitMethodImplRow (MethodImplRow row)
+               {
+                       row.Class = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+                       row.MethodBody = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
+                       row.MethodDeclaration = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
+               }
+               public override void VisitMethodPtrRow (MethodPtrRow row)
+               {
+                       row.Method = ReadByIndexSize (GetIndexSize (MethodTable.RId));
+               }
+               public override void VisitMethodSemanticsRow (MethodSemanticsRow row)
+               {
+                       row.Semantics = (Mono.Cecil.MethodSemanticsAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Method = ReadByIndexSize (GetIndexSize (MethodTable.RId));
+                       row.Association = Utilities.GetMetadataToken (CodedIndex.HasSemantics,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.HasSemantics)));
+               }
+               public override void VisitMethodSpecRow (MethodSpecRow row)
+               {
+                       row.Method = Utilities.GetMetadataToken (CodedIndex.MethodDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.MethodDefOrRef)));
+                       row.Instantiation = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitModuleRow (ModuleRow row)
+               {
+                       row.Generation = m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Mvid = ReadByIndexSize (m_guidHeapIdxSz);
+                       row.EncId = ReadByIndexSize (m_guidHeapIdxSz);
+                       row.EncBaseId = ReadByIndexSize (m_guidHeapIdxSz);
+               }
+               public override void VisitModuleRefRow (ModuleRefRow row)
+               {
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+               }
+               public override void VisitNestedClassRow (NestedClassRow row)
+               {
+                       row.NestedClass = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+                       row.EnclosingClass = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+               }
+               public override void VisitParamRow (ParamRow row)
+               {
+                       row.Flags = (Mono.Cecil.ParameterAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Sequence = m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+               }
+               public override void VisitParamPtrRow (ParamPtrRow row)
+               {
+                       row.Param = ReadByIndexSize (GetIndexSize (ParamTable.RId));
+               }
+               public override void VisitPropertyRow (PropertyRow row)
+               {
+                       row.Flags = (Mono.Cecil.PropertyAttributes) m_binaryReader.ReadUInt16 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Type = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitPropertyMapRow (PropertyMapRow row)
+               {
+                       row.Parent = ReadByIndexSize (GetIndexSize (TypeDefTable.RId));
+                       row.PropertyList = ReadByIndexSize (GetIndexSize (PropertyTable.RId));
+               }
+               public override void VisitPropertyPtrRow (PropertyPtrRow row)
+               {
+                       row.Property = ReadByIndexSize (GetIndexSize (PropertyTable.RId));
+               }
+               public override void VisitStandAloneSigRow (StandAloneSigRow row)
+               {
+                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+               public override void VisitTypeDefRow (TypeDefRow row)
+               {
+                       row.Flags = (Mono.Cecil.TypeAttributes) m_binaryReader.ReadUInt32 ();
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Namespace = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Extends = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.TypeDefOrRef)));
+                       row.FieldList = ReadByIndexSize (GetIndexSize (FieldTable.RId));
+                       row.MethodList = ReadByIndexSize (GetIndexSize (MethodTable.RId));
+               }
+               public override void VisitTypeRefRow (TypeRefRow row)
+               {
+                       row.ResolutionScope = Utilities.GetMetadataToken (CodedIndex.ResolutionScope,
+                               ReadByIndexSize (GetCodedIndexSize (CodedIndex.ResolutionScope)));
+                       row.Name = ReadByIndexSize (m_stringsHeapIdxSz);
+                       row.Namespace = ReadByIndexSize (m_stringsHeapIdxSz);
+               }
+               public override void VisitTypeSpecRow (TypeSpecRow row)
+               {
+                       row.Signature = ReadByIndexSize (m_blobHeapIdxSz);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowWriter.cs
new file mode 100644 (file)
index 0000000..c592cc3
--- /dev/null
@@ -0,0 +1,798 @@
+//
+// MetadataRowWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Sat Feb 16 23:24:17 +0100 2008
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Binary;
+
+       sealed class MetadataRowWriter : BaseMetadataRowVisitor {
+
+               MetadataRoot m_root;
+               MemoryBinaryWriter m_binaryWriter;
+
+               Utilities.TableRowCounter m_counter;
+               int [] m_ciCache;
+
+               int m_blobHeapIdxSz;
+               int m_stringsHeapIdxSz;
+               int m_guidHeapIdxSz;
+
+               public MetadataRowWriter (MetadataTableWriter mtwv)
+               {
+                       m_binaryWriter = mtwv.GetWriter ();
+                       m_root = mtwv.GetMetadataRoot ();
+                       m_ciCache = new int [13];
+                       m_counter = new Utilities.TableRowCounter (GetNumberOfRows);
+               }
+
+               void WriteBlobPointer (uint pointer)
+               {
+                       WriteByIndexSize (pointer, m_blobHeapIdxSz);
+               }
+
+               void WriteStringPointer (uint pointer)
+               {
+                       WriteByIndexSize (pointer, m_stringsHeapIdxSz);
+               }
+
+               void WriteGuidPointer (uint pointer)
+               {
+                       WriteByIndexSize (pointer, m_guidHeapIdxSz);
+               }
+
+               void WriteTablePointer (uint pointer, int rid)
+               {
+                       WriteByIndexSize (pointer, GetNumberOfRows (rid) < (1 << 16) ? 2 : 4);
+               }
+
+               void WriteMetadataToken (MetadataToken token, CodedIndex ci)
+               {
+                       WriteByIndexSize (Utilities.CompressMetadataToken (ci, token),
+                               Utilities.GetCodedIndexSize (ci, m_counter, m_ciCache));
+               }
+
+               int GetNumberOfRows (int rid)
+               {
+                       IMetadataTable t = m_root.Streams.TablesHeap [rid];
+                       if (t == null || t.Rows == null)
+                               return 0;
+                       return t.Rows.Count;
+               }
+
+               void WriteByIndexSize (uint value, int size)
+               {
+                       if (size == 4)
+                               m_binaryWriter.Write (value);
+                       else if (size == 2)
+                               m_binaryWriter.Write ((ushort) value);
+                       else
+                               throw new MetadataFormatException ("Non valid size for indexing");
+               }
+
+               public AssemblyRow CreateAssemblyRow (AssemblyHashAlgorithm _hashAlgId, ushort _majorVersion, ushort _minorVersion, ushort _buildNumber, ushort _revisionNumber, AssemblyFlags _flags, uint _publicKey, uint _name, uint _culture)
+               {
+                       AssemblyRow row = new AssemblyRow ();
+                       row.HashAlgId = _hashAlgId;
+                       row.MajorVersion = _majorVersion;
+                       row.MinorVersion = _minorVersion;
+                       row.BuildNumber = _buildNumber;
+                       row.RevisionNumber = _revisionNumber;
+                       row.Flags = _flags;
+                       row.PublicKey = _publicKey;
+                       row.Name = _name;
+                       row.Culture = _culture;
+                       return row;
+               }
+
+               public AssemblyOSRow CreateAssemblyOSRow (uint _oSPlatformID, uint _oSMajorVersion, uint _oSMinorVersion)
+               {
+                       AssemblyOSRow row = new AssemblyOSRow ();
+                       row.OSPlatformID = _oSPlatformID;
+                       row.OSMajorVersion = _oSMajorVersion;
+                       row.OSMinorVersion = _oSMinorVersion;
+                       return row;
+               }
+
+               public AssemblyProcessorRow CreateAssemblyProcessorRow (uint _processor)
+               {
+                       AssemblyProcessorRow row = new AssemblyProcessorRow ();
+                       row.Processor = _processor;
+                       return row;
+               }
+
+               public AssemblyRefRow CreateAssemblyRefRow (ushort _majorVersion, ushort _minorVersion, ushort _buildNumber, ushort _revisionNumber, AssemblyFlags _flags, uint _publicKeyOrToken, uint _name, uint _culture, uint _hashValue)
+               {
+                       AssemblyRefRow row = new AssemblyRefRow ();
+                       row.MajorVersion = _majorVersion;
+                       row.MinorVersion = _minorVersion;
+                       row.BuildNumber = _buildNumber;
+                       row.RevisionNumber = _revisionNumber;
+                       row.Flags = _flags;
+                       row.PublicKeyOrToken = _publicKeyOrToken;
+                       row.Name = _name;
+                       row.Culture = _culture;
+                       row.HashValue = _hashValue;
+                       return row;
+               }
+
+               public AssemblyRefOSRow CreateAssemblyRefOSRow (uint _oSPlatformID, uint _oSMajorVersion, uint _oSMinorVersion, uint _assemblyRef)
+               {
+                       AssemblyRefOSRow row = new AssemblyRefOSRow ();
+                       row.OSPlatformID = _oSPlatformID;
+                       row.OSMajorVersion = _oSMajorVersion;
+                       row.OSMinorVersion = _oSMinorVersion;
+                       row.AssemblyRef = _assemblyRef;
+                       return row;
+               }
+
+               public AssemblyRefProcessorRow CreateAssemblyRefProcessorRow (uint _processor, uint _assemblyRef)
+               {
+                       AssemblyRefProcessorRow row = new AssemblyRefProcessorRow ();
+                       row.Processor = _processor;
+                       row.AssemblyRef = _assemblyRef;
+                       return row;
+               }
+
+               public ClassLayoutRow CreateClassLayoutRow (ushort _packingSize, uint _classSize, uint _parent)
+               {
+                       ClassLayoutRow row = new ClassLayoutRow ();
+                       row.PackingSize = _packingSize;
+                       row.ClassSize = _classSize;
+                       row.Parent = _parent;
+                       return row;
+               }
+
+               public ConstantRow CreateConstantRow (ElementType _type, MetadataToken _parent, uint _value)
+               {
+                       ConstantRow row = new ConstantRow ();
+                       row.Type = _type;
+                       row.Parent = _parent;
+                       row.Value = _value;
+                       return row;
+               }
+
+               public CustomAttributeRow CreateCustomAttributeRow (MetadataToken _parent, MetadataToken _type, uint _value)
+               {
+                       CustomAttributeRow row = new CustomAttributeRow ();
+                       row.Parent = _parent;
+                       row.Type = _type;
+                       row.Value = _value;
+                       return row;
+               }
+
+               public DeclSecurityRow CreateDeclSecurityRow (SecurityAction _action, MetadataToken _parent, uint _permissionSet)
+               {
+                       DeclSecurityRow row = new DeclSecurityRow ();
+                       row.Action = _action;
+                       row.Parent = _parent;
+                       row.PermissionSet = _permissionSet;
+                       return row;
+               }
+
+               public EventRow CreateEventRow (EventAttributes _eventFlags, uint _name, MetadataToken _eventType)
+               {
+                       EventRow row = new EventRow ();
+                       row.EventFlags = _eventFlags;
+                       row.Name = _name;
+                       row.EventType = _eventType;
+                       return row;
+               }
+
+               public EventMapRow CreateEventMapRow (uint _parent, uint _eventList)
+               {
+                       EventMapRow row = new EventMapRow ();
+                       row.Parent = _parent;
+                       row.EventList = _eventList;
+                       return row;
+               }
+
+               public EventPtrRow CreateEventPtrRow (uint _event)
+               {
+                       EventPtrRow row = new EventPtrRow ();
+                       row.Event = _event;
+                       return row;
+               }
+
+               public ExportedTypeRow CreateExportedTypeRow (TypeAttributes _flags, uint _typeDefId, uint _typeName, uint _typeNamespace, MetadataToken _implementation)
+               {
+                       ExportedTypeRow row = new ExportedTypeRow ();
+                       row.Flags = _flags;
+                       row.TypeDefId = _typeDefId;
+                       row.TypeName = _typeName;
+                       row.TypeNamespace = _typeNamespace;
+                       row.Implementation = _implementation;
+                       return row;
+               }
+
+               public FieldRow CreateFieldRow (FieldAttributes _flags, uint _name, uint _signature)
+               {
+                       FieldRow row = new FieldRow ();
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.Signature = _signature;
+                       return row;
+               }
+
+               public FieldLayoutRow CreateFieldLayoutRow (uint _offset, uint _field)
+               {
+                       FieldLayoutRow row = new FieldLayoutRow ();
+                       row.Offset = _offset;
+                       row.Field = _field;
+                       return row;
+               }
+
+               public FieldMarshalRow CreateFieldMarshalRow (MetadataToken _parent, uint _nativeType)
+               {
+                       FieldMarshalRow row = new FieldMarshalRow ();
+                       row.Parent = _parent;
+                       row.NativeType = _nativeType;
+                       return row;
+               }
+
+               public FieldPtrRow CreateFieldPtrRow (uint _field)
+               {
+                       FieldPtrRow row = new FieldPtrRow ();
+                       row.Field = _field;
+                       return row;
+               }
+
+               public FieldRVARow CreateFieldRVARow (RVA _rVA, uint _field)
+               {
+                       FieldRVARow row = new FieldRVARow ();
+                       row.RVA = _rVA;
+                       row.Field = _field;
+                       return row;
+               }
+
+               public FileRow CreateFileRow (FileAttributes _flags, uint _name, uint _hashValue)
+               {
+                       FileRow row = new FileRow ();
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.HashValue = _hashValue;
+                       return row;
+               }
+
+               public GenericParamRow CreateGenericParamRow (ushort _number, GenericParameterAttributes _flags, MetadataToken _owner, uint _name)
+               {
+                       GenericParamRow row = new GenericParamRow ();
+                       row.Number = _number;
+                       row.Flags = _flags;
+                       row.Owner = _owner;
+                       row.Name = _name;
+                       return row;
+               }
+
+               public GenericParamConstraintRow CreateGenericParamConstraintRow (uint _owner, MetadataToken _constraint)
+               {
+                       GenericParamConstraintRow row = new GenericParamConstraintRow ();
+                       row.Owner = _owner;
+                       row.Constraint = _constraint;
+                       return row;
+               }
+
+               public ImplMapRow CreateImplMapRow (PInvokeAttributes _mappingFlags, MetadataToken _memberForwarded, uint _importName, uint _importScope)
+               {
+                       ImplMapRow row = new ImplMapRow ();
+                       row.MappingFlags = _mappingFlags;
+                       row.MemberForwarded = _memberForwarded;
+                       row.ImportName = _importName;
+                       row.ImportScope = _importScope;
+                       return row;
+               }
+
+               public InterfaceImplRow CreateInterfaceImplRow (uint _class, MetadataToken _interface)
+               {
+                       InterfaceImplRow row = new InterfaceImplRow ();
+                       row.Class = _class;
+                       row.Interface = _interface;
+                       return row;
+               }
+
+               public ManifestResourceRow CreateManifestResourceRow (uint _offset, ManifestResourceAttributes _flags, uint _name, MetadataToken _implementation)
+               {
+                       ManifestResourceRow row = new ManifestResourceRow ();
+                       row.Offset = _offset;
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.Implementation = _implementation;
+                       return row;
+               }
+
+               public MemberRefRow CreateMemberRefRow (MetadataToken _class, uint _name, uint _signature)
+               {
+                       MemberRefRow row = new MemberRefRow ();
+                       row.Class = _class;
+                       row.Name = _name;
+                       row.Signature = _signature;
+                       return row;
+               }
+
+               public MethodRow CreateMethodRow (RVA _rVA, MethodImplAttributes _implFlags, MethodAttributes _flags, uint _name, uint _signature, uint _paramList)
+               {
+                       MethodRow row = new MethodRow ();
+                       row.RVA = _rVA;
+                       row.ImplFlags = _implFlags;
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.Signature = _signature;
+                       row.ParamList = _paramList;
+                       return row;
+               }
+
+               public MethodImplRow CreateMethodImplRow (uint _class, MetadataToken _methodBody, MetadataToken _methodDeclaration)
+               {
+                       MethodImplRow row = new MethodImplRow ();
+                       row.Class = _class;
+                       row.MethodBody = _methodBody;
+                       row.MethodDeclaration = _methodDeclaration;
+                       return row;
+               }
+
+               public MethodPtrRow CreateMethodPtrRow (uint _method)
+               {
+                       MethodPtrRow row = new MethodPtrRow ();
+                       row.Method = _method;
+                       return row;
+               }
+
+               public MethodSemanticsRow CreateMethodSemanticsRow (MethodSemanticsAttributes _semantics, uint _method, MetadataToken _association)
+               {
+                       MethodSemanticsRow row = new MethodSemanticsRow ();
+                       row.Semantics = _semantics;
+                       row.Method = _method;
+                       row.Association = _association;
+                       return row;
+               }
+
+               public MethodSpecRow CreateMethodSpecRow (MetadataToken _method, uint _instantiation)
+               {
+                       MethodSpecRow row = new MethodSpecRow ();
+                       row.Method = _method;
+                       row.Instantiation = _instantiation;
+                       return row;
+               }
+
+               public ModuleRow CreateModuleRow (ushort _generation, uint _name, uint _mvid, uint _encId, uint _encBaseId)
+               {
+                       ModuleRow row = new ModuleRow ();
+                       row.Generation = _generation;
+                       row.Name = _name;
+                       row.Mvid = _mvid;
+                       row.EncId = _encId;
+                       row.EncBaseId = _encBaseId;
+                       return row;
+               }
+
+               public ModuleRefRow CreateModuleRefRow (uint _name)
+               {
+                       ModuleRefRow row = new ModuleRefRow ();
+                       row.Name = _name;
+                       return row;
+               }
+
+               public NestedClassRow CreateNestedClassRow (uint _nestedClass, uint _enclosingClass)
+               {
+                       NestedClassRow row = new NestedClassRow ();
+                       row.NestedClass = _nestedClass;
+                       row.EnclosingClass = _enclosingClass;
+                       return row;
+               }
+
+               public ParamRow CreateParamRow (ParameterAttributes _flags, ushort _sequence, uint _name)
+               {
+                       ParamRow row = new ParamRow ();
+                       row.Flags = _flags;
+                       row.Sequence = _sequence;
+                       row.Name = _name;
+                       return row;
+               }
+
+               public ParamPtrRow CreateParamPtrRow (uint _param)
+               {
+                       ParamPtrRow row = new ParamPtrRow ();
+                       row.Param = _param;
+                       return row;
+               }
+
+               public PropertyRow CreatePropertyRow (PropertyAttributes _flags, uint _name, uint _type)
+               {
+                       PropertyRow row = new PropertyRow ();
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.Type = _type;
+                       return row;
+               }
+
+               public PropertyMapRow CreatePropertyMapRow (uint _parent, uint _propertyList)
+               {
+                       PropertyMapRow row = new PropertyMapRow ();
+                       row.Parent = _parent;
+                       row.PropertyList = _propertyList;
+                       return row;
+               }
+
+               public PropertyPtrRow CreatePropertyPtrRow (uint _property)
+               {
+                       PropertyPtrRow row = new PropertyPtrRow ();
+                       row.Property = _property;
+                       return row;
+               }
+
+               public StandAloneSigRow CreateStandAloneSigRow (uint _signature)
+               {
+                       StandAloneSigRow row = new StandAloneSigRow ();
+                       row.Signature = _signature;
+                       return row;
+               }
+
+               public TypeDefRow CreateTypeDefRow (TypeAttributes _flags, uint _name, uint _namespace, MetadataToken _extends, uint _fieldList, uint _methodList)
+               {
+                       TypeDefRow row = new TypeDefRow ();
+                       row.Flags = _flags;
+                       row.Name = _name;
+                       row.Namespace = _namespace;
+                       row.Extends = _extends;
+                       row.FieldList = _fieldList;
+                       row.MethodList = _methodList;
+                       return row;
+               }
+
+               public TypeRefRow CreateTypeRefRow (MetadataToken _resolutionScope, uint _name, uint _namespace)
+               {
+                       TypeRefRow row = new TypeRefRow ();
+                       row.ResolutionScope = _resolutionScope;
+                       row.Name = _name;
+                       row.Namespace = _namespace;
+                       return row;
+               }
+
+               public TypeSpecRow CreateTypeSpecRow (uint _signature)
+               {
+                       TypeSpecRow row = new TypeSpecRow ();
+                       row.Signature = _signature;
+                       return row;
+               }
+
+               public override void VisitRowCollection (RowCollection coll)
+               {
+                       m_blobHeapIdxSz = m_root.Streams.BlobHeap != null ?
+                               m_root.Streams.BlobHeap.IndexSize : 2;
+                       m_stringsHeapIdxSz = m_root.Streams.StringsHeap != null ?
+                               m_root.Streams.StringsHeap.IndexSize : 2;
+                       m_guidHeapIdxSz = m_root.Streams.GuidHeap != null ?
+                               m_root.Streams.GuidHeap.IndexSize : 2;
+               }
+
+               public override void VisitAssemblyRow (AssemblyRow row)
+               {
+                       m_binaryWriter.Write ((uint) row.HashAlgId);
+                       m_binaryWriter.Write (row.MajorVersion);
+                       m_binaryWriter.Write (row.MinorVersion);
+                       m_binaryWriter.Write (row.BuildNumber);
+                       m_binaryWriter.Write (row.RevisionNumber);
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       WriteBlobPointer (row.PublicKey);
+                       WriteStringPointer (row.Name);
+                       WriteStringPointer (row.Culture);
+               }
+
+               public override void VisitAssemblyOSRow (AssemblyOSRow row)
+               {
+                       m_binaryWriter.Write (row.OSPlatformID);
+                       m_binaryWriter.Write (row.OSMajorVersion);
+                       m_binaryWriter.Write (row.OSMinorVersion);
+               }
+
+               public override void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
+               {
+                       m_binaryWriter.Write (row.Processor);
+               }
+
+               public override void VisitAssemblyRefRow (AssemblyRefRow row)
+               {
+                       m_binaryWriter.Write (row.MajorVersion);
+                       m_binaryWriter.Write (row.MinorVersion);
+                       m_binaryWriter.Write (row.BuildNumber);
+                       m_binaryWriter.Write (row.RevisionNumber);
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       WriteBlobPointer (row.PublicKeyOrToken);
+                       WriteStringPointer (row.Name);
+                       WriteStringPointer (row.Culture);
+                       WriteBlobPointer (row.HashValue);
+               }
+
+               public override void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
+               {
+                       m_binaryWriter.Write (row.OSPlatformID);
+                       m_binaryWriter.Write (row.OSMajorVersion);
+                       m_binaryWriter.Write (row.OSMinorVersion);
+                       WriteTablePointer (row.AssemblyRef, AssemblyRefTable.RId);
+               }
+
+               public override void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
+               {
+                       m_binaryWriter.Write (row.Processor);
+                       WriteTablePointer (row.AssemblyRef, AssemblyRefTable.RId);
+               }
+
+               public override void VisitClassLayoutRow (ClassLayoutRow row)
+               {
+                       m_binaryWriter.Write (row.PackingSize);
+                       m_binaryWriter.Write (row.ClassSize);
+                       WriteTablePointer (row.Parent, TypeDefTable.RId);
+               }
+
+               public override void VisitConstantRow (ConstantRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.Type);
+                       WriteMetadataToken (row.Parent, CodedIndex.HasConstant);
+                       WriteBlobPointer (row.Value);
+               }
+
+               public override void VisitCustomAttributeRow (CustomAttributeRow row)
+               {
+                       WriteMetadataToken (row.Parent, CodedIndex.HasCustomAttribute);
+                       WriteMetadataToken (row.Type, CodedIndex.CustomAttributeType);
+                       WriteBlobPointer (row.Value);
+               }
+
+               public override void VisitDeclSecurityRow (DeclSecurityRow row)
+               {
+                       m_binaryWriter.Write ((short) row.Action);
+                       WriteMetadataToken (row.Parent, CodedIndex.HasDeclSecurity);
+                       WriteBlobPointer (row.PermissionSet);
+               }
+
+               public override void VisitEventRow (EventRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.EventFlags);
+                       WriteStringPointer (row.Name);
+                       WriteMetadataToken (row.EventType, CodedIndex.TypeDefOrRef);
+               }
+
+               public override void VisitEventMapRow (EventMapRow row)
+               {
+                       WriteTablePointer (row.Parent, TypeDefTable.RId);
+                       WriteTablePointer (row.EventList, EventTable.RId);
+               }
+
+               public override void VisitEventPtrRow (EventPtrRow row)
+               {
+                       WriteTablePointer (row.Event, EventTable.RId);
+               }
+
+               public override void VisitExportedTypeRow (ExportedTypeRow row)
+               {
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       m_binaryWriter.Write (row.TypeDefId);
+                       WriteStringPointer (row.TypeName);
+                       WriteStringPointer (row.TypeNamespace);
+                       WriteMetadataToken (row.Implementation, CodedIndex.Implementation);
+               }
+
+               public override void VisitFieldRow (FieldRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteBlobPointer (row.Signature);
+               }
+
+               public override void VisitFieldLayoutRow (FieldLayoutRow row)
+               {
+                       m_binaryWriter.Write (row.Offset);
+                       WriteTablePointer (row.Field, FieldTable.RId);
+               }
+
+               public override void VisitFieldMarshalRow (FieldMarshalRow row)
+               {
+                       WriteMetadataToken (row.Parent, CodedIndex.HasFieldMarshal);
+                       WriteBlobPointer (row.NativeType);
+               }
+
+               public override void VisitFieldPtrRow (FieldPtrRow row)
+               {
+                       WriteTablePointer (row.Field, FieldTable.RId);
+               }
+
+               public override void VisitFieldRVARow (FieldRVARow row)
+               {
+                       m_binaryWriter.Write (row.RVA.Value);
+                       WriteTablePointer (row.Field, FieldTable.RId);
+               }
+
+               public override void VisitFileRow (FileRow row)
+               {
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteBlobPointer (row.HashValue);
+               }
+
+               public override void VisitGenericParamRow (GenericParamRow row)
+               {
+                       m_binaryWriter.Write (row.Number);
+                       m_binaryWriter.Write ((ushort) row.Flags);
+                       WriteMetadataToken (row.Owner, CodedIndex.TypeOrMethodDef);
+                       WriteStringPointer (row.Name);
+               }
+
+               public override void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
+               {
+                       WriteTablePointer (row.Owner, GenericParamTable.RId);
+                       WriteMetadataToken (row.Constraint, CodedIndex.TypeDefOrRef);
+               }
+
+               public override void VisitImplMapRow (ImplMapRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.MappingFlags);
+                       WriteMetadataToken (row.MemberForwarded, CodedIndex.MemberForwarded);
+                       WriteStringPointer (row.ImportName);
+                       WriteTablePointer (row.ImportScope, ModuleRefTable.RId);
+               }
+
+               public override void VisitInterfaceImplRow (InterfaceImplRow row)
+               {
+                       WriteTablePointer (row.Class, TypeDefTable.RId);
+                       WriteMetadataToken (row.Interface, CodedIndex.TypeDefOrRef);
+               }
+
+               public override void VisitManifestResourceRow (ManifestResourceRow row)
+               {
+                       m_binaryWriter.Write (row.Offset);
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteMetadataToken (row.Implementation, CodedIndex.Implementation);
+               }
+
+               public override void VisitMemberRefRow (MemberRefRow row)
+               {
+                       WriteMetadataToken (row.Class, CodedIndex.MemberRefParent);
+                       WriteStringPointer (row.Name);
+                       WriteBlobPointer (row.Signature);
+               }
+
+               public override void VisitMethodRow (MethodRow row)
+               {
+                       m_binaryWriter.Write (row.RVA.Value);
+                       m_binaryWriter.Write ((ushort) row.ImplFlags);
+                       m_binaryWriter.Write ((ushort) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteBlobPointer (row.Signature);
+                       WriteTablePointer (row.ParamList, ParamTable.RId);
+               }
+
+               public override void VisitMethodImplRow (MethodImplRow row)
+               {
+                       WriteTablePointer (row.Class, TypeDefTable.RId);
+                       WriteMetadataToken (row.MethodBody, CodedIndex.MethodDefOrRef);
+                       WriteMetadataToken (row.MethodDeclaration, CodedIndex.MethodDefOrRef);
+               }
+
+               public override void VisitMethodPtrRow (MethodPtrRow row)
+               {
+                       WriteTablePointer (row.Method, MethodTable.RId);
+               }
+
+               public override void VisitMethodSemanticsRow (MethodSemanticsRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.Semantics);
+                       WriteTablePointer (row.Method, MethodTable.RId);
+                       WriteMetadataToken (row.Association, CodedIndex.HasSemantics);
+               }
+
+               public override void VisitMethodSpecRow (MethodSpecRow row)
+               {
+                       WriteMetadataToken (row.Method, CodedIndex.MethodDefOrRef);
+                       WriteBlobPointer (row.Instantiation);
+               }
+
+               public override void VisitModuleRow (ModuleRow row)
+               {
+                       m_binaryWriter.Write (row.Generation);
+                       WriteStringPointer (row.Name);
+                       WriteGuidPointer (row.Mvid);
+                       WriteGuidPointer (row.EncId);
+                       WriteGuidPointer (row.EncBaseId);
+               }
+
+               public override void VisitModuleRefRow (ModuleRefRow row)
+               {
+                       WriteStringPointer (row.Name);
+               }
+
+               public override void VisitNestedClassRow (NestedClassRow row)
+               {
+                       WriteTablePointer (row.NestedClass, TypeDefTable.RId);
+                       WriteTablePointer (row.EnclosingClass, TypeDefTable.RId);
+               }
+
+               public override void VisitParamRow (ParamRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.Flags);
+                       m_binaryWriter.Write (row.Sequence);
+                       WriteStringPointer (row.Name);
+               }
+
+               public override void VisitParamPtrRow (ParamPtrRow row)
+               {
+                       WriteTablePointer (row.Param, ParamTable.RId);
+               }
+
+               public override void VisitPropertyRow (PropertyRow row)
+               {
+                       m_binaryWriter.Write ((ushort) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteBlobPointer (row.Type);
+               }
+
+               public override void VisitPropertyMapRow (PropertyMapRow row)
+               {
+                       WriteTablePointer (row.Parent, TypeDefTable.RId);
+                       WriteTablePointer (row.PropertyList, PropertyTable.RId);
+               }
+
+               public override void VisitPropertyPtrRow (PropertyPtrRow row)
+               {
+                       WriteTablePointer (row.Property, PropertyTable.RId);
+               }
+
+               public override void VisitStandAloneSigRow (StandAloneSigRow row)
+               {
+                       WriteBlobPointer (row.Signature);
+               }
+
+               public override void VisitTypeDefRow (TypeDefRow row)
+               {
+                       m_binaryWriter.Write ((uint) row.Flags);
+                       WriteStringPointer (row.Name);
+                       WriteStringPointer (row.Namespace);
+                       WriteMetadataToken (row.Extends, CodedIndex.TypeDefOrRef);
+                       WriteTablePointer (row.FieldList, FieldTable.RId);
+                       WriteTablePointer (row.MethodList, MethodTable.RId);
+               }
+
+               public override void VisitTypeRefRow (TypeRefRow row)
+               {
+                       WriteMetadataToken (row.ResolutionScope, CodedIndex.ResolutionScope);
+                       WriteStringPointer (row.Name);
+                       WriteStringPointer (row.Namespace);
+               }
+
+               public override void VisitTypeSpecRow (TypeSpecRow row)
+               {
+                       WriteBlobPointer (row.Signature);
+               }
+
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs
new file mode 100644 (file)
index 0000000..402cc65
--- /dev/null
@@ -0,0 +1,90 @@
+//
+// MetadataStream.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal class MetadataStream : IMetadataVisitable {
+
+               public const string Strings = "#Strings";
+               public const string Tables = "#~";
+               public const string IncrementalTables = "#-";
+               public const string Blob = "#Blob";
+               public const string GUID = "#GUID";
+               public const string UserStrings = "#US";
+
+               MetadataStreamHeader m_header;
+               MetadataHeap m_heap;
+
+               public MetadataStreamHeader Header {
+                       get { return m_header; }
+                       set { m_header = value; }
+               }
+
+               public MetadataHeap Heap {
+                       get { return m_heap; }
+                       set { m_heap = value; }
+               }
+
+               internal MetadataStream ()
+               {
+                       m_header = new MetadataStreamHeader (this);
+               }
+
+               public void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitMetadataStream (this);
+
+                       m_header.Accept (visitor);
+                       if (m_heap != null)
+                               m_heap.Accept (visitor);
+               }
+
+               internal class MetadataStreamHeader : IMetadataVisitable {
+
+                       public uint Offset;
+                       public uint Size;
+                       public string Name;
+
+                       private MetadataStream m_stream;
+
+                       public MetadataStream Stream {
+                               get { return m_stream; }
+                       }
+
+                       internal MetadataStreamHeader (MetadataStream stream)
+                       {
+                               m_stream = stream;
+                       }
+
+                       public void Accept (IMetadataVisitor visitor)
+                       {
+                               visitor.VisitMetadataStreamHeader (this);
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs
new file mode 100644 (file)
index 0000000..43509cd
--- /dev/null
@@ -0,0 +1,145 @@
+//
+// MetadataStreamCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       internal class MetadataStreamCollection : ICollection, IMetadataVisitable {
+
+               IList m_items;
+
+               BlobHeap m_blobHeap;
+               GuidHeap m_guidHeap;
+               StringsHeap m_stringsHeap;
+               UserStringsHeap m_usHeap;
+               TablesHeap m_tablesHeap;
+
+               public MetadataStream this [int index] {
+                       get { return m_items [index] as MetadataStream; }
+                       set { m_items [index] = value; }
+               }
+
+               public int Count {
+                       get { return m_items.Count; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               public BlobHeap BlobHeap {
+                       get {
+                               if (m_blobHeap == null)
+                                       m_blobHeap = GetHeap (MetadataStream.Blob) as BlobHeap;
+                               return m_blobHeap;
+                       }
+               }
+
+               public GuidHeap GuidHeap {
+                       get {
+                               if (m_guidHeap == null)
+                                       m_guidHeap = GetHeap (MetadataStream.GUID) as GuidHeap;
+                               return m_guidHeap;
+                       }
+               }
+
+               public StringsHeap StringsHeap {
+                       get {
+                               if (m_stringsHeap == null)
+                                       m_stringsHeap = GetHeap (MetadataStream.Strings) as StringsHeap;
+                               return m_stringsHeap;
+                       }
+               }
+
+               public TablesHeap TablesHeap {
+                       get {
+                               if (m_tablesHeap == null)
+                                       m_tablesHeap = GetHeap (MetadataStream.Tables) as TablesHeap;
+                               return m_tablesHeap;
+                       }
+               }
+
+               public UserStringsHeap UserStringsHeap {
+                       get {
+                               if (m_usHeap == null)
+                                       m_usHeap = GetHeap (MetadataStream.UserStrings) as UserStringsHeap;
+                               return m_usHeap;
+                       }
+               }
+
+               public MetadataStreamCollection ()
+               {
+                       m_items = new ArrayList (5);
+               }
+
+               private MetadataHeap GetHeap (string name)
+               {
+                       for (int i = 0; i < m_items.Count; i++) {
+                               MetadataStream stream = m_items [i] as MetadataStream;
+                               if (stream.Heap.Name == name)
+                                       return stream.Heap;
+                       }
+
+                       return null;
+               }
+
+               internal void Add (MetadataStream value)
+               {
+                       m_items.Add (value);
+               }
+
+               internal void Remove (MetadataStream value)
+               {
+                       m_items.Remove (value);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       m_items.CopyTo (ary, index);
+               }
+
+               public IEnumerator GetEnumerator ()
+               {
+                       return m_items.GetEnumerator ();
+               }
+
+               public void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitMetadataStreamCollection (this);
+
+                       for (int i = 0; i < m_items.Count; i++)
+                               this [i].Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableReader.cs
new file mode 100644 (file)
index 0000000..94a980e
--- /dev/null
@@ -0,0 +1,769 @@
+//
+// MetadataTableReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Jul 17 00:22:32 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+
+       sealed class MetadataTableReader : BaseMetadataTableVisitor {
+
+               MetadataRoot m_metadataRoot;
+               TablesHeap m_heap;
+               MetadataRowReader m_mrrv;
+               BinaryReader m_binaryReader;
+
+               int [] m_rows = new int [TablesHeap.MaxTableCount];
+
+               public MetadataTableReader (MetadataReader mrv)
+               {
+                       m_metadataRoot = mrv.GetMetadataRoot ();
+                       m_heap = m_metadataRoot.Streams.TablesHeap;
+                       m_binaryReader = new BinaryReader (new MemoryStream (m_heap.Data));
+                       m_binaryReader.BaseStream.Position = 24;
+                       m_mrrv = new MetadataRowReader (this);
+               }
+
+               public MetadataRoot GetMetadataRoot ()
+               {
+                       return m_metadataRoot;
+               }
+
+               public BinaryReader GetReader ()
+               {
+                       return m_binaryReader;
+               }
+
+               public override IMetadataRowVisitor GetRowVisitor ()
+               {
+                       return m_mrrv;
+               }
+
+               public int GetNumberOfRows (int rid)
+               {
+                       return m_rows [rid];
+               }
+
+               public AssemblyTable GetAssemblyTable ()
+               {
+                       return (AssemblyTable) m_heap [AssemblyTable.RId];
+               }
+
+               public AssemblyOSTable GetAssemblyOSTable ()
+               {
+                       return (AssemblyOSTable) m_heap [AssemblyOSTable.RId];
+               }
+
+               public AssemblyProcessorTable GetAssemblyProcessorTable ()
+               {
+                       return (AssemblyProcessorTable) m_heap [AssemblyProcessorTable.RId];
+               }
+
+               public AssemblyRefTable GetAssemblyRefTable ()
+               {
+                       return (AssemblyRefTable) m_heap [AssemblyRefTable.RId];
+               }
+
+               public AssemblyRefOSTable GetAssemblyRefOSTable ()
+               {
+                       return (AssemblyRefOSTable) m_heap [AssemblyRefOSTable.RId];
+               }
+
+               public AssemblyRefProcessorTable GetAssemblyRefProcessorTable ()
+               {
+                       return (AssemblyRefProcessorTable) m_heap [AssemblyRefProcessorTable.RId];
+               }
+
+               public ClassLayoutTable GetClassLayoutTable ()
+               {
+                       return (ClassLayoutTable) m_heap [ClassLayoutTable.RId];
+               }
+
+               public ConstantTable GetConstantTable ()
+               {
+                       return (ConstantTable) m_heap [ConstantTable.RId];
+               }
+
+               public CustomAttributeTable GetCustomAttributeTable ()
+               {
+                       return (CustomAttributeTable) m_heap [CustomAttributeTable.RId];
+               }
+
+               public DeclSecurityTable GetDeclSecurityTable ()
+               {
+                       return (DeclSecurityTable) m_heap [DeclSecurityTable.RId];
+               }
+
+               public EventTable GetEventTable ()
+               {
+                       return (EventTable) m_heap [EventTable.RId];
+               }
+
+               public EventMapTable GetEventMapTable ()
+               {
+                       return (EventMapTable) m_heap [EventMapTable.RId];
+               }
+
+               public EventPtrTable GetEventPtrTable ()
+               {
+                       return (EventPtrTable) m_heap [EventPtrTable.RId];
+               }
+
+               public ExportedTypeTable GetExportedTypeTable ()
+               {
+                       return (ExportedTypeTable) m_heap [ExportedTypeTable.RId];
+               }
+
+               public FieldTable GetFieldTable ()
+               {
+                       return (FieldTable) m_heap [FieldTable.RId];
+               }
+
+               public FieldLayoutTable GetFieldLayoutTable ()
+               {
+                       return (FieldLayoutTable) m_heap [FieldLayoutTable.RId];
+               }
+
+               public FieldMarshalTable GetFieldMarshalTable ()
+               {
+                       return (FieldMarshalTable) m_heap [FieldMarshalTable.RId];
+               }
+
+               public FieldPtrTable GetFieldPtrTable ()
+               {
+                       return (FieldPtrTable) m_heap [FieldPtrTable.RId];
+               }
+
+               public FieldRVATable GetFieldRVATable ()
+               {
+                       return (FieldRVATable) m_heap [FieldRVATable.RId];
+               }
+
+               public FileTable GetFileTable ()
+               {
+                       return (FileTable) m_heap [FileTable.RId];
+               }
+
+               public GenericParamTable GetGenericParamTable ()
+               {
+                       return (GenericParamTable) m_heap [GenericParamTable.RId];
+               }
+
+               public GenericParamConstraintTable GetGenericParamConstraintTable ()
+               {
+                       return (GenericParamConstraintTable) m_heap [GenericParamConstraintTable.RId];
+               }
+
+               public ImplMapTable GetImplMapTable ()
+               {
+                       return (ImplMapTable) m_heap [ImplMapTable.RId];
+               }
+
+               public InterfaceImplTable GetInterfaceImplTable ()
+               {
+                       return (InterfaceImplTable) m_heap [InterfaceImplTable.RId];
+               }
+
+               public ManifestResourceTable GetManifestResourceTable ()
+               {
+                       return (ManifestResourceTable) m_heap [ManifestResourceTable.RId];
+               }
+
+               public MemberRefTable GetMemberRefTable ()
+               {
+                       return (MemberRefTable) m_heap [MemberRefTable.RId];
+               }
+
+               public MethodTable GetMethodTable ()
+               {
+                       return (MethodTable) m_heap [MethodTable.RId];
+               }
+
+               public MethodImplTable GetMethodImplTable ()
+               {
+                       return (MethodImplTable) m_heap [MethodImplTable.RId];
+               }
+
+               public MethodPtrTable GetMethodPtrTable ()
+               {
+                       return (MethodPtrTable) m_heap [MethodPtrTable.RId];
+               }
+
+               public MethodSemanticsTable GetMethodSemanticsTable ()
+               {
+                       return (MethodSemanticsTable) m_heap [MethodSemanticsTable.RId];
+               }
+
+               public MethodSpecTable GetMethodSpecTable ()
+               {
+                       return (MethodSpecTable) m_heap [MethodSpecTable.RId];
+               }
+
+               public ModuleTable GetModuleTable ()
+               {
+                       return (ModuleTable) m_heap [ModuleTable.RId];
+               }
+
+               public ModuleRefTable GetModuleRefTable ()
+               {
+                       return (ModuleRefTable) m_heap [ModuleRefTable.RId];
+               }
+
+               public NestedClassTable GetNestedClassTable ()
+               {
+                       return (NestedClassTable) m_heap [NestedClassTable.RId];
+               }
+
+               public ParamTable GetParamTable ()
+               {
+                       return (ParamTable) m_heap [ParamTable.RId];
+               }
+
+               public ParamPtrTable GetParamPtrTable ()
+               {
+                       return (ParamPtrTable) m_heap [ParamPtrTable.RId];
+               }
+
+               public PropertyTable GetPropertyTable ()
+               {
+                       return (PropertyTable) m_heap [PropertyTable.RId];
+               }
+
+               public PropertyMapTable GetPropertyMapTable ()
+               {
+                       return (PropertyMapTable) m_heap [PropertyMapTable.RId];
+               }
+
+               public PropertyPtrTable GetPropertyPtrTable ()
+               {
+                       return (PropertyPtrTable) m_heap [PropertyPtrTable.RId];
+               }
+
+               public StandAloneSigTable GetStandAloneSigTable ()
+               {
+                       return (StandAloneSigTable) m_heap [StandAloneSigTable.RId];
+               }
+
+               public TypeDefTable GetTypeDefTable ()
+               {
+                       return (TypeDefTable) m_heap [TypeDefTable.RId];
+               }
+
+               public TypeRefTable GetTypeRefTable ()
+               {
+                       return (TypeRefTable) m_heap [TypeRefTable.RId];
+               }
+
+               public TypeSpecTable GetTypeSpecTable ()
+               {
+                       return (TypeSpecTable) m_heap [TypeSpecTable.RId];
+               }
+
+               public override void VisitTableCollection (TableCollection coll)
+               {
+                       if (m_heap.HasTable (ModuleTable.RId)) {
+                               coll.Add (new ModuleTable ());
+                               m_rows [ModuleTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (TypeRefTable.RId)) {
+                               coll.Add (new TypeRefTable ());
+                               m_rows [TypeRefTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (TypeDefTable.RId)) {
+                               coll.Add (new TypeDefTable ());
+                               m_rows [TypeDefTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FieldPtrTable.RId)) {
+                               coll.Add (new FieldPtrTable ());
+                               m_rows [FieldPtrTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FieldTable.RId)) {
+                               coll.Add (new FieldTable ());
+                               m_rows [FieldTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MethodPtrTable.RId)) {
+                               coll.Add (new MethodPtrTable ());
+                               m_rows [MethodPtrTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MethodTable.RId)) {
+                               coll.Add (new MethodTable ());
+                               m_rows [MethodTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ParamPtrTable.RId)) {
+                               coll.Add (new ParamPtrTable ());
+                               m_rows [ParamPtrTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ParamTable.RId)) {
+                               coll.Add (new ParamTable ());
+                               m_rows [ParamTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (InterfaceImplTable.RId)) {
+                               coll.Add (new InterfaceImplTable ());
+                               m_rows [InterfaceImplTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MemberRefTable.RId)) {
+                               coll.Add (new MemberRefTable ());
+                               m_rows [MemberRefTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ConstantTable.RId)) {
+                               coll.Add (new ConstantTable ());
+                               m_rows [ConstantTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (CustomAttributeTable.RId)) {
+                               coll.Add (new CustomAttributeTable ());
+                               m_rows [CustomAttributeTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FieldMarshalTable.RId)) {
+                               coll.Add (new FieldMarshalTable ());
+                               m_rows [FieldMarshalTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (DeclSecurityTable.RId)) {
+                               coll.Add (new DeclSecurityTable ());
+                               m_rows [DeclSecurityTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ClassLayoutTable.RId)) {
+                               coll.Add (new ClassLayoutTable ());
+                               m_rows [ClassLayoutTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FieldLayoutTable.RId)) {
+                               coll.Add (new FieldLayoutTable ());
+                               m_rows [FieldLayoutTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (StandAloneSigTable.RId)) {
+                               coll.Add (new StandAloneSigTable ());
+                               m_rows [StandAloneSigTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (EventMapTable.RId)) {
+                               coll.Add (new EventMapTable ());
+                               m_rows [EventMapTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (EventPtrTable.RId)) {
+                               coll.Add (new EventPtrTable ());
+                               m_rows [EventPtrTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (EventTable.RId)) {
+                               coll.Add (new EventTable ());
+                               m_rows [EventTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (PropertyMapTable.RId)) {
+                               coll.Add (new PropertyMapTable ());
+                               m_rows [PropertyMapTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (PropertyPtrTable.RId)) {
+                               coll.Add (new PropertyPtrTable ());
+                               m_rows [PropertyPtrTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (PropertyTable.RId)) {
+                               coll.Add (new PropertyTable ());
+                               m_rows [PropertyTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MethodSemanticsTable.RId)) {
+                               coll.Add (new MethodSemanticsTable ());
+                               m_rows [MethodSemanticsTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MethodImplTable.RId)) {
+                               coll.Add (new MethodImplTable ());
+                               m_rows [MethodImplTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ModuleRefTable.RId)) {
+                               coll.Add (new ModuleRefTable ());
+                               m_rows [ModuleRefTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (TypeSpecTable.RId)) {
+                               coll.Add (new TypeSpecTable ());
+                               m_rows [TypeSpecTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ImplMapTable.RId)) {
+                               coll.Add (new ImplMapTable ());
+                               m_rows [ImplMapTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FieldRVATable.RId)) {
+                               coll.Add (new FieldRVATable ());
+                               m_rows [FieldRVATable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyTable.RId)) {
+                               coll.Add (new AssemblyTable ());
+                               m_rows [AssemblyTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyProcessorTable.RId)) {
+                               coll.Add (new AssemblyProcessorTable ());
+                               m_rows [AssemblyProcessorTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyOSTable.RId)) {
+                               coll.Add (new AssemblyOSTable ());
+                               m_rows [AssemblyOSTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyRefTable.RId)) {
+                               coll.Add (new AssemblyRefTable ());
+                               m_rows [AssemblyRefTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyRefProcessorTable.RId)) {
+                               coll.Add (new AssemblyRefProcessorTable ());
+                               m_rows [AssemblyRefProcessorTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (AssemblyRefOSTable.RId)) {
+                               coll.Add (new AssemblyRefOSTable ());
+                               m_rows [AssemblyRefOSTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (FileTable.RId)) {
+                               coll.Add (new FileTable ());
+                               m_rows [FileTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ExportedTypeTable.RId)) {
+                               coll.Add (new ExportedTypeTable ());
+                               m_rows [ExportedTypeTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (ManifestResourceTable.RId)) {
+                               coll.Add (new ManifestResourceTable ());
+                               m_rows [ManifestResourceTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (NestedClassTable.RId)) {
+                               coll.Add (new NestedClassTable ());
+                               m_rows [NestedClassTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (GenericParamTable.RId)) {
+                               coll.Add (new GenericParamTable ());
+                               m_rows [GenericParamTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (MethodSpecTable.RId)) {
+                               coll.Add (new MethodSpecTable ());
+                               m_rows [MethodSpecTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+                       if (m_heap.HasTable (GenericParamConstraintTable.RId)) {
+                               coll.Add (new GenericParamConstraintTable ());
+                               m_rows [GenericParamConstraintTable.RId] = m_binaryReader.ReadInt32 ();
+                       }
+               }
+
+               public override void VisitAssemblyTable (AssemblyTable table)
+               {
+                       int number = m_rows [AssemblyTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyRow ());
+               }
+               public override void VisitAssemblyOSTable (AssemblyOSTable table)
+               {
+                       int number = m_rows [AssemblyOSTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyOSRow ());
+               }
+               public override void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
+               {
+                       int number = m_rows [AssemblyProcessorTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyProcessorRow ());
+               }
+               public override void VisitAssemblyRefTable (AssemblyRefTable table)
+               {
+                       int number = m_rows [AssemblyRefTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyRefRow ());
+               }
+               public override void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
+               {
+                       int number = m_rows [AssemblyRefOSTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyRefOSRow ());
+               }
+               public override void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
+               {
+                       int number = m_rows [AssemblyRefProcessorTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new AssemblyRefProcessorRow ());
+               }
+               public override void VisitClassLayoutTable (ClassLayoutTable table)
+               {
+                       int number = m_rows [ClassLayoutTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ClassLayoutRow ());
+               }
+               public override void VisitConstantTable (ConstantTable table)
+               {
+                       int number = m_rows [ConstantTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ConstantRow ());
+               }
+               public override void VisitCustomAttributeTable (CustomAttributeTable table)
+               {
+                       int number = m_rows [CustomAttributeTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new CustomAttributeRow ());
+               }
+               public override void VisitDeclSecurityTable (DeclSecurityTable table)
+               {
+                       int number = m_rows [DeclSecurityTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new DeclSecurityRow ());
+               }
+               public override void VisitEventTable (EventTable table)
+               {
+                       int number = m_rows [EventTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new EventRow ());
+               }
+               public override void VisitEventMapTable (EventMapTable table)
+               {
+                       int number = m_rows [EventMapTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new EventMapRow ());
+               }
+               public override void VisitEventPtrTable (EventPtrTable table)
+               {
+                       int number = m_rows [EventPtrTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new EventPtrRow ());
+               }
+               public override void VisitExportedTypeTable (ExportedTypeTable table)
+               {
+                       int number = m_rows [ExportedTypeTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ExportedTypeRow ());
+               }
+               public override void VisitFieldTable (FieldTable table)
+               {
+                       int number = m_rows [FieldTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FieldRow ());
+               }
+               public override void VisitFieldLayoutTable (FieldLayoutTable table)
+               {
+                       int number = m_rows [FieldLayoutTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FieldLayoutRow ());
+               }
+               public override void VisitFieldMarshalTable (FieldMarshalTable table)
+               {
+                       int number = m_rows [FieldMarshalTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FieldMarshalRow ());
+               }
+               public override void VisitFieldPtrTable (FieldPtrTable table)
+               {
+                       int number = m_rows [FieldPtrTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FieldPtrRow ());
+               }
+               public override void VisitFieldRVATable (FieldRVATable table)
+               {
+                       int number = m_rows [FieldRVATable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FieldRVARow ());
+               }
+               public override void VisitFileTable (FileTable table)
+               {
+                       int number = m_rows [FileTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new FileRow ());
+               }
+               public override void VisitGenericParamTable (GenericParamTable table)
+               {
+                       int number = m_rows [GenericParamTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new GenericParamRow ());
+               }
+               public override void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
+               {
+                       int number = m_rows [GenericParamConstraintTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new GenericParamConstraintRow ());
+               }
+               public override void VisitImplMapTable (ImplMapTable table)
+               {
+                       int number = m_rows [ImplMapTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ImplMapRow ());
+               }
+               public override void VisitInterfaceImplTable (InterfaceImplTable table)
+               {
+                       int number = m_rows [InterfaceImplTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new InterfaceImplRow ());
+               }
+               public override void VisitManifestResourceTable (ManifestResourceTable table)
+               {
+                       int number = m_rows [ManifestResourceTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ManifestResourceRow ());
+               }
+               public override void VisitMemberRefTable (MemberRefTable table)
+               {
+                       int number = m_rows [MemberRefTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MemberRefRow ());
+               }
+               public override void VisitMethodTable (MethodTable table)
+               {
+                       int number = m_rows [MethodTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MethodRow ());
+               }
+               public override void VisitMethodImplTable (MethodImplTable table)
+               {
+                       int number = m_rows [MethodImplTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MethodImplRow ());
+               }
+               public override void VisitMethodPtrTable (MethodPtrTable table)
+               {
+                       int number = m_rows [MethodPtrTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MethodPtrRow ());
+               }
+               public override void VisitMethodSemanticsTable (MethodSemanticsTable table)
+               {
+                       int number = m_rows [MethodSemanticsTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MethodSemanticsRow ());
+               }
+               public override void VisitMethodSpecTable (MethodSpecTable table)
+               {
+                       int number = m_rows [MethodSpecTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new MethodSpecRow ());
+               }
+               public override void VisitModuleTable (ModuleTable table)
+               {
+                       int number = m_rows [ModuleTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ModuleRow ());
+               }
+               public override void VisitModuleRefTable (ModuleRefTable table)
+               {
+                       int number = m_rows [ModuleRefTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ModuleRefRow ());
+               }
+               public override void VisitNestedClassTable (NestedClassTable table)
+               {
+                       int number = m_rows [NestedClassTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new NestedClassRow ());
+               }
+               public override void VisitParamTable (ParamTable table)
+               {
+                       int number = m_rows [ParamTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ParamRow ());
+               }
+               public override void VisitParamPtrTable (ParamPtrTable table)
+               {
+                       int number = m_rows [ParamPtrTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new ParamPtrRow ());
+               }
+               public override void VisitPropertyTable (PropertyTable table)
+               {
+                       int number = m_rows [PropertyTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new PropertyRow ());
+               }
+               public override void VisitPropertyMapTable (PropertyMapTable table)
+               {
+                       int number = m_rows [PropertyMapTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new PropertyMapRow ());
+               }
+               public override void VisitPropertyPtrTable (PropertyPtrTable table)
+               {
+                       int number = m_rows [PropertyPtrTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new PropertyPtrRow ());
+               }
+               public override void VisitStandAloneSigTable (StandAloneSigTable table)
+               {
+                       int number = m_rows [StandAloneSigTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new StandAloneSigRow ());
+               }
+               public override void VisitTypeDefTable (TypeDefTable table)
+               {
+                       int number = m_rows [TypeDefTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new TypeDefRow ());
+               }
+               public override void VisitTypeRefTable (TypeRefTable table)
+               {
+                       int number = m_rows [TypeRefTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new TypeRefRow ());
+               }
+               public override void VisitTypeSpecTable (TypeSpecTable table)
+               {
+                       int number = m_rows [TypeSpecTable.RId];
+                       table.Rows = new RowCollection (number);
+                       for (int i = 0; i < number; i++)
+                               table.Rows.Add (new TypeSpecRow ());
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableWriter.cs
new file mode 100644 (file)
index 0000000..6c7fab4
--- /dev/null
@@ -0,0 +1,602 @@
+//
+// MetadataTableWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Binary;
+
+       internal sealed class MetadataTableWriter : BaseMetadataTableVisitor {
+
+               MetadataRoot m_root;
+               TablesHeap m_heap;
+               MetadataRowWriter m_mrrw;
+               MemoryBinaryWriter m_binaryWriter;
+
+               public MetadataTableWriter (MetadataWriter mrv, MemoryBinaryWriter writer)
+               {
+                       m_root = mrv.GetMetadataRoot ();
+                       m_heap = m_root.Streams.TablesHeap;
+                       m_binaryWriter = writer;
+                       m_mrrw = new MetadataRowWriter (this);
+               }
+
+               public MetadataRoot GetMetadataRoot ()
+               {
+                       return m_root;
+               }
+
+               public override IMetadataRowVisitor GetRowVisitor ()
+               {
+                       return m_mrrw;
+               }
+
+               public MemoryBinaryWriter GetWriter ()
+               {
+                       return m_binaryWriter;
+               }
+
+               void InitializeTable (IMetadataTable table)
+               {
+                       table.Rows = new RowCollection ();
+                       m_heap.Valid |= 1L << table.Id;
+                       m_heap.Tables.Add (table);
+               }
+
+               void WriteCount (int rid)
+               {
+                       if (m_heap.HasTable (rid))
+                               m_binaryWriter.Write (m_heap [rid].Rows.Count);
+               }
+
+               public AssemblyTable GetAssemblyTable ()
+               {
+                       AssemblyTable table = m_heap [AssemblyTable.RId] as AssemblyTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public AssemblyOSTable GetAssemblyOSTable ()
+               {
+                       AssemblyOSTable table = m_heap [AssemblyOSTable.RId] as AssemblyOSTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyOSTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public AssemblyProcessorTable GetAssemblyProcessorTable ()
+               {
+                       AssemblyProcessorTable table = m_heap [AssemblyProcessorTable.RId] as AssemblyProcessorTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyProcessorTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public AssemblyRefTable GetAssemblyRefTable ()
+               {
+                       AssemblyRefTable table = m_heap [AssemblyRefTable.RId] as AssemblyRefTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyRefTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public AssemblyRefOSTable GetAssemblyRefOSTable ()
+               {
+                       AssemblyRefOSTable table = m_heap [AssemblyRefOSTable.RId] as AssemblyRefOSTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyRefOSTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public AssemblyRefProcessorTable GetAssemblyRefProcessorTable ()
+               {
+                       AssemblyRefProcessorTable table = m_heap [AssemblyRefProcessorTable.RId] as AssemblyRefProcessorTable;
+                       if (table != null)
+                               return table;
+
+                       table = new AssemblyRefProcessorTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ClassLayoutTable GetClassLayoutTable ()
+               {
+                       ClassLayoutTable table = m_heap [ClassLayoutTable.RId] as ClassLayoutTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ClassLayoutTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ConstantTable GetConstantTable ()
+               {
+                       ConstantTable table = m_heap [ConstantTable.RId] as ConstantTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ConstantTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public CustomAttributeTable GetCustomAttributeTable ()
+               {
+                       CustomAttributeTable table = m_heap [CustomAttributeTable.RId] as CustomAttributeTable;
+                       if (table != null)
+                               return table;
+
+                       table = new CustomAttributeTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public DeclSecurityTable GetDeclSecurityTable ()
+               {
+                       DeclSecurityTable table = m_heap [DeclSecurityTable.RId] as DeclSecurityTable;
+                       if (table != null)
+                               return table;
+
+                       table = new DeclSecurityTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public EventTable GetEventTable ()
+               {
+                       EventTable table = m_heap [EventTable.RId] as EventTable;
+                       if (table != null)
+                               return table;
+
+                       table = new EventTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public EventMapTable GetEventMapTable ()
+               {
+                       EventMapTable table = m_heap [EventMapTable.RId] as EventMapTable;
+                       if (table != null)
+                               return table;
+
+                       table = new EventMapTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public EventPtrTable GetEventPtrTable ()
+               {
+                       EventPtrTable table = m_heap [EventPtrTable.RId] as EventPtrTable;
+                       if (table != null)
+                               return table;
+
+                       table = new EventPtrTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ExportedTypeTable GetExportedTypeTable ()
+               {
+                       ExportedTypeTable table = m_heap [ExportedTypeTable.RId] as ExportedTypeTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ExportedTypeTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FieldTable GetFieldTable ()
+               {
+                       FieldTable table = m_heap [FieldTable.RId] as FieldTable;
+                       if (table != null)
+                               return table;
+
+                       table = new FieldTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FieldLayoutTable GetFieldLayoutTable ()
+               {
+                       FieldLayoutTable table = m_heap [FieldLayoutTable.RId] as FieldLayoutTable;
+                       if (table != null)
+                               return table;
+
+                       table = new FieldLayoutTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FieldMarshalTable GetFieldMarshalTable ()
+               {
+                       FieldMarshalTable table = m_heap [FieldMarshalTable.RId] as FieldMarshalTable;
+                       if (table != null)
+                               return table;
+
+                       table = new FieldMarshalTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FieldPtrTable GetFieldPtrTable ()
+               {
+                       FieldPtrTable table = m_heap [FieldPtrTable.RId] as FieldPtrTable;
+                       if (table != null)
+                               return table;
+
+                       table = new FieldPtrTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FieldRVATable GetFieldRVATable ()
+               {
+                       FieldRVATable table = m_heap [FieldRVATable.RId] as FieldRVATable;
+                       if (table != null)
+                               return table;
+
+                       table = new FieldRVATable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public FileTable GetFileTable ()
+               {
+                       FileTable table = m_heap [FileTable.RId] as FileTable;
+                       if (table != null)
+                               return table;
+
+                       table = new FileTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public GenericParamTable GetGenericParamTable ()
+               {
+                       GenericParamTable table = m_heap [GenericParamTable.RId] as GenericParamTable;
+                       if (table != null)
+                               return table;
+
+                       table = new GenericParamTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public GenericParamConstraintTable GetGenericParamConstraintTable ()
+               {
+                       GenericParamConstraintTable table = m_heap [GenericParamConstraintTable.RId] as GenericParamConstraintTable;
+                       if (table != null)
+                               return table;
+
+                       table = new GenericParamConstraintTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ImplMapTable GetImplMapTable ()
+               {
+                       ImplMapTable table = m_heap [ImplMapTable.RId] as ImplMapTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ImplMapTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public InterfaceImplTable GetInterfaceImplTable ()
+               {
+                       InterfaceImplTable table = m_heap [InterfaceImplTable.RId] as InterfaceImplTable;
+                       if (table != null)
+                               return table;
+
+                       table = new InterfaceImplTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ManifestResourceTable GetManifestResourceTable ()
+               {
+                       ManifestResourceTable table = m_heap [ManifestResourceTable.RId] as ManifestResourceTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ManifestResourceTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MemberRefTable GetMemberRefTable ()
+               {
+                       MemberRefTable table = m_heap [MemberRefTable.RId] as MemberRefTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MemberRefTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MethodTable GetMethodTable ()
+               {
+                       MethodTable table = m_heap [MethodTable.RId] as MethodTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MethodTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MethodImplTable GetMethodImplTable ()
+               {
+                       MethodImplTable table = m_heap [MethodImplTable.RId] as MethodImplTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MethodImplTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MethodPtrTable GetMethodPtrTable ()
+               {
+                       MethodPtrTable table = m_heap [MethodPtrTable.RId] as MethodPtrTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MethodPtrTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MethodSemanticsTable GetMethodSemanticsTable ()
+               {
+                       MethodSemanticsTable table = m_heap [MethodSemanticsTable.RId] as MethodSemanticsTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MethodSemanticsTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public MethodSpecTable GetMethodSpecTable ()
+               {
+                       MethodSpecTable table = m_heap [MethodSpecTable.RId] as MethodSpecTable;
+                       if (table != null)
+                               return table;
+
+                       table = new MethodSpecTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ModuleTable GetModuleTable ()
+               {
+                       ModuleTable table = m_heap [ModuleTable.RId] as ModuleTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ModuleTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ModuleRefTable GetModuleRefTable ()
+               {
+                       ModuleRefTable table = m_heap [ModuleRefTable.RId] as ModuleRefTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ModuleRefTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public NestedClassTable GetNestedClassTable ()
+               {
+                       NestedClassTable table = m_heap [NestedClassTable.RId] as NestedClassTable;
+                       if (table != null)
+                               return table;
+
+                       table = new NestedClassTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ParamTable GetParamTable ()
+               {
+                       ParamTable table = m_heap [ParamTable.RId] as ParamTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ParamTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public ParamPtrTable GetParamPtrTable ()
+               {
+                       ParamPtrTable table = m_heap [ParamPtrTable.RId] as ParamPtrTable;
+                       if (table != null)
+                               return table;
+
+                       table = new ParamPtrTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public PropertyTable GetPropertyTable ()
+               {
+                       PropertyTable table = m_heap [PropertyTable.RId] as PropertyTable;
+                       if (table != null)
+                               return table;
+
+                       table = new PropertyTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public PropertyMapTable GetPropertyMapTable ()
+               {
+                       PropertyMapTable table = m_heap [PropertyMapTable.RId] as PropertyMapTable;
+                       if (table != null)
+                               return table;
+
+                       table = new PropertyMapTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public PropertyPtrTable GetPropertyPtrTable ()
+               {
+                       PropertyPtrTable table = m_heap [PropertyPtrTable.RId] as PropertyPtrTable;
+                       if (table != null)
+                               return table;
+
+                       table = new PropertyPtrTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public StandAloneSigTable GetStandAloneSigTable ()
+               {
+                       StandAloneSigTable table = m_heap [StandAloneSigTable.RId] as StandAloneSigTable;
+                       if (table != null)
+                               return table;
+
+                       table = new StandAloneSigTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public TypeDefTable GetTypeDefTable ()
+               {
+                       TypeDefTable table = m_heap [TypeDefTable.RId] as TypeDefTable;
+                       if (table != null)
+                               return table;
+
+                       table = new TypeDefTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public TypeRefTable GetTypeRefTable ()
+               {
+                       TypeRefTable table = m_heap [TypeRefTable.RId] as TypeRefTable;
+                       if (table != null)
+                               return table;
+
+                       table = new TypeRefTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public TypeSpecTable GetTypeSpecTable ()
+               {
+                       TypeSpecTable table = m_heap [TypeSpecTable.RId] as TypeSpecTable;
+                       if (table != null)
+                               return table;
+
+                       table = new TypeSpecTable ();
+                       InitializeTable (table);
+                       return table;
+               }
+
+               public override void VisitTableCollection (TableCollection coll)
+               {
+                       WriteCount (ModuleTable.RId);
+                       WriteCount (TypeRefTable.RId);
+                       WriteCount (TypeDefTable.RId);
+                       WriteCount (FieldPtrTable.RId);
+                       WriteCount (FieldTable.RId);
+                       WriteCount (MethodPtrTable.RId);
+                       WriteCount (MethodTable.RId);
+                       WriteCount (ParamPtrTable.RId);
+                       WriteCount (ParamTable.RId);
+                       WriteCount (InterfaceImplTable.RId);
+                       WriteCount (MemberRefTable.RId);
+                       WriteCount (ConstantTable.RId);
+                       WriteCount (CustomAttributeTable.RId);
+                       WriteCount (FieldMarshalTable.RId);
+                       WriteCount (DeclSecurityTable.RId);
+                       WriteCount (ClassLayoutTable.RId);
+                       WriteCount (FieldLayoutTable.RId);
+                       WriteCount (StandAloneSigTable.RId);
+                       WriteCount (EventMapTable.RId);
+                       WriteCount (EventPtrTable.RId);
+                       WriteCount (EventTable.RId);
+                       WriteCount (PropertyMapTable.RId);
+                       WriteCount (PropertyPtrTable.RId);
+                       WriteCount (PropertyTable.RId);
+                       WriteCount (MethodSemanticsTable.RId);
+                       WriteCount (MethodImplTable.RId);
+                       WriteCount (ModuleRefTable.RId);
+                       WriteCount (TypeSpecTable.RId);
+                       WriteCount (ImplMapTable.RId);
+                       WriteCount (FieldRVATable.RId);
+                       WriteCount (AssemblyTable.RId);
+                       WriteCount (AssemblyProcessorTable.RId);
+                       WriteCount (AssemblyOSTable.RId);
+                       WriteCount (AssemblyRefTable.RId);
+                       WriteCount (AssemblyRefProcessorTable.RId);
+                       WriteCount (AssemblyRefOSTable.RId);
+                       WriteCount (FileTable.RId);
+                       WriteCount (ExportedTypeTable.RId);
+                       WriteCount (ManifestResourceTable.RId);
+                       WriteCount (NestedClassTable.RId);
+                       WriteCount (GenericParamTable.RId);
+                       WriteCount (MethodSpecTable.RId);
+                       WriteCount (GenericParamConstraintTable.RId);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs
new file mode 100644 (file)
index 0000000..5b287e4
--- /dev/null
@@ -0,0 +1,102 @@
+//
+// MetadataToken.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal struct MetadataToken {
+
+               uint m_rid;
+               TokenType m_type;
+
+               public uint RID {
+                       get { return m_rid; }
+               }
+
+               public TokenType TokenType {
+                       get { return m_type; }
+               }
+
+               public static readonly MetadataToken Zero = new MetadataToken ((TokenType) 0, 0);
+
+               public MetadataToken (int token)
+               {
+                       m_type = (TokenType) (token & 0xff000000);
+                       m_rid = (uint) token & 0x00ffffff;
+               }
+
+               public MetadataToken (TokenType table, uint rid)
+               {
+                       m_type = table;
+                       m_rid = rid;
+               }
+
+               internal static MetadataToken FromMetadataRow (TokenType table, int rowIndex)
+               {
+                       return new MetadataToken (table, (uint) rowIndex + 1);
+               }
+
+               public uint ToUInt ()
+               {
+                       return (uint) m_type | m_rid;
+               }
+
+               public override int GetHashCode ()
+               {
+                       return (int) ToUInt ();
+               }
+
+               public override bool Equals (object other)
+               {
+                       if (other is MetadataToken)
+                               return Equals ((MetadataToken) other);
+
+                       return false;
+               }
+
+               private bool Equals (MetadataToken other)
+               {
+                       return other.m_rid == m_rid && other.m_type == m_type;
+               }
+
+               public static bool operator == (MetadataToken one, MetadataToken other)
+               {
+                       return one.Equals (other);
+               }
+
+               public static bool operator != (MetadataToken one, MetadataToken other)
+               {
+                       return !one.Equals (other);
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("{0} [0x{1}]",
+                               m_type, m_rid.ToString ("x4"));
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataWriter.cs
new file mode 100644 (file)
index 0000000..53cb186
--- /dev/null
@@ -0,0 +1,531 @@
+//
+// MetadataWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Binary;
+
+       internal sealed class MetadataWriter : BaseMetadataVisitor {
+
+               AssemblyDefinition m_assembly;
+               MetadataRoot m_root;
+               TargetRuntime m_runtime;
+               ImageWriter m_imgWriter;
+               MetadataTableWriter m_tableWriter;
+               MemoryBinaryWriter m_binaryWriter;
+
+               IDictionary m_stringCache;
+               MemoryBinaryWriter m_stringWriter;
+
+               IDictionary m_guidCache;
+               MemoryBinaryWriter m_guidWriter;
+
+               IDictionary m_usCache;
+               MemoryBinaryWriter m_usWriter;
+
+               IDictionary m_blobCache;
+               MemoryBinaryWriter m_blobWriter;
+
+               MemoryBinaryWriter m_tWriter;
+
+               MemoryBinaryWriter m_cilWriter;
+
+               MemoryBinaryWriter m_fieldDataWriter;
+               MemoryBinaryWriter m_resWriter;
+
+               uint m_mdStart, m_mdSize;
+               uint m_resStart, m_resSize;
+               uint m_snsStart, m_snsSize;
+               uint m_debugHeaderStart;
+               uint m_imporTableStart;
+
+               uint m_entryPointToken;
+
+               RVA m_cursor = new RVA (0x2050);
+
+               public MemoryBinaryWriter CilWriter {
+                       get { return m_cilWriter; }
+               }
+
+               public MemoryBinaryWriter StringWriter {
+                       get { return m_stringWriter; }
+               }
+
+               public MemoryBinaryWriter GuidWriter {
+                       get { return m_guidWriter; }
+               }
+
+               public MemoryBinaryWriter UserStringWriter {
+                       get { return m_usWriter; }
+               }
+
+               public MemoryBinaryWriter BlobWriter {
+                       get { return m_blobWriter; }
+               }
+
+               public uint DebugHeaderPosition {
+                       get { return m_debugHeaderStart; }
+               }
+
+               public uint ImportTablePosition {
+                       get { return m_imporTableStart; }
+               }
+
+               public uint EntryPointToken {
+                       get { return m_entryPointToken; }
+                       set { m_entryPointToken = value; }
+               }
+
+               public TargetRuntime TargetRuntime {
+                       get { return m_runtime; }
+               }
+
+               public MetadataWriter (AssemblyDefinition asm, MetadataRoot root,
+                       AssemblyKind kind, TargetRuntime rt, BinaryWriter writer)
+               {
+                       m_assembly = asm;
+                       m_root = root;
+                       m_runtime = rt;
+                       m_imgWriter = new ImageWriter (this, kind, writer);
+                       m_binaryWriter = m_imgWriter.GetTextWriter ();
+
+                       m_stringCache = new Hashtable ();
+                       m_stringWriter = new MemoryBinaryWriter (Encoding.UTF8);
+                       m_stringWriter.Write ((byte) 0);
+
+                       m_guidCache = new Hashtable ();
+                       m_guidWriter = new MemoryBinaryWriter ();
+
+                       m_usCache = new Hashtable ();
+                       m_usWriter = new MemoryBinaryWriter (Encoding.Unicode);
+                       m_usWriter.Write ((byte) 0);
+
+                       m_blobCache = new Hashtable (ByteArrayEqualityComparer.Instance, ByteArrayEqualityComparer.Instance);
+                       m_blobWriter = new MemoryBinaryWriter ();
+                       m_blobWriter.Write ((byte) 0);
+
+                       m_tWriter = new MemoryBinaryWriter ();
+                       m_tableWriter = new MetadataTableWriter (this, m_tWriter);
+
+                       m_cilWriter = new MemoryBinaryWriter ();
+
+                       m_fieldDataWriter = new MemoryBinaryWriter ();
+                       m_resWriter = new MemoryBinaryWriter ();
+               }
+
+               public MetadataRoot GetMetadataRoot ()
+               {
+                       return m_root;
+               }
+
+               public ImageWriter GetImageWriter ()
+               {
+                       return m_imgWriter;
+               }
+
+               public MemoryBinaryWriter GetWriter ()
+               {
+                       return m_binaryWriter;
+               }
+
+               public MetadataTableWriter GetTableVisitor ()
+               {
+                       return m_tableWriter;
+               }
+
+               public void AddData (int length)
+               {
+                       m_cursor += new RVA ((uint) length);
+               }
+
+               public RVA GetDataCursor ()
+               {
+                       return m_cursor;
+               }
+
+               public uint AddString (string str)
+               {
+                       if (str == null || str.Length == 0)
+                               return 0;
+
+                       if (m_stringCache.Contains (str))
+                               return (uint) m_stringCache [str];
+
+                       uint pointer = (uint) m_stringWriter.BaseStream.Position;
+                       m_stringCache [str] = pointer;
+                       m_stringWriter.Write (Encoding.UTF8.GetBytes (str));
+                       m_stringWriter.Write ('\0');
+                       return pointer;
+               }
+
+               public uint AddBlob (byte [] data)
+               {
+                       if (data == null || data.Length == 0)
+                               return 0;
+
+                       object cached = m_blobCache [data];
+                       if (cached != null)
+                               return (uint) cached;
+
+                       uint pointer = (uint) m_blobWriter.BaseStream.Position;
+                       m_blobCache [data] = pointer;
+                       Utilities.WriteCompressedInteger (m_blobWriter, data.Length);
+                       m_blobWriter.Write (data);
+                       return pointer;
+               }
+
+               public uint AddGuid (Guid g)
+               {
+                       if (m_guidCache.Contains (g))
+                               return (uint) m_guidCache [g];
+
+                       uint pointer = (uint) m_guidWriter.BaseStream.Position;
+                       m_guidCache [g] = pointer;
+                       m_guidWriter.Write (g.ToByteArray ());
+                       return pointer + 1;
+               }
+
+               public uint AddUserString (string str)
+               {
+                       if (str == null)
+                               return 0;
+
+                       if (m_usCache.Contains (str))
+                               return (uint) m_usCache [str];
+
+                       uint pointer = (uint) m_usWriter.BaseStream.Position;
+                       m_usCache [str] = pointer;
+                       byte [] us = Encoding.Unicode.GetBytes (str);
+                       Utilities.WriteCompressedInteger (m_usWriter, us.Length + 1);
+                       m_usWriter.Write (us);
+                       m_usWriter.Write ((byte) (RequiresSpecialHandling (us) ? 1 : 0));
+                       return pointer;
+               }
+
+               static bool RequiresSpecialHandling (byte [] chars)
+               {
+                       for (int i = 0; i < chars.Length; i++) {
+                               byte c = chars [i];
+                               if ((i % 2) == 1)
+                                       if (c != 0)
+                                               return true;
+
+                               if (InRange (0x01, 0x08, c) ||
+                                       InRange (0x0e, 0x1f, c) ||
+                                       c == 0x27 ||
+                                       c == 0x2d ||
+                                       c == 0x7f) {
+
+                                       return true;
+                               }
+                       }
+
+                       return false;
+               }
+
+               static bool InRange (int left, int right, int value)
+               {
+                       return left <= value && value <= right;
+               }
+
+               void CreateStream (string name)
+               {
+                       MetadataStream stream = new MetadataStream ();
+                       stream.Header.Name = name;
+                       stream.Heap = MetadataHeap.HeapFactory (stream);
+                       m_root.Streams.Add (stream);
+               }
+
+               void SetHeapSize (MetadataHeap heap, MemoryBinaryWriter data, byte flag)
+               {
+                       if (data.BaseStream.Length > 65536) {
+                               m_root.Streams.TablesHeap.HeapSizes |= flag;
+                               heap.IndexSize = 4;
+                       } else
+                               heap.IndexSize = 2;
+               }
+
+               public uint AddResource (byte [] data)
+               {
+                       uint offset = (uint) m_resWriter.BaseStream.Position;
+                       m_resWriter.Write (data.Length);
+                       m_resWriter.Write (data);
+                       m_resWriter.QuadAlign ();
+                       return offset;
+               }
+
+               public void AddFieldInitData (byte [] data)
+               {
+                       m_fieldDataWriter.Write (data);
+                       m_fieldDataWriter.QuadAlign ();
+               }
+
+               uint GetStrongNameSignatureSize ()
+               {
+                       if (m_assembly.Name.PublicKey != null) {
+                               // in fx 2.0 the key may be from 384 to 16384 bits
+                               // so we must calculate the signature size based on
+                               // the size of the public key (minus the 32 byte header)
+                               int size = m_assembly.Name.PublicKey.Length;
+                               if (size > 32)
+                                       return (uint) (size - 32);
+                               // note: size == 16 for the ECMA "key" which is replaced
+                               // by the runtime with a 1024 bits key (128 bytes)
+                       }
+                       return 128; // default strongname signature size
+               }
+
+               public override void VisitMetadataRoot (MetadataRoot root)
+               {
+                       WriteMemStream (m_cilWriter);
+                       WriteMemStream (m_fieldDataWriter);
+                       m_resStart = (uint) m_binaryWriter.BaseStream.Position;
+                       WriteMemStream (m_resWriter);
+                       m_resSize = (uint) (m_binaryWriter.BaseStream.Position - m_resStart);
+
+                       // for now, we only reserve the place for the strong name signature
+                       if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) > 0) {
+                               m_snsStart = (uint) m_binaryWriter.BaseStream.Position;
+                               m_snsSize = GetStrongNameSignatureSize ();
+                               m_binaryWriter.Write (new byte [m_snsSize]);
+                               m_binaryWriter.QuadAlign ();
+                       }
+
+                       // save place for debug header
+                       if (m_imgWriter.GetImage ().DebugHeader != null) {
+                               m_debugHeaderStart = (uint) m_binaryWriter.BaseStream.Position;
+                               m_binaryWriter.Write (new byte [m_imgWriter.GetImage ().DebugHeader.GetSize ()]);
+                               m_binaryWriter.QuadAlign ();
+                       }
+
+                       m_mdStart = (uint) m_binaryWriter.BaseStream.Position;
+
+                       if (m_stringWriter.BaseStream.Length > 1) {
+                               CreateStream (MetadataStream.Strings);
+                               SetHeapSize (root.Streams.StringsHeap, m_stringWriter, 0x01);
+                               m_stringWriter.QuadAlign ();
+                       }
+
+                       if (m_guidWriter.BaseStream.Length > 0) {
+                               CreateStream (MetadataStream.GUID);
+                               SetHeapSize (root.Streams.GuidHeap, m_guidWriter, 0x02);
+                       }
+
+                       if (m_blobWriter.BaseStream.Length > 1) {
+                               CreateStream (MetadataStream.Blob);
+                               SetHeapSize (root.Streams.BlobHeap, m_blobWriter, 0x04);
+                               m_blobWriter.QuadAlign ();
+                       }
+
+                       if (m_usWriter.BaseStream.Length > 2) {
+                               CreateStream (MetadataStream.UserStrings);
+                               m_usWriter.QuadAlign ();
+                       }
+
+                       m_root.Header.MajorVersion = 1;
+                       m_root.Header.MinorVersion = 1;
+
+                       switch (m_runtime) {
+                       case TargetRuntime.NET_1_0 :
+                               m_root.Header.Version = "v1.0.3705";
+                               break;
+                       case TargetRuntime.NET_1_1 :
+                               m_root.Header.Version = "v1.1.4322";
+                               break;
+                       case TargetRuntime.NET_2_0 :
+                               m_root.Header.Version = "v2.0.50727";
+                               break;
+                       case TargetRuntime.NET_4_0 :
+                               m_root.Header.Version = "v4.0.30319";
+                               break;
+                       }
+
+                       m_root.Streams.TablesHeap.Tables.Accept (m_tableWriter);
+
+                       if (m_tWriter.BaseStream.Length == 0)
+                               m_root.Streams.Remove (m_root.Streams.TablesHeap.GetStream ());
+               }
+
+               public override void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
+               {
+                       m_binaryWriter.Write (header.Signature);
+                       m_binaryWriter.Write (header.MajorVersion);
+                       m_binaryWriter.Write (header.MinorVersion);
+                       m_binaryWriter.Write (header.Reserved);
+                       m_binaryWriter.Write (header.Version.Length + 3 & (~3));
+                       m_binaryWriter.Write (Encoding.ASCII.GetBytes (header.Version));
+                       m_binaryWriter.QuadAlign ();
+                       m_binaryWriter.Write (header.Flags);
+                       m_binaryWriter.Write ((ushort) m_root.Streams.Count);
+               }
+
+               public override void VisitMetadataStreamCollection (MetadataStreamCollection streams)
+               {
+                       foreach (MetadataStream stream in streams) {
+                               MetadataStream.MetadataStreamHeader header = stream.Header;
+
+                               header.Offset = (uint) (m_binaryWriter.BaseStream.Position);
+                               m_binaryWriter.Write (header.Offset);
+                               MemoryBinaryWriter container;
+                               string name = header.Name;
+                               uint size = 0;
+                               switch (header.Name) {
+                               case MetadataStream.Tables :
+                                       container = m_tWriter;
+                                       size += 24; // header
+                                       break;
+                               case MetadataStream.Strings :
+                                       name += "\0\0\0\0";
+                                       container = m_stringWriter;
+                                       break;
+                               case MetadataStream.GUID :
+                                       container = m_guidWriter;
+                                       break;
+                               case MetadataStream.Blob :
+                                       container = m_blobWriter;
+                                       break;
+                               case MetadataStream.UserStrings :
+                                       container = m_usWriter;
+                                       break;
+                               default :
+                                       throw new MetadataFormatException ("Unknown stream kind");
+                               }
+
+                               size += (uint) (container.BaseStream.Length + 3 & (~3));
+                               m_binaryWriter.Write (size);
+                               m_binaryWriter.Write (Encoding.ASCII.GetBytes (name));
+                               m_binaryWriter.QuadAlign ();
+                       }
+               }
+
+               void WriteMemStream (MemoryBinaryWriter writer)
+               {
+                       m_binaryWriter.Write (writer);
+                       m_binaryWriter.QuadAlign ();
+               }
+
+               void PatchStreamHeaderOffset (MetadataHeap heap)
+               {
+                       long pos = m_binaryWriter.BaseStream.Position;
+                       m_binaryWriter.BaseStream.Position = heap.GetStream ().Header.Offset;
+                       m_binaryWriter.Write ((uint) (pos - m_mdStart));
+                       m_binaryWriter.BaseStream.Position = pos;
+               }
+
+               public override void VisitGuidHeap (GuidHeap heap)
+               {
+                       PatchStreamHeaderOffset (heap);
+                       WriteMemStream (m_guidWriter);
+               }
+
+               public override void VisitStringsHeap (StringsHeap heap)
+               {
+                       PatchStreamHeaderOffset (heap);
+                       WriteMemStream (m_stringWriter);
+               }
+
+               public override void VisitTablesHeap (TablesHeap heap)
+               {
+                       PatchStreamHeaderOffset (heap);
+                       m_binaryWriter.Write (heap.Reserved);
+                       switch (m_runtime) {
+                       case TargetRuntime.NET_1_0 :
+                       case TargetRuntime.NET_1_1 :
+                               heap.MajorVersion = 1;
+                               heap.MinorVersion = 0;
+                               break;
+                       case TargetRuntime.NET_2_0 :
+                       case TargetRuntime.NET_4_0 :
+                               heap.MajorVersion = 2;
+                               heap.MinorVersion = 0;
+                               break;
+                       }
+                       m_binaryWriter.Write (heap.MajorVersion);
+                       m_binaryWriter.Write (heap.MinorVersion);
+                       m_binaryWriter.Write (heap.HeapSizes);
+                       m_binaryWriter.Write (heap.Reserved2);
+                       m_binaryWriter.Write (heap.Valid);
+                       m_binaryWriter.Write (heap.Sorted);
+                       WriteMemStream (m_tWriter);
+               }
+
+               public override void VisitBlobHeap (BlobHeap heap)
+               {
+                       PatchStreamHeaderOffset (heap);
+                       WriteMemStream (m_blobWriter);
+               }
+
+               public override void VisitUserStringsHeap (UserStringsHeap heap)
+               {
+                       PatchStreamHeaderOffset (heap);
+                       WriteMemStream (m_usWriter);
+               }
+
+               void PatchHeader ()
+               {
+                       Image img = m_imgWriter.GetImage ();
+
+                       img.CLIHeader.EntryPointToken = m_entryPointToken;
+
+                       if ((m_assembly.Name.Flags & AssemblyFlags.PublicKey) == 0)
+                               img.CLIHeader.Flags &= ~RuntimeImage.StrongNameSigned;
+
+                       if (m_mdSize > 0)
+                               img.CLIHeader.Metadata = new DataDirectory (
+                                       img.TextSection.VirtualAddress + m_mdStart, m_imporTableStart - m_mdStart);
+
+                       if (m_resSize > 0)
+                               img.CLIHeader.Resources = new DataDirectory (
+                                       img.TextSection.VirtualAddress + m_resStart, m_resSize);
+
+                       if (m_snsStart > 0)
+                               img.CLIHeader.StrongNameSignature = new DataDirectory (
+                                       img.TextSection.VirtualAddress + m_snsStart, m_snsSize);
+
+                       if (m_debugHeaderStart > 0)
+                               img.PEOptionalHeader.DataDirectories.Debug = new DataDirectory (
+                                       img.TextSection.VirtualAddress + m_debugHeaderStart, 0x1c);
+               }
+
+               public override void TerminateMetadataRoot (MetadataRoot root)
+               {
+                       m_mdSize = (uint) (m_binaryWriter.BaseStream.Position - m_mdStart);
+                       m_imporTableStart = (uint) m_binaryWriter.BaseStream.Position;
+                       m_binaryWriter.Write (new byte [0x60]); // imports
+                       m_imgWriter.Initialize ();
+                       PatchHeader ();
+                       root.GetImage ().Accept (m_imgWriter);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs
new file mode 100644 (file)
index 0000000..dc9963a
--- /dev/null
@@ -0,0 +1,87 @@
+//
+// MethodTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       using Mono.Cecil.Binary;
+
+       internal sealed class MethodTable : IMetadataTable {
+
+               public const int RId = 0x06;
+
+               RowCollection m_rows;
+
+               public MethodRow this [int index] {
+                       get { return m_rows [index] as MethodRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MethodTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMethodTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MethodRow : IMetadataRow {
+
+               public RVA RVA;
+               public MethodImplAttributes ImplFlags;
+               public MethodAttributes Flags;
+               public uint Name;
+               public uint Signature;
+               public uint ParamList;
+
+               internal MethodRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMethodRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs
new file mode 100644 (file)
index 0000000..2d2a23a
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// MethodImplTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class MethodImplTable : IMetadataTable {
+
+               public const int RId = 0x19;
+
+               RowCollection m_rows;
+
+               public MethodImplRow this [int index] {
+                       get { return m_rows [index] as MethodImplRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MethodImplTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMethodImplTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MethodImplRow : IMetadataRow {
+
+               public uint Class;
+               public MetadataToken MethodBody;
+               public MetadataToken MethodDeclaration;
+
+               internal MethodImplRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMethodImplRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs
new file mode 100644 (file)
index 0000000..c660803
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// MethodPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class MethodPtrTable : IMetadataTable {
+
+               public const int RId = 0x05;
+
+               RowCollection m_rows;
+
+               public MethodPtrRow this [int index] {
+                       get { return m_rows [index] as MethodPtrRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MethodPtrTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMethodPtrTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MethodPtrRow : IMetadataRow {
+
+               public uint Method;
+
+               internal MethodPtrRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMethodPtrRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs
new file mode 100644 (file)
index 0000000..1ff8a5c
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// MethodSemanticsTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class MethodSemanticsTable : IMetadataTable {
+
+               public const int RId = 0x18;
+
+               RowCollection m_rows;
+
+               public MethodSemanticsRow this [int index] {
+                       get { return m_rows [index] as MethodSemanticsRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MethodSemanticsTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMethodSemanticsTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MethodSemanticsRow : IMetadataRow {
+
+               public MethodSemanticsAttributes Semantics;
+               public uint Method;
+               public MetadataToken Association;
+
+               internal MethodSemanticsRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMethodSemanticsRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs
new file mode 100644 (file)
index 0000000..2eb3dec
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// MethodSpecTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class MethodSpecTable : IMetadataTable {
+
+               public const int RId = 0x2b;
+
+               RowCollection m_rows;
+
+               public MethodSpecRow this [int index] {
+                       get { return m_rows [index] as MethodSpecRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal MethodSpecTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitMethodSpecTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class MethodSpecRow : IMetadataRow {
+
+               public MetadataToken Method;
+               public uint Instantiation;
+
+               internal MethodSpecRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitMethodSpecRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs
new file mode 100644 (file)
index 0000000..7fe93d7
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// ModuleTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class ModuleTable : IMetadataTable {
+
+               public const int RId = 0x00;
+
+               RowCollection m_rows;
+
+               public ModuleRow this [int index] {
+                       get { return m_rows [index] as ModuleRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ModuleTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitModuleTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ModuleRow : IMetadataRow {
+
+               public ushort Generation;
+               public uint Name;
+               public uint Mvid;
+               public uint EncId;
+               public uint EncBaseId;
+
+               internal ModuleRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitModuleRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs
new file mode 100644 (file)
index 0000000..36be44f
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// ModuleRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class ModuleRefTable : IMetadataTable {
+
+               public const int RId = 0x1a;
+
+               RowCollection m_rows;
+
+               public ModuleRefRow this [int index] {
+                       get { return m_rows [index] as ModuleRefRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ModuleRefTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitModuleRefTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ModuleRefRow : IMetadataRow {
+
+               public uint Name;
+
+               internal ModuleRefRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitModuleRefRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs
new file mode 100644 (file)
index 0000000..14bc791
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// NestedClassTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class NestedClassTable : IMetadataTable {
+
+               public const int RId = 0x29;
+
+               RowCollection m_rows;
+
+               public NestedClassRow this [int index] {
+                       get { return m_rows [index] as NestedClassRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal NestedClassTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitNestedClassTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class NestedClassRow : IMetadataRow {
+
+               public uint NestedClass;
+               public uint EnclosingClass;
+
+               internal NestedClassRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitNestedClassRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs
new file mode 100644 (file)
index 0000000..07f5cd5
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// ParamTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class ParamTable : IMetadataTable {
+
+               public const int RId = 0x08;
+
+               RowCollection m_rows;
+
+               public ParamRow this [int index] {
+                       get { return m_rows [index] as ParamRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ParamTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitParamTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ParamRow : IMetadataRow {
+
+               public ParameterAttributes Flags;
+               public ushort Sequence;
+               public uint Name;
+
+               internal ParamRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitParamRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs
new file mode 100644 (file)
index 0000000..b6bf7ad
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// ParamPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class ParamPtrTable : IMetadataTable {
+
+               public const int RId = 0x07;
+
+               RowCollection m_rows;
+
+               public ParamPtrRow this [int index] {
+                       get { return m_rows [index] as ParamPtrRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal ParamPtrTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitParamPtrTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class ParamPtrRow : IMetadataRow {
+
+               public uint Param;
+
+               internal ParamPtrRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitParamPtrRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs
new file mode 100644 (file)
index 0000000..08eaaf4
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// PropertyTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class PropertyTable : IMetadataTable {
+
+               public const int RId = 0x17;
+
+               RowCollection m_rows;
+
+               public PropertyRow this [int index] {
+                       get { return m_rows [index] as PropertyRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal PropertyTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitPropertyTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class PropertyRow : IMetadataRow {
+
+               public PropertyAttributes Flags;
+               public uint Name;
+               public uint Type;
+
+               internal PropertyRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitPropertyRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs
new file mode 100644 (file)
index 0000000..83dd27e
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// PropertyMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class PropertyMapTable : IMetadataTable {
+
+               public const int RId = 0x15;
+
+               RowCollection m_rows;
+
+               public PropertyMapRow this [int index] {
+                       get { return m_rows [index] as PropertyMapRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal PropertyMapTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitPropertyMapTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class PropertyMapRow : IMetadataRow {
+
+               public uint Parent;
+               public uint PropertyList;
+
+               internal PropertyMapRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitPropertyMapRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs
new file mode 100644 (file)
index 0000000..abe6619
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// PropertyPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class PropertyPtrTable : IMetadataTable {
+
+               public const int RId = 0x16;
+
+               RowCollection m_rows;
+
+               public PropertyPtrRow this [int index] {
+                       get { return m_rows [index] as PropertyPtrRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal PropertyPtrTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitPropertyPtrTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class PropertyPtrRow : IMetadataRow {
+
+               public uint Property;
+
+               internal PropertyPtrRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitPropertyPtrRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs
new file mode 100644 (file)
index 0000000..e3ffe5c
--- /dev/null
@@ -0,0 +1,125 @@
+//
+// RowCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       internal class RowCollection : ICollection, IMetadataRowVisitable {
+
+               ArrayList m_items;
+
+               public IMetadataRow this [int index] {
+                       get { return m_items [index] as IMetadataRow; }
+                       set { m_items [index] = value; }
+               }
+
+               public int Count {
+                       get { return m_items.Count; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               internal RowCollection (int size)
+               {
+                       m_items = new ArrayList (size);
+               }
+
+               internal RowCollection ()
+               {
+                       m_items = new ArrayList ();
+               }
+
+               internal void Add (IMetadataRow value)
+               {
+                       m_items.Add (value);
+               }
+
+               public void Clear ()
+               {
+                       m_items.Clear ();
+               }
+
+               public bool Contains (IMetadataRow value)
+               {
+                       return m_items.Contains (value);
+               }
+
+               public int IndexOf (IMetadataRow value)
+               {
+                       return m_items.IndexOf (value);
+               }
+
+               public void Insert (int index, IMetadataRow value)
+               {
+                       m_items.Insert (index, value);
+               }
+
+               public void Remove (IMetadataRow value)
+               {
+                       m_items.Remove (value);
+               }
+
+               public void RemoveAt (int index)
+               {
+                       m_items.Remove (index);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       m_items.CopyTo (ary, index);
+               }
+
+               public void Sort (IComparer comp)
+               {
+                       m_items.Sort (comp);
+               }
+
+               public IEnumerator GetEnumerator ()
+               {
+                       return m_items.GetEnumerator ();
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitRowCollection (this);
+
+                       for (int i = 0; i < m_items.Count; i++)
+                               this [i].Accept (visitor);
+
+                       visitor.TerminateRowCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs
new file mode 100644 (file)
index 0000000..7097f82
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// StandAloneSigTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class StandAloneSigTable : IMetadataTable {
+
+               public const int RId = 0x11;
+
+               RowCollection m_rows;
+
+               public StandAloneSigRow this [int index] {
+                       get { return m_rows [index] as StandAloneSigRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal StandAloneSigTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitStandAloneSigTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class StandAloneSigRow : IMetadataRow {
+
+               public uint Signature;
+
+               internal StandAloneSigRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitStandAloneSigRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs
new file mode 100644 (file)
index 0000000..0c6bcdf
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// StringsHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System.Collections;
+       using System.Text;
+
+       internal class StringsHeap : MetadataHeap {
+
+               IDictionary m_strings;
+
+               public string this [uint index] {
+                       get {
+                               string str = m_strings [index] as string;
+                               if (str == null) {
+                                       str = ReadStringAt (index);
+                                       m_strings [index] = str;
+                               }
+                               return str;
+                       }
+                       set { m_strings [index] = value; }
+               }
+
+               internal StringsHeap (MetadataStream stream) : base (stream, MetadataStream.Strings)
+               {
+                       m_strings = new Hashtable ();
+               }
+
+               string ReadStringAt (uint index)
+               {
+                       byte [] data = this.Data;
+                       int heap_length = data.Length;
+
+                       if (index > heap_length - 1)
+                               return string.Empty;
+
+                       int length = 0;
+                       for (int i = (int) index; i < heap_length; i++) {
+                               if (data [i] == 0)
+                                       break;
+
+                               length++;
+                       }
+
+                       return Encoding.UTF8.GetString (data, (int) index, length);
+               }
+
+               public override void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitStringsHeap (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs
new file mode 100644 (file)
index 0000000..cb8a1cc
--- /dev/null
@@ -0,0 +1,115 @@
+//
+// TableCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       internal class TableCollection : ICollection, IMetadataTableVisitable   {
+
+               IMetadataTable [] m_tables = new IMetadataTable [TablesHeap.MaxTableCount];
+
+               TablesHeap m_heap;
+
+               public IMetadataTable this [int index] {
+                       get { return m_tables [index]; }
+                       set { m_tables [index] = value; }
+               }
+
+               public int Count {
+                       get {
+                               return GetList ().Count;
+                       }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               public TablesHeap Heap {
+                       get { return m_heap; }
+               }
+
+               internal TableCollection (TablesHeap heap)
+               {
+                       m_heap = heap;
+               }
+
+               internal void Add (IMetadataTable value)
+               {
+                       m_tables [value.Id] = value;
+               }
+
+               public bool Contains (IMetadataTable value)
+               {
+                       return m_tables [value.Id] != null;
+               }
+
+               internal void Remove (IMetadataTable value)
+               {
+                       m_tables [value.Id] = null;
+               }
+
+               public void CopyTo (Array array, int index)
+               {
+                       GetList ().CopyTo (array, index);
+               }
+
+               internal IList GetList ()
+               {
+                       IList tables = new ArrayList ();
+                       for (int i = 0; i < m_tables.Length; i++) {
+                               IMetadataTable table = m_tables [i];
+                               if (table != null)
+                                       tables.Add (table);
+                       }
+
+                       return tables;
+               }
+
+               public IEnumerator GetEnumerator ()
+               {
+                       return GetList ().GetEnumerator ();
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitTableCollection (this);
+
+                       foreach (IMetadataTable table in GetList ())
+                               table.Accept (visitor);
+
+                       visitor.TerminateTableCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs
new file mode 100644 (file)
index 0000000..c4d502f
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// TablesHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+
+       internal class TablesHeap : MetadataHeap {
+
+               public uint Reserved;
+               public byte MajorVersion;
+               public byte MinorVersion;
+               public byte HeapSizes;
+               public byte Reserved2;
+               public long Valid;
+               public long Sorted;
+
+               TableCollection m_tables;
+
+               public const int MaxTableCount = 45;
+
+               public TableCollection Tables {
+                       get { return m_tables; }
+                       set { m_tables = value; }
+               }
+
+               public IMetadataTable this [int id]
+               {
+                       get { return m_tables [id]; }
+                       set { m_tables [id] = value; }
+               }
+
+               internal TablesHeap (MetadataStream stream) : base(stream, MetadataStream.Tables)
+               {
+               }
+
+               public bool HasTable (int id)
+               {
+                       return (Valid & (1L << id)) != 0;
+               }
+
+               public override void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitTablesHeap (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs
new file mode 100644 (file)
index 0000000..5aafa22
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// TokenType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal enum TokenType : uint {
+               Module                    = 0x00000000,
+               TypeRef                  = 0x01000000,
+               TypeDef                  = 0x02000000,
+               Field                      = 0x04000000,
+               Method                    = 0x06000000,
+               Param                      = 0x08000000,
+               InterfaceImpl      = 0x09000000,
+               MemberRef                  = 0x0a000000,
+               CustomAttribute  = 0x0c000000,
+               Permission                = 0x0e000000,
+               Signature                  = 0x11000000,
+               Event                      = 0x14000000,
+               Property                        = 0x17000000,
+               ModuleRef                  = 0x1a000000,
+               TypeSpec                        = 0x1b000000,
+               Assembly                        = 0x20000000,
+               AssemblyRef              = 0x23000000,
+               File                            = 0x26000000,
+               ExportedType            = 0x27000000,
+               ManifestResource        = 0x28000000,
+               GenericParam                    = 0x2a000000,
+               MethodSpec                      = 0x2b000000,
+               String                    = 0x70000000,
+               Name                            = 0x71000000,
+               BaseType                        = 0x72000000
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs
new file mode 100644 (file)
index 0000000..47b9f7a
--- /dev/null
@@ -0,0 +1,85 @@
+//
+// TypeDefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using Mono.Cecil;
+
+       internal sealed class TypeDefTable : IMetadataTable {
+
+               public const int RId = 0x02;
+
+               RowCollection m_rows;
+
+               public TypeDefRow this [int index] {
+                       get { return m_rows [index] as TypeDefRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal TypeDefTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitTypeDefTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class TypeDefRow : IMetadataRow {
+
+               public TypeAttributes Flags;
+               public uint Name;
+               public uint Namespace;
+               public MetadataToken Extends;
+               public uint FieldList;
+               public uint MethodList;
+
+               internal TypeDefRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitTypeDefRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs
new file mode 100644 (file)
index 0000000..d54ca56
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// TypeRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class TypeRefTable : IMetadataTable {
+
+               public const int RId = 0x01;
+
+               RowCollection m_rows;
+
+               public TypeRefRow this [int index] {
+                       get { return m_rows [index] as TypeRefRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal TypeRefTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitTypeRefTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class TypeRefRow : IMetadataRow {
+
+               public MetadataToken ResolutionScope;
+               public uint Name;
+               public uint Namespace;
+
+               internal TypeRefRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitTypeRefRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs
new file mode 100644 (file)
index 0000000..1a779a0
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// TypeSpecTable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       internal sealed class TypeSpecTable : IMetadataTable {
+
+               public const int RId = 0x1b;
+
+               RowCollection m_rows;
+
+               public TypeSpecRow this [int index] {
+                       get { return m_rows [index] as TypeSpecRow; }
+                       set { m_rows [index] = value; }
+               }
+
+               public RowCollection Rows {
+                       get { return m_rows; }
+                       set { m_rows = value; }
+               }
+
+               public int Id {
+                       get { return RId; }
+               }
+
+               internal TypeSpecTable ()
+               {
+               }
+
+               public void Accept (IMetadataTableVisitor visitor)
+               {
+                       visitor.VisitTypeSpecTable (this);
+                       this.Rows.Accept (visitor.GetRowVisitor ());
+               }
+       }
+
+       internal sealed class TypeSpecRow : IMetadataRow {
+
+               public uint Signature;
+
+               internal TypeSpecRow ()
+               {
+               }
+
+               public void Accept (IMetadataRowVisitor visitor)
+               {
+                       visitor.VisitTypeSpecRow (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs
new file mode 100644 (file)
index 0000000..b27e4f0
--- /dev/null
@@ -0,0 +1,77 @@
+//
+// UserStringsHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System.Collections;
+       using System.Text;
+
+       internal class UserStringsHeap : MetadataHeap {
+
+               readonly IDictionary m_strings;
+
+               public string this [uint offset] {
+                       get {
+                               string us = m_strings [offset] as string;
+                               if (us != null)
+                                       return us;
+
+                               us = ReadStringAt ((int) offset);
+                               if (us != null && us.Length != 0)
+                                       m_strings [offset] = us;
+
+                               return us;
+                       }
+                       set { m_strings [offset] = value; }
+               }
+
+               internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings)
+               {
+                       m_strings = new Hashtable ();
+               }
+
+               string ReadStringAt (int offset)
+               {
+                       int length = Utilities.ReadCompressedInteger (this.Data, offset, out offset) - 1;
+                       if (length < 1)
+                               return string.Empty;
+
+                       char [] chars = new char [length / 2];
+
+                       for (int i = offset, j = 0; i < offset + length; i += 2)
+                               chars [j++] = (char) (Data [i] | (Data [i + 1] << 8));
+
+                       return new string (chars);
+               }
+
+               public override void Accept (IMetadataVisitor visitor)
+               {
+                       visitor.VisitUserStringsHeap (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Utilities.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Utilities.cs
new file mode 100644 (file)
index 0000000..7f76252
--- /dev/null
@@ -0,0 +1,663 @@
+//
+// Utilities.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Sat Feb 16 23:23:29 +0100 2008
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+
+       sealed class Utilities {
+
+               Utilities ()
+               {
+               }
+
+               public static int ReadCompressedInteger (byte [] data, int pos, out int start)
+               {
+                       int integer;
+                       start = pos;
+                       if ((data [pos] & 0x80) == 0) {
+                               integer = data [pos];
+                               start++;
+                       } else if ((data [pos] & 0x40) == 0) {
+                               integer = (data [start] & ~0x80) << 8;
+                               integer |= data [pos + 1];
+                               start += 2;
+                       } else {
+                               integer = (data [start] & ~0xc0) << 24;
+                               integer |= data [pos + 1] << 16;
+                               integer |= data [pos + 2] << 8;
+                               integer |= data [pos + 3];
+                               start += 4;
+                       }
+                       return integer;
+               }
+
+               public static int ReadCompressedSignedInteger (byte [] data, int pos, out int start)
+               {
+                       int integer = ReadCompressedInteger (data, pos, out start) >> 1;
+                       if ((integer & 1) == 0)
+                               return integer;
+
+                       if (integer < 0x40)
+                               return integer - 0x40;
+
+                       if (integer < 0x2000)
+                               return integer - 0x2000;
+
+                       if (integer < 0x10000000)
+                               return integer - 0x10000000;
+
+                       return integer - 0x20000000;
+               }
+
+               public static int WriteCompressedInteger (BinaryWriter writer, int value)
+               {
+                       if (value < 0x80)
+                               writer.Write ((byte) value);
+                       else if (value < 0x4000) {
+                               writer.Write ((byte) (0x80 | (value >> 8)));
+                               writer.Write ((byte) (value & 0xff));
+                       } else {
+                               writer.Write ((byte) ((value >> 24) | 0xc0));
+                               writer.Write ((byte) ((value >> 16) & 0xff));
+                               writer.Write ((byte) ((value >> 8) & 0xff));
+                               writer.Write ((byte) (value & 0xff));
+                       }
+                       return (int) writer.BaseStream.Position;
+               }
+
+               public static MetadataToken GetMetadataToken (CodedIndex cidx, uint data)
+               {
+                       uint rid = 0;
+                       switch (cidx) {
+                       case CodedIndex.TypeDefOrRef :
+                               rid = data >> 2;
+                               switch (data & 3) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.TypeDef, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.TypeRef, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.TypeSpec, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.HasConstant :
+                               rid = data >> 2;
+                               switch (data & 3) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Field, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Param, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.Property, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.HasCustomAttribute :
+                               rid = data >> 5;
+                               switch (data & 31) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Field, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.TypeRef, rid);
+                               case 3 :
+                                       return new MetadataToken (TokenType.TypeDef, rid);
+                               case 4 :
+                                       return new MetadataToken (TokenType.Param, rid);
+                               case 5 :
+                                       return new MetadataToken (TokenType.InterfaceImpl, rid);
+                               case 6 :
+                                       return new MetadataToken (TokenType.MemberRef, rid);
+                               case 7 :
+                                       return new MetadataToken (TokenType.Module, rid);
+                               case 8 :
+                                       return new MetadataToken (TokenType.Permission, rid);
+                               case 9 :
+                                       return new MetadataToken (TokenType.Property, rid);
+                               case 10 :
+                                       return new MetadataToken (TokenType.Event, rid);
+                               case 11 :
+                                       return new MetadataToken (TokenType.Signature, rid);
+                               case 12 :
+                                       return new MetadataToken (TokenType.ModuleRef, rid);
+                               case 13 :
+                                       return new MetadataToken (TokenType.TypeSpec, rid);
+                               case 14 :
+                                       return new MetadataToken (TokenType.Assembly, rid);
+                               case 15 :
+                                       return new MetadataToken (TokenType.AssemblyRef, rid);
+                               case 16 :
+                                       return new MetadataToken (TokenType.File, rid);
+                               case 17 :
+                                       return new MetadataToken (TokenType.ExportedType, rid);
+                               case 18 :
+                                       return new MetadataToken (TokenType.ManifestResource, rid);
+                               case 19 :
+                                       return new MetadataToken (TokenType.GenericParam, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.HasFieldMarshal :
+                               rid = data >> 1;
+                               switch (data & 1) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Field, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Param, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.HasDeclSecurity :
+                               rid = data >> 2;
+                               switch (data & 3) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.TypeDef, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.Assembly, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.MemberRefParent :
+                               rid = data >> 3;
+                               switch (data & 7) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.TypeDef, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.TypeRef, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.ModuleRef, rid);
+                               case 3 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               case 4 :
+                                       return new MetadataToken (TokenType.TypeSpec, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.HasSemantics :
+                               rid = data >> 1;
+                               switch (data & 1) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Event, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Property, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.MethodDefOrRef :
+                               rid = data >> 1;
+                               switch (data & 1) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.MemberRef, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.MemberForwarded :
+                               rid = data >> 1;
+                               switch (data & 1) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Field, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.Implementation :
+                               rid = data >> 2;
+                               switch (data & 3) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.File, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.AssemblyRef, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.ExportedType, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.CustomAttributeType :
+                               rid = data >> 3;
+                               switch (data & 7) {
+                               case 2 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               case 3 :
+                                       return new MetadataToken (TokenType.MemberRef, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.ResolutionScope :
+                               rid = data >> 2;
+                               switch (data & 3) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.Module, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.ModuleRef, rid);
+                               case 2 :
+                                       return new MetadataToken (TokenType.AssemblyRef, rid);
+                               case 3 :
+                                       return new MetadataToken (TokenType.TypeRef, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       case CodedIndex.TypeOrMethodDef :
+                               rid = data >> 1;
+                               switch (data & 1) {
+                               case 0 :
+                                       return new MetadataToken (TokenType.TypeDef, rid);
+                               case 1 :
+                                       return new MetadataToken (TokenType.Method, rid);
+                               default :
+                                       return MetadataToken.Zero;
+                               }
+                       default :
+                               return MetadataToken.Zero;
+                       }
+               }
+
+               public static uint CompressMetadataToken (CodedIndex cidx, MetadataToken token)
+               {
+                       uint ret = 0;
+                       if (token.RID == 0)
+                               return ret;
+                       switch (cidx) {
+                       case CodedIndex.TypeDefOrRef :
+                               ret = token.RID << 2;
+                               switch (token.TokenType) {
+                               case TokenType.TypeDef :
+                                       return ret | 0;
+                               case TokenType.TypeRef :
+                                       return ret | 1;
+                               case TokenType.TypeSpec :
+                                       return ret | 2;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for TypeDefOrRef");
+                               }
+                       case CodedIndex.HasConstant :
+                               ret = token.RID << 2;
+                               switch (token.TokenType) {
+                               case TokenType.Field :
+                                       return ret | 0;
+                               case TokenType.Param :
+                                       return ret | 1;
+                               case TokenType.Property :
+                                       return ret | 2;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for HasConstant");
+                               }
+                       case CodedIndex.HasCustomAttribute :
+                               ret = token.RID << 5;
+                               switch (token.TokenType) {
+                               case TokenType.Method :
+                                       return ret | 0;
+                               case TokenType.Field :
+                                       return ret | 1;
+                               case TokenType.TypeRef :
+                                       return ret | 2;
+                               case TokenType.TypeDef :
+                                       return ret | 3;
+                               case TokenType.Param :
+                                       return ret | 4;
+                               case TokenType.InterfaceImpl :
+                                       return ret | 5;
+                               case TokenType.MemberRef :
+                                       return ret | 6;
+                               case TokenType.Module :
+                                       return ret | 7;
+                               case TokenType.Permission :
+                                       return ret | 8;
+                               case TokenType.Property :
+                                       return ret | 9;
+                               case TokenType.Event :
+                                       return ret | 10;
+                               case TokenType.Signature :
+                                       return ret | 11;
+                               case TokenType.ModuleRef :
+                                       return ret | 12;
+                               case TokenType.TypeSpec :
+                                       return ret | 13;
+                               case TokenType.Assembly :
+                                       return ret | 14;
+                               case TokenType.AssemblyRef :
+                                       return ret | 15;
+                               case TokenType.File :
+                                       return ret | 16;
+                               case TokenType.ExportedType :
+                                       return ret | 17;
+                               case TokenType.ManifestResource :
+                                       return ret | 18;
+                               case TokenType.GenericParam :
+                                       return ret | 19;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for HasCustomAttribute");
+                               }
+                       case CodedIndex.HasFieldMarshal :
+                               ret = token.RID << 1;
+                               switch (token.TokenType) {
+                               case TokenType.Field :
+                                       return ret | 0;
+                               case TokenType.Param :
+                                       return ret | 1;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for HasFieldMarshal");
+                               }
+                       case CodedIndex.HasDeclSecurity :
+                               ret = token.RID << 2;
+                               switch (token.TokenType) {
+                               case TokenType.TypeDef :
+                                       return ret | 0;
+                               case TokenType.Method :
+                                       return ret | 1;
+                               case TokenType.Assembly :
+                                       return ret | 2;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for HasDeclSecurity");
+                               }
+                       case CodedIndex.MemberRefParent :
+                               ret = token.RID << 3;
+                               switch (token.TokenType) {
+                               case TokenType.TypeDef :
+                                       return ret | 0;
+                               case TokenType.TypeRef :
+                                       return ret | 1;
+                               case TokenType.ModuleRef :
+                                       return ret | 2;
+                               case TokenType.Method :
+                                       return ret | 3;
+                               case TokenType.TypeSpec :
+                                       return ret | 4;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for MemberRefParent");
+                               }
+                       case CodedIndex.HasSemantics :
+                               ret = token.RID << 1;
+                               switch (token.TokenType) {
+                               case TokenType.Event :
+                                       return ret | 0;
+                               case TokenType.Property :
+                                       return ret | 1;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for HasSemantics");
+                               }
+                       case CodedIndex.MethodDefOrRef :
+                               ret = token.RID << 1;
+                               switch (token.TokenType) {
+                               case TokenType.Method :
+                                       return ret | 0;
+                               case TokenType.MemberRef :
+                                       return ret | 1;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for MethodDefOrRef");
+                               }
+                       case CodedIndex.MemberForwarded :
+                               ret = token.RID << 1;
+                               switch (token.TokenType) {
+                               case TokenType.Field :
+                                       return ret | 0;
+                               case TokenType.Method :
+                                       return ret | 1;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for MemberForwarded");
+                               }
+                       case CodedIndex.Implementation :
+                               ret = token.RID << 2;
+                               switch (token.TokenType) {
+                               case TokenType.File :
+                                       return ret | 0;
+                               case TokenType.AssemblyRef :
+                                       return ret | 1;
+                               case TokenType.ExportedType :
+                                       return ret | 2;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for Implementation");
+                               }
+                       case CodedIndex.CustomAttributeType :
+                               ret = token.RID << 3;
+                               switch (token.TokenType) {
+                               case TokenType.Method :
+                                       return ret | 2;
+                               case TokenType.MemberRef :
+                                       return ret | 3;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for CustomAttributeType");
+                               }
+                       case CodedIndex.ResolutionScope :
+                               ret = token.RID << 2;
+                               switch (token.TokenType) {
+                               case TokenType.Module :
+                                       return ret | 0;
+                               case TokenType.ModuleRef :
+                                       return ret | 1;
+                               case TokenType.AssemblyRef :
+                                       return ret | 2;
+                               case TokenType.TypeRef :
+                                       return ret | 3;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for ResolutionScope");
+                               }
+                       case CodedIndex.TypeOrMethodDef :
+                               ret = token.RID << 1;
+                               switch (token.TokenType) {
+                               case TokenType.TypeDef :
+                                       return ret | 0;
+                               case TokenType.Method :
+                                       return ret | 1;
+                               default :
+                                       throw new MetadataFormatException("Non valid Token for TypeOrMethodDef");
+                               }
+                       default :
+                               throw new MetadataFormatException ("Non valid CodedIndex");
+                       }
+               }
+
+               internal static Type GetCorrespondingTable (TokenType t)
+               {
+                       switch (t) {
+                       case TokenType.Assembly :
+                               return typeof (AssemblyTable);
+                       case TokenType.AssemblyRef :
+                               return typeof (AssemblyRefTable);
+                       case TokenType.CustomAttribute :
+                               return typeof (CustomAttributeTable);
+                       case TokenType.Event :
+                               return typeof (EventTable);
+                       case TokenType.ExportedType :
+                               return typeof (ExportedTypeTable);
+                       case TokenType.Field :
+                               return typeof (FieldTable);
+                       case TokenType.File :
+                               return typeof (FileTable);
+                       case TokenType.InterfaceImpl :
+                               return typeof (InterfaceImplTable);
+                       case TokenType.MemberRef :
+                               return typeof (MemberRefTable);
+                       case TokenType.Method :
+                               return typeof (MethodTable);
+                       case TokenType.Module :
+                               return typeof (ModuleTable);
+                       case TokenType.ModuleRef :
+                               return typeof (ModuleRefTable);
+                       case TokenType.Param :
+                               return typeof (ParamTable);
+                       case TokenType.Permission :
+                               return typeof (DeclSecurityTable);
+                       case TokenType.Property :
+                               return typeof (PropertyTable);
+                       case TokenType.Signature :
+                               return typeof (StandAloneSigTable);
+                       case TokenType.TypeDef :
+                               return typeof (TypeDefTable);
+                       case TokenType.TypeRef :
+                               return typeof (TypeRefTable);
+                       case TokenType.TypeSpec :
+                               return typeof (TypeSpecTable);
+                       default :
+                               return null;
+                       }
+               }
+
+               internal delegate int TableRowCounter (int rid);
+
+               internal static int GetCodedIndexSize (CodedIndex ci, TableRowCounter rowCounter, int [] codedIndexCache)
+               {
+                       int bits = 0, max = 0, index = (int) ci;
+                       if (codedIndexCache [index] != 0)
+                               return codedIndexCache [index];
+
+                       int res = 0;
+                       int [] rids;
+                       switch (ci) {
+                       case CodedIndex.TypeDefOrRef :
+                               bits = 2;
+                               rids = new int [3];
+                               rids [0] = TypeDefTable.RId;
+                               rids [1] = TypeRefTable.RId;
+                               rids [2] = TypeSpecTable.RId;
+                               break;
+                       case CodedIndex.HasConstant :
+                               bits = 2;
+                               rids = new int [3];
+                               rids [0] = FieldTable.RId;
+                               rids [1] = ParamTable.RId;
+                               rids [2] = PropertyTable.RId;
+                               break;
+                       case CodedIndex.HasCustomAttribute :
+                               bits = 5;
+                               rids = new int [20];
+                               rids [0] = MethodTable.RId;
+                               rids [1] = FieldTable.RId;
+                               rids [2] = TypeRefTable.RId;
+                               rids [3] = TypeDefTable.RId;
+                               rids [4] = ParamTable.RId;
+                               rids [5] = InterfaceImplTable.RId;
+                               rids [6] = MemberRefTable.RId;
+                               rids [7] = ModuleTable.RId;
+                               rids [8] = DeclSecurityTable.RId;
+                               rids [9] = PropertyTable.RId;
+                               rids [10] = EventTable.RId;
+                               rids [11] = StandAloneSigTable.RId;
+                               rids [12] = ModuleRefTable.RId;
+                               rids [13] = TypeSpecTable.RId;
+                               rids [14] = AssemblyTable.RId;
+                               rids [15] = AssemblyRefTable.RId;
+                               rids [16] = FileTable.RId;
+                               rids [17] = ExportedTypeTable.RId;
+                               rids [18] = ManifestResourceTable.RId;
+                               rids [19] = GenericParamTable.RId;
+                               break;
+                       case CodedIndex.HasFieldMarshal :
+                               bits = 1;
+                               rids = new int [2];
+                               rids [0] = FieldTable.RId;
+                               rids [1] = ParamTable.RId;
+                               break;
+                       case CodedIndex.HasDeclSecurity :
+                               bits = 2;
+                               rids = new int [3];
+                               rids [0] = TypeDefTable.RId;
+                               rids [1] = MethodTable.RId;
+                               rids [2] = AssemblyTable.RId;
+                               break;
+                       case CodedIndex.MemberRefParent :
+                               bits = 3;
+                               rids = new int [5];
+                               rids [0] = TypeDefTable.RId;
+                               rids [1] = TypeRefTable.RId;
+                               rids [2] = ModuleRefTable.RId;
+                               rids [3] = MethodTable.RId;
+                               rids [4] = TypeSpecTable.RId;
+                               break;
+                       case CodedIndex.HasSemantics :
+                               bits = 1;
+                               rids = new int [2];
+                               rids [0] = EventTable.RId;
+                               rids [1] = PropertyTable.RId;
+                               break;
+                       case CodedIndex.MethodDefOrRef :
+                               bits = 1;
+                               rids = new int [2];
+                               rids [0] = MethodTable.RId;
+                               rids [1] = MemberRefTable.RId;
+                               break;
+                       case CodedIndex.MemberForwarded :
+                               bits = 1;
+                               rids = new int [2];
+                               rids [0] = FieldTable.RId;
+                               rids [1] = MethodTable.RId;
+                               break;
+                       case CodedIndex.Implementation :
+                               bits = 2;
+                               rids = new int [3];
+                               rids [0] = FileTable.RId;
+                               rids [1] = AssemblyRefTable.RId;
+                               rids [2] = ExportedTypeTable.RId;
+                               break;
+                       case CodedIndex.CustomAttributeType :
+                               bits = 3;
+                               rids = new int [2];
+                               rids [0] = MethodTable.RId;
+                               rids [1] = MemberRefTable.RId;
+                               break;
+                       case CodedIndex.ResolutionScope :
+                               bits = 2;
+                               rids = new int [4];
+                               rids [0] = ModuleTable.RId;
+                               rids [1] = ModuleRefTable.RId;
+                               rids [2] = AssemblyRefTable.RId;
+                               rids [3] = TypeRefTable.RId;
+                               break;
+                       case CodedIndex.TypeOrMethodDef :
+                               bits = 1;
+                               rids = new int [2];
+                               rids [0] = TypeDefTable.RId;
+                               rids [1] = MethodTable.RId;
+                               break;
+                       default :
+                               throw new MetadataFormatException ("Non valid CodedIndex");
+                       }
+
+                       for (int i = 0; i < rids.Length; i++) {
+                               int rows = rowCounter (rids [i]);
+                               if (rows > max) max = rows;
+                       }
+
+                       res = max < (1 << (16 - bits)) ? 2 : 4;
+                       codedIndexCache [index] = res;
+                       return res;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Array.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Array.cs
new file mode 100644 (file)
index 0000000..c708963
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// Array.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class ARRAY : SigType {
+
+               public CustomMod [] CustomMods;
+               public SigType Type;
+               public ArrayShape Shape;
+
+               public ARRAY () : base (ElementType.Array)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/ArrayShape.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ArrayShape.cs
new file mode 100644 (file)
index 0000000..7cf3940
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// ArrayShape.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class ArrayShape {
+
+               public int Rank;
+               public int NumSizes;
+               public int [] Sizes;
+               public int NumLoBounds;
+               public int [] LoBounds;
+
+               public ArrayShape ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/BaseSignatureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/BaseSignatureVisitor.cs
new file mode 100644 (file)
index 0000000..0a37a5b
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// BaseSignatureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal abstract class BaseSignatureVisitor : ISignatureVisitor {
+
+               public virtual void VisitMethodDefSig (MethodDefSig methodDef)
+               {
+               }
+
+               public virtual void VisitMethodRefSig (MethodRefSig methodRef)
+               {
+               }
+
+               public virtual void VisitFieldSig (FieldSig field)
+               {
+               }
+
+               public virtual void VisitPropertySig (PropertySig property)
+               {
+               }
+
+               public virtual void VisitLocalVarSig (LocalVarSig localvar)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Class.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Class.cs
new file mode 100644 (file)
index 0000000..ef908e6
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// Class.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class CLASS : SigType {
+
+               public MetadataToken Type;
+
+               public CLASS () : base (ElementType.Class)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Constraint.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Constraint.cs
new file mode 100644 (file)
index 0000000..416707b
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// Constraints.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal enum Constraint : byte {
+               None = 0x0,
+               Pinned = (byte) ElementType.Pinned
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs
new file mode 100644 (file)
index 0000000..3ad8e9c
--- /dev/null
@@ -0,0 +1,84 @@
+//
+// CustomAttrib.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class CustomAttrib {
+
+               public const ushort StdProlog = 0x0001;
+
+               public MethodReference Constructor;
+
+               public ushort Prolog;
+               public FixedArg [] FixedArgs;
+               public ushort NumNamed;
+               public NamedArg [] NamedArgs;
+               public bool Read;
+
+               public CustomAttrib (MethodReference ctor)
+               {
+                       Constructor = ctor;
+               }
+
+               internal struct FixedArg {
+
+                       public bool SzArray;
+                       public uint NumElem;
+                       public Elem [] Elems;
+
+                       internal static FixedArg [] Empty = new FixedArg [0];
+               }
+
+               internal struct Elem {
+
+                       public bool Simple;
+                       public bool String;
+                       public bool Type;
+                       public bool BoxedValueType;
+
+                       public ElementType FieldOrPropType;
+                       public object Value;
+
+                       public TypeReference ElemType;
+               }
+
+               internal struct NamedArg {
+
+                       public bool Field;
+                       public bool Property;
+
+                       public ElementType FieldOrPropType;
+                       public string FieldOrPropName;
+                       public FixedArg FixedArg;
+
+                       internal static NamedArg [] Empty = new NamedArg [0];
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs
new file mode 100644 (file)
index 0000000..195dc4f
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// CustomMod.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class CustomMod {
+
+               public static CustomMod [] EmptyCustomMod = new CustomMod [0];
+
+               internal enum CMODType : byte {
+                       None = 0x0,
+                       OPT = (byte) ElementType.CModOpt,
+                       REQD = (byte) ElementType.CModReqD
+               }
+
+               public CMODType CMOD;
+               public MetadataToken TypeDefOrRef;
+
+               public CustomMod ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/FieldSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/FieldSig.cs
new file mode 100644 (file)
index 0000000..a01c058
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// FieldSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class FieldSig : Signature {
+
+               public bool Field;
+               public CustomMod [] CustomMods;
+               public SigType Type;
+
+               public FieldSig () : base ()
+               {
+               }
+
+               public FieldSig (uint blobIndex) : base (blobIndex)
+               {
+               }
+
+               public override void Accept (ISignatureVisitor visitor)
+               {
+                       visitor.VisitFieldSig (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/FnPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/FnPtr.cs
new file mode 100644 (file)
index 0000000..02fc330
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// FnPtr.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class FNPTR : SigType {
+
+               public MethodSig Method;
+
+               public FNPTR () : base (ElementType.FnPtr)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericArg.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericArg.cs
new file mode 100644 (file)
index 0000000..ab8eb84
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// GenericArg.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       sealed class GenericArg {
+
+               public CustomMod [] CustomMods;
+               public SigType Type;
+
+               public GenericArg (SigType type)
+               {
+                       Type = type;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInst.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInst.cs
new file mode 100644 (file)
index 0000000..02bd111
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// GenericInst.cs
+//
+// Author:
+//     Martin Baulig  <baulig@ximian.com>
+//  Jb Evain  <jbevain@gmail.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class GENERICINST : SigType {
+
+               public bool ValueType;
+               public MetadataToken Type;
+
+               public GenericInstSignature Signature;
+
+               public GENERICINST () : base (ElementType.GenericInst)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInstSignature.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInstSignature.cs
new file mode 100644 (file)
index 0000000..94d41c4
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// GenericInstSignature.cs
+//
+// Author:
+//     Martin Baulig  <martin@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class GenericInstSignature {
+
+               public int Arity;
+               public GenericArg [] Types;
+
+               public GenericInstSignature ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitable.cs
new file mode 100644 (file)
index 0000000..81374f0
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// ISignatureVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal interface ISignatureVisitable {
+
+               void Accept (ISignatureVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitor.cs
new file mode 100644 (file)
index 0000000..e473e87
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// ISignatureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal interface ISignatureVisitor {
+
+               void VisitMethodDefSig (MethodDefSig methodDef);
+               void VisitMethodRefSig (MethodRefSig methodRef);
+               void VisitFieldSig (FieldSig field);
+               void VisitPropertySig (PropertySig property);
+               void VisitLocalVarSig (LocalVarSig localvar);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/InputOutputItem.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/InputOutputItem.cs
new file mode 100644 (file)
index 0000000..5240a81
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// InputOutputItem.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal abstract class InputOutputItem {
+
+               public CustomMod [] CustomMods;
+               public bool ByRef;
+               public SigType Type;
+               public bool TypedByRef;
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs
new file mode 100644 (file)
index 0000000..5f8f737
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// LocalVarSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class LocalVarSig : Signature {
+
+               public bool Local;
+               public int Count;
+               public LocalVariable [] LocalVariables;
+
+               public LocalVarSig () : base ()
+               {
+               }
+
+               public LocalVarSig (uint blobIndex) : base (blobIndex)
+               {
+               }
+
+               public override void Accept (ISignatureVisitor visitor)
+               {
+                       visitor.VisitLocalVarSig (this);
+               }
+
+               internal struct LocalVariable {
+
+                       public CustomMod [] CustomMods;
+                       public Constraint Constraint;
+                       public bool ByRef;
+                       public SigType Type;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MVar.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MVar.cs
new file mode 100644 (file)
index 0000000..3fca4a4
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// MVar.cs
+//
+// Author:
+//     Martin Baulig  <martin@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class MVAR : SigType {
+
+               public int Index;
+
+               public MVAR (int index) : base (ElementType.MVar)
+               {
+                       this.Index = index;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs
new file mode 100644 (file)
index 0000000..89b7102
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// MarshalSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using System;
+
+       using Mono.Cecil;
+
+       internal sealed class MarshalSig {
+
+               public NativeType NativeInstrinsic;
+               public IMarshalSigSpec Spec;
+
+               public MarshalSig (NativeType nt)
+               {
+                       this.NativeInstrinsic = nt;
+               }
+
+               internal interface IMarshalSigSpec {
+               }
+
+               internal sealed class Array : IMarshalSigSpec {
+
+                       public NativeType ArrayElemType;
+                       public int ParamNum;
+                       public int ElemMult;
+                       public int NumElem;
+
+                       public Array ()
+                       {
+                               this.ParamNum = 0;
+                               this.ElemMult = 0;
+                               this.NumElem = 0;
+                       }
+               }
+
+               internal sealed class CustomMarshaler : IMarshalSigSpec {
+
+                       public string Guid;
+                       public string UnmanagedType;
+                       public string ManagedType;
+                       public string Cookie;
+               }
+
+               internal sealed class FixedArray : IMarshalSigSpec {
+
+                       public int NumElem;
+                       public NativeType ArrayElemType;
+
+                       public FixedArray ()
+                       {
+                               this.NumElem = 0;
+                               this.ArrayElemType = NativeType.NONE;
+                       }
+               }
+
+               internal sealed class SafeArray : IMarshalSigSpec {
+
+                       public VariantType ArrayElemType;
+               }
+
+               internal sealed class FixedSysString : IMarshalSigSpec {
+
+                       public int Size;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodDefSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodDefSig.cs
new file mode 100644 (file)
index 0000000..b7e2e58
--- /dev/null
@@ -0,0 +1,48 @@
+//
+// MethodDefSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class MethodDefSig : MethodRefSig {
+
+               public int GenericParameterCount;
+
+               public MethodDefSig () : this (0)
+               {
+               }
+
+               public MethodDefSig (uint blobIndex) : base (blobIndex)
+               {
+               }
+
+               public override void Accept (ISignatureVisitor visitor)
+               {
+                       visitor.VisitMethodDefSig (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodRefSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodRefSig.cs
new file mode 100644 (file)
index 0000000..63cc35b
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// MethodRefSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal class MethodRefSig : MethodSig {
+
+               public int Sentinel;
+
+               public MethodRefSig () : this (0)
+               {
+               }
+
+               public MethodRefSig (uint blobIndex) : base (blobIndex)
+               {
+                       Sentinel = -1;
+               }
+
+               public override void Accept (ISignatureVisitor visitor)
+               {
+                       visitor.VisitMethodRefSig (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSig.cs
new file mode 100644 (file)
index 0000000..3b65809
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// MethodSig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Cecil;
+
+namespace Mono.Cecil.Signatures {
+
+       internal abstract class MethodSig : Signature {
+
+               public bool HasThis;
+               public bool ExplicitThis;
+               public MethodCallingConvention MethCallConv;
+               public int ParamCount;
+               public RetType RetType;
+               public Param [] Parameters;
+
+               public MethodSig () : base ()
+               {
+               }
+
+               public MethodSig (uint blobIndex) : base (blobIndex)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSpec.cs
new file mode 100644 (file)
index 0000000..0ad0f8b
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// TypeSpec.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class MethodSpec {
+
+               public GenericInstSignature Signature;
+
+               public MethodSpec (GenericInstSignature sig)
+               {
+                       this.Signature = sig;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Param.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Param.cs
new file mode 100644 (file)
index 0000000..0bd7a0d
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// Param.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class Param : InputOutputItem {
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/PropertySig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/PropertySig.cs
new file mode 100644 (file)
index 0000000..5db0820
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// PropertySig.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class PropertySig : Signature {
+
+               public bool Property;
+               public int ParamCount;
+               public CustomMod [] CustomMods;
+               public SigType Type;
+               public Param [] Parameters;
+
+               public PropertySig () : base ()
+               {
+               }
+
+               public PropertySig (uint blobIndex) : base (blobIndex)
+               {
+               }
+
+               public override void Accept (ISignatureVisitor visitor)
+               {
+                       visitor.VisitPropertySig (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Ptr.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Ptr.cs
new file mode 100644 (file)
index 0000000..e95394d
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// Ptr.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class PTR : SigType {
+
+               public CustomMod [] CustomMods;
+               public SigType PtrType;
+               public bool Void;
+
+               public PTR () : base (ElementType.Ptr)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/RetType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/RetType.cs
new file mode 100644 (file)
index 0000000..6541211
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// RetType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class RetType : InputOutputItem {
+
+               public bool Void;
+
+               public RetType ()
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/SigType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SigType.cs
new file mode 100644 (file)
index 0000000..6e2d19b
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// SigType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal class SigType {
+
+               public ElementType ElementType;
+
+               public SigType (ElementType elem)
+               {
+                       ElementType = elem;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Signature.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Signature.cs
new file mode 100644 (file)
index 0000000..5d9e254
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// Signature.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using System;
+
+       internal abstract class Signature : ISignatureVisitable {
+
+               public byte CallingConvention;
+               public uint BlobIndex;
+
+               public Signature (uint blobIndex)
+               {
+                       BlobIndex = blobIndex;
+               }
+
+               public Signature ()
+               {
+                       BlobIndex = 0;
+               }
+
+               public abstract void Accept (ISignatureVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureReader.cs
new file mode 100644 (file)
index 0000000..3e84b25
--- /dev/null
@@ -0,0 +1,991 @@
+//
+// SignatureReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class SignatureReader : BaseSignatureVisitor {
+
+               MetadataRoot m_root;
+               ReflectionReader m_reflectReader;
+               byte [] m_blobData;
+
+               IDictionary m_signatures;
+
+               IAssemblyResolver AssemblyResolver {
+                       get { return m_reflectReader.Module.Assembly.Resolver; }
+               }
+
+               public SignatureReader (MetadataRoot root, ReflectionReader reflectReader)
+               {
+                       m_root = root;
+                       m_reflectReader = reflectReader;
+
+                       m_blobData = m_root.Streams.BlobHeap != null ? m_root.Streams.BlobHeap.Data : new byte [0];
+
+                       m_signatures = new Hashtable ();
+               }
+
+               public FieldSig GetFieldSig (uint index)
+               {
+                       FieldSig f = m_signatures [index] as FieldSig;
+                       if (f == null) {
+                               f = new FieldSig (index);
+                               f.Accept (this);
+                               m_signatures [index] = f;
+                       }
+                       return f;
+               }
+
+               public PropertySig GetPropSig (uint index)
+               {
+                       PropertySig p = m_signatures [index] as PropertySig;
+                       if (p == null) {
+                               p = new PropertySig (index);
+                               p.Accept (this);
+                               m_signatures [index] = p;
+                       }
+                       return p;
+               }
+
+               public MethodDefSig GetMethodDefSig (uint index)
+               {
+                       MethodDefSig m = m_signatures [index] as MethodDefSig;
+                       if (m == null) {
+                               m = new MethodDefSig (index);
+                               m.Accept (this);
+                               m_signatures [index] = m;
+                       }
+                       return m;
+               }
+
+               public MethodRefSig GetMethodRefSig (uint index)
+               {
+                       MethodRefSig m = m_signatures [index] as MethodRefSig;
+                       if (m == null) {
+                               m = new MethodRefSig (index);
+                               m.Accept (this);
+                               m_signatures [index] = m;
+                       }
+                       return m;
+               }
+
+               public TypeSpec GetTypeSpec (uint index)
+               {
+                       TypeSpec ts = m_signatures [index] as TypeSpec;
+
+                       if (ts == null) {
+                               ts = ReadTypeSpec (m_blobData, (int) index);
+                               m_signatures [index] = ts;
+                       }
+
+                       return ts;
+               }
+
+               public MethodSpec GetMethodSpec (uint index)
+               {
+                       MethodSpec ms = m_signatures [index] as MethodSpec;
+
+                       if (ms == null) {
+                               ms = ReadMethodSpec (m_blobData, (int) index);
+                               m_signatures [index] = ms;
+                       }
+
+                       return ms;
+               }
+
+               public LocalVarSig GetLocalVarSig (uint index)
+               {
+                       LocalVarSig lv = m_signatures [index] as LocalVarSig;
+                       if (lv == null) {
+                               lv = new LocalVarSig (index);
+                               lv.Accept (this);
+                               m_signatures [index] = lv;
+                       }
+                       return lv;
+               }
+
+               public CustomAttrib GetCustomAttrib (uint index, MethodReference ctor)
+               {
+                       return GetCustomAttrib (index, ctor, false);
+               }
+
+               public CustomAttrib GetCustomAttrib (uint index, MethodReference ctor, bool resolve)
+               {
+                       return ReadCustomAttrib ((int) index, ctor, resolve);
+               }
+
+               public CustomAttrib GetCustomAttrib (byte [] data, MethodReference ctor)
+               {
+                       return GetCustomAttrib (data, ctor, false);
+               }
+
+               public CustomAttrib GetCustomAttrib (byte [] data, MethodReference ctor, bool resolve)
+               {
+                       BinaryReader br = new BinaryReader (new MemoryStream (data));
+                       return ReadCustomAttrib (br, data, ctor, resolve);
+               }
+
+               public Signature GetMemberRefSig (TokenType tt, uint index)
+               {
+                       int start, callconv;
+                       Utilities.ReadCompressedInteger (m_blobData, (int) index, out start);
+                       callconv = m_blobData [start];
+                       if ((callconv & 0x5) == 0x5 || (callconv & 0x10) == 0x10) // vararg || generic?
+                               return GetMethodDefSig (index);
+                       if ((callconv & 0x6) != 0) // field ?
+                               return GetFieldSig (index);
+
+                       switch (tt) {
+                       case TokenType.TypeDef :
+                       case TokenType.TypeRef :
+                       case TokenType.TypeSpec :
+                               return GetMethodRefSig (index);
+                       case TokenType.ModuleRef :
+                       case TokenType.Method :
+                               return GetMethodDefSig (index);
+                       }
+                       return null;
+               }
+
+               public MarshalSig GetMarshalSig (uint index)
+               {
+                       MarshalSig ms = m_signatures [index] as MarshalSig;
+                       if (ms == null) {
+                               byte [] data = m_root.Streams.BlobHeap.Read (index);
+                               ms = ReadMarshalSig (data);
+                               m_signatures [index] = ms;
+                       }
+                       return ms;
+               }
+
+               public MethodSig GetStandAloneMethodSig (uint index)
+               {
+                       byte [] data = m_root.Streams.BlobHeap.Read (index);
+                       int start;
+                       if ((data [0] & 0x5) > 0) {
+                               MethodRefSig mrs = new MethodRefSig (index);
+                               ReadMethodRefSig (mrs, data, 0, out start);
+                               return mrs;
+                       } else {
+                               MethodDefSig mds = new MethodDefSig (index);
+                               ReadMethodDefSig (mds, data, 0, out start);
+                               return mds;
+                       }
+               }
+
+               public override void VisitMethodDefSig (MethodDefSig methodDef)
+               {
+                       int start;
+                       ReadMethodDefSig (methodDef, m_root.Streams.BlobHeap.Read (methodDef.BlobIndex), 0, out start);
+               }
+
+               public override void VisitMethodRefSig (MethodRefSig methodRef)
+               {
+                       int start;
+                       ReadMethodRefSig (methodRef, m_root.Streams.BlobHeap.Read (methodRef.BlobIndex), 0, out start);
+               }
+
+               public override void VisitFieldSig (FieldSig field)
+               {
+                       int start;
+                       Utilities.ReadCompressedInteger (m_blobData, (int) field.BlobIndex, out start);
+                       field.CallingConvention = m_blobData [start];
+                       field.Field = (field.CallingConvention & 0x6) != 0;
+                       field.CustomMods = ReadCustomMods (m_blobData, start + 1, out start);
+                       field.Type = ReadType (m_blobData, start, out start);
+               }
+
+               public override void VisitPropertySig (PropertySig property)
+               {
+                       int start;
+                       Utilities.ReadCompressedInteger (m_blobData, (int) property.BlobIndex, out start);
+                       property.CallingConvention = m_blobData [start];
+                       property.Property = (property.CallingConvention & 0x8) != 0;
+                       property.ParamCount = Utilities.ReadCompressedInteger (m_blobData, start + 1, out start);
+                       property.CustomMods = ReadCustomMods (m_blobData, start, out start);
+                       property.Type = ReadType (m_blobData, start, out start);
+                       property.Parameters = ReadParameters (property.ParamCount, m_blobData, start, out start);
+               }
+
+               public override void VisitLocalVarSig (LocalVarSig localvar)
+               {
+                       int start;
+                       Utilities.ReadCompressedInteger (m_blobData, (int) localvar.BlobIndex, out start);
+                       localvar.CallingConvention = m_blobData [start];
+                       localvar.Local = (localvar.CallingConvention & 0x7) != 0;
+                       localvar.Count = Utilities.ReadCompressedInteger (m_blobData, start + 1, out start);
+                       localvar.LocalVariables = ReadLocalVariables (localvar.Count, m_blobData, start);
+               }
+
+               void ReadMethodDefSig (MethodDefSig methodDef, byte [] data, int pos, out int start)
+               {
+                       methodDef.CallingConvention = data [pos];
+                       start = pos + 1;
+                       methodDef.HasThis = (methodDef.CallingConvention & 0x20) != 0;
+                       methodDef.ExplicitThis = (methodDef.CallingConvention & 0x40) != 0;
+                       if ((methodDef.CallingConvention & 0x5) != 0)
+                               methodDef.MethCallConv |= MethodCallingConvention.VarArg;
+                       else if ((methodDef.CallingConvention & 0x10) != 0) {
+                               methodDef.MethCallConv |= MethodCallingConvention.Generic;
+                               methodDef.GenericParameterCount = Utilities.ReadCompressedInteger (data, start, out start);
+                       } else
+                               methodDef.MethCallConv |= MethodCallingConvention.Default;
+
+                       methodDef.ParamCount = Utilities.ReadCompressedInteger (data, start, out start);
+                       methodDef.RetType = ReadRetType (data, start, out start);
+                       int sentpos;
+                       methodDef.Parameters = ReadParameters (methodDef.ParamCount, data, start, out start, out sentpos);
+                       methodDef.Sentinel = sentpos;
+               }
+
+               void ReadMethodRefSig (MethodRefSig methodRef, byte [] data, int pos, out int start)
+               {
+                       methodRef.CallingConvention = data [pos];
+                       start = pos + 1;
+                       methodRef.HasThis = (methodRef.CallingConvention & 0x20) != 0;
+                       methodRef.ExplicitThis = (methodRef.CallingConvention & 0x40) != 0;
+                       if ((methodRef.CallingConvention & 0x1) != 0)
+                               methodRef.MethCallConv |= MethodCallingConvention.C;
+                       else if ((methodRef.CallingConvention & 0x2) != 0)
+                               methodRef.MethCallConv |= MethodCallingConvention.StdCall;
+                       else if ((methodRef.CallingConvention & 0x3) != 0)
+                               methodRef.MethCallConv |= MethodCallingConvention.ThisCall;
+                       else if ((methodRef.CallingConvention & 0x4) != 0)
+                               methodRef.MethCallConv |= MethodCallingConvention.FastCall;
+                       else if ((methodRef.CallingConvention & 0x5) != 0)
+                               methodRef.MethCallConv |= MethodCallingConvention.VarArg;
+                       else
+                               methodRef.MethCallConv |= MethodCallingConvention.Default;
+                       methodRef.ParamCount = Utilities.ReadCompressedInteger (data, start, out start);
+                       methodRef.RetType = ReadRetType (data, start, out start);
+                       int sentpos;
+                       methodRef.Parameters = ReadParameters (methodRef.ParamCount, data, start, out start, out sentpos);
+                       methodRef.Sentinel = sentpos;
+               }
+
+               LocalVarSig.LocalVariable [] ReadLocalVariables (int length, byte [] data, int pos)
+               {
+                       int start = pos;
+                       LocalVarSig.LocalVariable [] types = new LocalVarSig.LocalVariable [length];
+                       for (int i = 0; i < length; i++)
+                               types [i] = ReadLocalVariable (data, start, out start);
+                       return types;
+               }
+
+               LocalVarSig.LocalVariable ReadLocalVariable (byte [] data, int pos, out int start)
+               {
+                       start = pos;
+                       LocalVarSig.LocalVariable lv = new LocalVarSig.LocalVariable ();
+                       lv.ByRef = false;
+                       int cursor;
+                       while (true) {
+                               lv.CustomMods = ReadCustomMods (data, start, out start);
+                               cursor = start;
+                               int current = Utilities.ReadCompressedInteger (data, start, out start);
+                               if (current == (int) ElementType.Pinned) // the only possible constraint
+                                       lv.Constraint |= Constraint.Pinned;
+                               else if (current == (int) ElementType.ByRef) {
+                                       lv.ByRef = true;
+
+                                       if (lv.CustomMods == null || lv.CustomMods.Length == 0)
+                                               lv.CustomMods = ReadCustomMods (data, start, out start);
+                               } else {
+                                       lv.Type = ReadType (data, cursor, out start);
+                                       break;
+                               }
+                       }
+                       return lv;
+               }
+
+               TypeSpec ReadTypeSpec (byte [] data, int pos)
+               {
+                       int start = pos;
+                       Utilities.ReadCompressedInteger (data, start, out start);
+                       TypeSpec ts = new TypeSpec ();
+                       ts.CustomMods = ReadCustomMods (data, start, out start);
+                       ts.Type = ReadType (data, start, out start);
+                       return ts;
+               }
+
+               MethodSpec ReadMethodSpec (byte [] data, int pos)
+               {
+                       int start = pos;
+
+                       Utilities.ReadCompressedInteger (data, start, out start);
+                       if (Utilities.ReadCompressedInteger (data, start, out start) != 0x0a)
+                               throw new ReflectionException ("Invalid MethodSpec signature");
+
+                       return new MethodSpec (ReadGenericInstSignature (data, start, out start));
+               }
+
+               RetType ReadRetType (byte [] data, int pos, out int start)
+               {
+                       RetType rt = new RetType ();
+                       start = pos;
+                       rt.CustomMods = ReadCustomMods (data, start, out start);
+                       int curs = start;
+                       ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
+                       switch (flag) {
+                       case ElementType.Void :
+                               rt.ByRef = rt.TypedByRef = false;
+                               rt.Void = true;
+                               break;
+                       case ElementType.TypedByRef :
+                               rt.ByRef = rt.Void = false;
+                               rt.TypedByRef = true;
+                               break;
+                       case ElementType.ByRef :
+                               rt.TypedByRef = rt.Void = false;
+                               rt.ByRef = true;
+                               rt.CustomMods = CombineCustomMods(rt.CustomMods, ReadCustomMods (data, start, out start));
+                               rt.Type = ReadType (data, start, out start);
+                               break;
+                       default :
+                               rt.TypedByRef = rt.Void = rt.ByRef = false;
+                               rt.Type = ReadType (data, curs, out start);
+                               break;
+                       }
+
+                       return rt;
+               }
+
+               static CustomMod [] CombineCustomMods (CustomMod [] original, CustomMod [] next)
+               {
+                       if (next == null || next.Length == 0)
+                               return original;
+
+                       CustomMod [] mods = new CustomMod [original.Length + next.Length];
+                       Array.Copy (original, mods, original.Length);
+                       Array.Copy (next, 0, mods, original.Length, next.Length);
+                       return mods;
+               }
+
+               Param [] ReadParameters (int length, byte [] data, int pos, out int start)
+               {
+                       Param [] ret = new Param [length];
+                       start = pos;
+                       for (int i = 0; i < length; i++)
+                               ret [i] = ReadParameter (data, start, out start);
+                       return ret;
+               }
+
+               Param [] ReadParameters (int length, byte [] data, int pos, out int start, out int sentinelpos)
+               {
+                       Param [] ret = new Param [length];
+                       start = pos;
+                       sentinelpos = -1;
+
+                       for (int i = 0; i < length; i++) {
+                               int curs = start;
+                               int flag = Utilities.ReadCompressedInteger (data, start, out start);
+
+                               if (flag == (int) ElementType.Sentinel) {
+                                       sentinelpos = i;
+                                       curs = start;
+                               }
+
+                               ret [i] = ReadParameter (data, curs, out start);
+                       }
+
+                       return ret;
+               }
+
+               Param ReadParameter (byte [] data, int pos, out int start)
+               {
+                       Param p = new Param ();
+                       start = pos;
+
+                       p.CustomMods = ReadCustomMods (data, start, out start);
+                       int curs = start;
+                       ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
+                       switch (flag) {
+                       case ElementType.TypedByRef :
+                               p.TypedByRef = true;
+                               p.ByRef = false;
+                               break;
+                       case ElementType.ByRef :
+                               p.TypedByRef = false;
+                               p.ByRef = true;
+
+                               if (p.CustomMods == null || p.CustomMods.Length == 0)
+                                       p.CustomMods = ReadCustomMods (data, start, out start);
+
+                               p.Type = ReadType (data, start, out start);
+                               break;
+                       default :
+                               p.TypedByRef = false;
+                               p.ByRef = false;
+                               p.Type = ReadType (data, curs, out start);
+                               break;
+                       }
+                       return p;
+               }
+
+               SigType ReadType (byte [] data, int pos, out int start)
+               {
+                       start = pos;
+                       ElementType element = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
+                       switch (element) {
+                       case ElementType.ValueType :
+                               VALUETYPE vt = new VALUETYPE ();
+                               vt.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
+                               return vt;
+                       case ElementType.Class :
+                               CLASS c = new CLASS ();
+                               c.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
+                               return c;
+                       case ElementType.Ptr :
+                               PTR p = new PTR ();
+                               int buf = start;
+                               int flag = Utilities.ReadCompressedInteger (data, start, out start);
+                               p.Void = flag == (int) ElementType.Void;
+                               if (p.Void)
+                                       return p;
+                               start = buf;
+                               p.CustomMods = ReadCustomMods (data, start, out start);
+                               p.PtrType = ReadType (data, start, out start);
+                               return p;
+                       case ElementType.FnPtr :
+                               FNPTR fp = new FNPTR ();
+                               if ((data [start] & 0x5) != 0) {
+                                       MethodRefSig mr = new MethodRefSig ((uint) start);
+                                       ReadMethodRefSig (mr, data, start, out start);
+                                       fp.Method = mr;
+                               } else {
+                                       MethodDefSig md = new MethodDefSig ((uint) start);
+                                       ReadMethodDefSig (md, data, start, out start);
+                                       fp.Method = md;
+                               }
+                               return fp;
+                       case ElementType.Array :
+                               ARRAY ary = new ARRAY ();
+                               ary.CustomMods = ReadCustomMods (data, start, out start);
+                               ArrayShape shape = new ArrayShape ();
+                               ary.Type = ReadType (data, start, out start);
+                               shape.Rank = Utilities.ReadCompressedInteger (data, start, out start);
+                               shape.NumSizes = Utilities.ReadCompressedInteger (data, start, out start);
+                               shape.Sizes = new int [shape.NumSizes];
+                               for (int i = 0; i < shape.NumSizes; i++)
+                                       shape.Sizes [i] = Utilities.ReadCompressedInteger (data, start, out start);
+                               shape.NumLoBounds = Utilities.ReadCompressedInteger (data, start, out start);
+                               shape.LoBounds = new int [shape.NumLoBounds];
+                               for (int i = 0; i < shape.NumLoBounds; i++)
+                                       shape.LoBounds [i] = Utilities.ReadCompressedInteger (data, start, out start);
+                               ary.Shape = shape;
+                               return ary;
+                       case ElementType.SzArray :
+                               SZARRAY sa = new SZARRAY ();
+                               sa.CustomMods = ReadCustomMods (data, start, out start);
+                               sa.Type = ReadType (data, start, out start);
+                               return sa;
+                       case ElementType.Var:
+                               return new VAR (Utilities.ReadCompressedInteger (data, start, out start));
+                       case ElementType.MVar:
+                               return new MVAR (Utilities.ReadCompressedInteger (data, start, out start));
+                       case ElementType.GenericInst:
+                               GENERICINST ginst = new GENERICINST ();
+
+                               ginst.ValueType = ((ElementType) Utilities.ReadCompressedInteger (
+                                       data, start, out start)) == ElementType.ValueType;
+
+                               ginst.Type = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                                       (uint) Utilities.ReadCompressedInteger (data, start, out start));
+
+                               ginst.Signature = ReadGenericInstSignature (data, start, out start);
+
+                               return ginst;
+                       default :
+                               return new SigType (element);
+                       }
+               }
+
+               GenericInstSignature ReadGenericInstSignature (byte [] data, int pos, out int start)
+               {
+                       start = pos;
+                       GenericInstSignature gis = new GenericInstSignature ();
+                       gis.Arity = Utilities.ReadCompressedInteger (data, start, out start);
+                       gis.Types = new GenericArg [gis.Arity];
+                       for (int i = 0; i < gis.Arity; i++)
+                               gis.Types [i] = ReadGenericArg (data, start, out start);
+
+                       return gis;
+               }
+
+               GenericArg ReadGenericArg (byte[] data, int pos, out int start)
+               {
+                       start = pos;
+                       CustomMod [] mods = ReadCustomMods (data, start, out start);
+                       GenericArg arg = new GenericArg (ReadType (data, start, out start));
+                       arg.CustomMods = mods;
+                       return arg;
+               }
+
+               CustomMod [] ReadCustomMods (byte [] data, int pos, out int start)
+               {
+                       ArrayList cmods = null;
+                       start = pos;
+                       while (true) {
+                               int buf = start;
+                               if (buf >= data.Length - 1)
+                                       break;
+
+                               ElementType flag = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
+                               start = buf;
+                               if (!((flag == ElementType.CModOpt) || (flag == ElementType.CModReqD)))
+                                       break;
+
+                               if (cmods == null)
+                                       cmods = new ArrayList (2);
+
+                               cmods.Add (ReadCustomMod (data, start, out start));
+                       }
+
+                       return cmods == null ? CustomMod.EmptyCustomMod : cmods.ToArray (typeof (CustomMod)) as CustomMod [];
+               }
+
+               CustomMod ReadCustomMod (byte [] data, int pos, out int start)
+               {
+                       CustomMod cm = new CustomMod ();
+                       start = pos;
+                       ElementType cmod = (ElementType) Utilities.ReadCompressedInteger (data, start, out start);
+                       if (cmod == ElementType.CModOpt)
+                               cm.CMOD = CustomMod.CMODType.OPT;
+                       else if (cmod == ElementType.CModReqD)
+                               cm.CMOD = CustomMod.CMODType.REQD;
+                       else
+                               cm.CMOD = CustomMod.CMODType.None;
+                       cm.TypeDefOrRef = Utilities.GetMetadataToken (CodedIndex.TypeDefOrRef,
+                               (uint) Utilities.ReadCompressedInteger (data, start, out start));
+                       return cm;
+               }
+
+               CustomAttrib ReadCustomAttrib (int pos, MethodReference ctor, bool resolve)
+               {
+                       int start, length = Utilities.ReadCompressedInteger (m_blobData, pos, out start);
+                       byte [] data = new byte [length];
+                       Buffer.BlockCopy (m_blobData, start, data, 0, length);
+                       try {
+                               return ReadCustomAttrib (new BinaryReader (
+                                       new MemoryStream (data)), data, ctor, resolve);
+                       } catch {
+                               CustomAttrib ca = new CustomAttrib (ctor);
+                               ca.Read = false;
+                               return ca;
+                       }
+               }
+
+               CustomAttrib ReadCustomAttrib (BinaryReader br, byte [] data, MethodReference ctor, bool resolve)
+               {
+                       CustomAttrib ca = new CustomAttrib (ctor);
+                       if (data.Length == 0) {
+                               ca.FixedArgs = CustomAttrib.FixedArg.Empty;
+                               ca.NamedArgs = CustomAttrib.NamedArg.Empty;
+                               return ca;
+                       }
+
+                       bool read = true;
+
+                       ca.Prolog = br.ReadUInt16 ();
+                       if (ca.Prolog != CustomAttrib.StdProlog)
+                               throw new MetadataFormatException ("Non standard prolog for custom attribute");
+
+                       if (ctor.HasParameters) {
+                               ca.FixedArgs = new CustomAttrib.FixedArg [ctor.Parameters.Count];
+                               for (int i = 0; i < ca.FixedArgs.Length && read; i++)
+                                       ca.FixedArgs [i] = ReadFixedArg (data, br,
+                                               ctor.Parameters [i].ParameterType, ref read, resolve);
+                       } else {
+                               ca.FixedArgs = CustomAttrib.FixedArg.Empty;
+                       }
+
+                       if (br.BaseStream.Position == br.BaseStream.Length)
+                               read = false;
+
+                       if (!read) {
+                               ca.Read = read;
+                               return ca;
+                       }
+
+                       ca.NumNamed = br.ReadUInt16 ();
+                       if (ca.NumNamed > 0) {
+                               ca.NamedArgs = new CustomAttrib.NamedArg [ca.NumNamed];
+                               for (int i = 0; i < ca.NumNamed && read; i++)
+                                       ca.NamedArgs [i] = ReadNamedArg (data, br, ref read, resolve);
+                       } else {
+                               ca.NamedArgs = CustomAttrib.NamedArg.Empty;
+                       }
+
+                       ca.Read = read;
+                       return ca;
+               }
+
+               CustomAttrib.FixedArg ReadFixedArg (byte [] data, BinaryReader br,
+                       TypeReference param, ref bool read, bool resolve)
+               {
+                       CustomAttrib.FixedArg fa = new CustomAttrib.FixedArg ();
+                       if (param is ArrayType) {
+                               param = ((ArrayType) param).ElementType;
+                               fa.SzArray = true;
+                               fa.NumElem = br.ReadUInt32 ();
+
+                               if (fa.NumElem == 0 || fa.NumElem == 0xffffffff) {
+                                       fa.Elems = new CustomAttrib.Elem [0];
+                                       fa.NumElem = 0;
+                                       return fa;
+                               }
+
+                               fa.Elems = new CustomAttrib.Elem [fa.NumElem];
+                               for (int i = 0; i < fa.NumElem; i++)
+                                       fa.Elems [i] = ReadElem (data, br, param, ref read, resolve);
+                       } else
+                               fa.Elems = new CustomAttrib.Elem [] { ReadElem (data, br, param, ref read, resolve) };
+
+                       return fa;
+               }
+
+               TypeReference CreateEnumTypeReference (string enumName)
+               {
+                       string asmName = null;
+                       int asmStart = enumName.IndexOf (',');
+                       if (asmStart != -1) {
+                               asmName = enumName.Substring (asmStart + 1);
+                               enumName = enumName.Substring (0, asmStart);
+                       }
+                       // Inner class style is reflection style.
+                       enumName = enumName.Replace ('+', '/');
+                       AssemblyNameReference asm;
+                       if (asmName == null) {
+                               // If no assembly is given then the ECMA standard says the
+                               // assembly is either the current one or mscorlib.
+                               if (m_reflectReader.Module.Types.Contains (enumName))
+                                       return m_reflectReader.Module.Types [enumName];
+
+                               asm = m_reflectReader.Corlib;
+                       } else
+                               asm = AssemblyNameReference.Parse (asmName);
+
+                       string [] outers = enumName.Split ('/');
+                       string outerfullname = outers [0];
+                       string ns = null;
+                       int nsIndex = outerfullname.LastIndexOf ('.');
+                       if (nsIndex != -1)
+                               ns = outerfullname.Substring (0, nsIndex);
+                       string name = outerfullname.Substring (nsIndex + 1);
+                       TypeReference decType = new TypeReference (name, ns, asm);
+                       for (int i = 1; i < outers.Length; i++) {
+                               TypeReference t = new TypeReference (outers [i], null, asm);
+                               t.Module = m_reflectReader.Module;
+                               t.DeclaringType = decType;
+                               decType = t;
+                       }
+                       decType.Module = m_reflectReader.Module;
+                       decType.IsValueType = true;
+
+                       return decType;
+               }
+
+               TypeReference ReadTypeReference (byte [] data, BinaryReader br, out ElementType elemType)
+               {
+                       bool array = false;
+                       elemType = (ElementType) br.ReadByte ();
+                       if (elemType == ElementType.SzArray) {
+                               elemType = (ElementType) br.ReadByte ();
+                               array = true;
+                       }
+
+                       TypeReference res;
+                       if (elemType == ElementType.Enum)
+                               res = CreateEnumTypeReference (ReadUTF8String (data, br));
+                       else
+                               res = TypeReferenceFromElemType (elemType);
+
+                       if (array)
+                               res = new ArrayType (res);
+
+                       return res;
+               }
+
+               TypeReference TypeReferenceFromElemType (ElementType elemType)
+               {
+                       switch (elemType) {
+                       case ElementType.Boxed :
+                       case ElementType.Object:
+                               return m_reflectReader.SearchCoreType (Constants.Object);
+                       case ElementType.String :
+                               return m_reflectReader.SearchCoreType (Constants.String);
+                       case ElementType.Type :
+                               return m_reflectReader.SearchCoreType (Constants.Type);
+                       case ElementType.Boolean :
+                               return m_reflectReader.SearchCoreType (Constants.Boolean);
+                       case ElementType.Char :
+                               return m_reflectReader.SearchCoreType (Constants.Char);
+                       case ElementType.R4 :
+                               return m_reflectReader.SearchCoreType (Constants.Single);
+                       case ElementType.R8 :
+                               return m_reflectReader.SearchCoreType (Constants.Double);
+                       case ElementType.I1 :
+                               return m_reflectReader.SearchCoreType (Constants.SByte);
+                       case ElementType.I2 :
+                               return m_reflectReader.SearchCoreType (Constants.Int16);
+                       case ElementType.I4 :
+                               return m_reflectReader.SearchCoreType (Constants.Int32);
+                       case ElementType.I8 :
+                               return m_reflectReader.SearchCoreType (Constants.Int64);
+                       case ElementType.U1 :
+                               return m_reflectReader.SearchCoreType (Constants.Byte);
+                       case ElementType.U2 :
+                               return m_reflectReader.SearchCoreType (Constants.UInt16);
+                       case ElementType.U4 :
+                               return m_reflectReader.SearchCoreType (Constants.UInt32);
+                       case ElementType.U8 :
+                               return m_reflectReader.SearchCoreType (Constants.UInt64);
+                       default :
+                               throw new MetadataFormatException ("Non valid type in CustomAttrib.Elem: 0x{0}",
+                                       ((byte) elemType).ToString("x2"));
+                       }
+               }
+
+               internal CustomAttrib.NamedArg ReadNamedArg (byte [] data, BinaryReader br, ref bool read, bool resolve)
+               {
+                       CustomAttrib.NamedArg na = new CustomAttrib.NamedArg ();
+                       byte kind = br.ReadByte ();
+                       if (kind == 0x53) { // field
+                               na.Field = true;
+                               na.Property = false;
+                       } else if (kind == 0x54) { // property
+                               na.Field = false;
+                               na.Property = true;
+                       } else
+                               throw new MetadataFormatException ("Wrong kind of namedarg found: 0x" + kind.ToString("x2"));
+
+                       TypeReference elemType = ReadTypeReference (data, br, out na.FieldOrPropType);
+                       na.FieldOrPropName = ReadUTF8String (data, br);
+                       na.FixedArg = ReadFixedArg (data, br, elemType, ref read, resolve);
+
+                       return na;
+               }
+
+               CustomAttrib.Elem ReadElem (byte [] data, BinaryReader br, TypeReference elemType, ref bool read, bool resolve)
+               {
+                       CustomAttrib.Elem elem = new CustomAttrib.Elem ();
+
+                       string elemName = elemType.FullName;
+
+                       if (elemName == Constants.Object) {
+                               elemType = ReadTypeReference (data, br, out elem.FieldOrPropType);
+                               if (elemType is ArrayType) {
+                                       read = false; // Don't know how to represent arrays as an object value.
+                                       return elem;
+                               } else if (elemType.FullName == Constants.Object)
+                                       throw new MetadataFormatException ("Non valid type in CustomAttrib.Elem after boxed prefix: 0x{0}",
+                                               ((byte) elem.FieldOrPropType).ToString ("x2"));
+
+                               elem = ReadElem (data, br, elemType, ref read, resolve);
+                               elem.String = elem.Simple = elem.Type = false;
+                               elem.BoxedValueType = true;
+                               return elem;
+                       }
+
+                       elem.ElemType = elemType;
+
+                       if (elemName == Constants.Type || elemName == Constants.String) {
+                               switch (elemType.FullName) {
+                               case Constants.String:
+                                       elem.String = true;
+                                       elem.BoxedValueType = elem.Simple = elem.Type = false;
+                                       break;
+                               case Constants.Type:
+                                       elem.Type = true;
+                                       elem.BoxedValueType = elem.Simple = elem.String = false;
+                                       break;
+                               }
+
+                               if (data [br.BaseStream.Position] == 0xff) { // null
+                                       elem.Value = null;
+                                       br.BaseStream.Position++;
+                               } else {
+                                       elem.Value = ReadUTF8String (data, br);
+                               }
+                               return elem;
+                       }
+
+                       elem.String = elem.Type = elem.BoxedValueType = false;
+                       if (!ReadSimpleValue (br, ref elem, elem.ElemType)) {
+                               if (!resolve) { // until enums writing is implemented
+                                       read = false;
+                                       return elem;
+                               }
+                               TypeReference typeRef = GetEnumUnderlyingType (elem.ElemType, resolve);
+                               if (typeRef == null || !ReadSimpleValue (br, ref elem, typeRef))
+                                       read = false;
+                       }
+
+                       return elem;
+               }
+
+               TypeReference GetEnumUnderlyingType (TypeReference enumType, bool resolve)
+               {
+                       TypeDefinition type = enumType as TypeDefinition;
+                       if (type == null && resolve && AssemblyResolver != null) {
+                               if (enumType.Scope is ModuleDefinition)
+                                       throw new NotSupportedException ();
+
+                               AssemblyDefinition asm = AssemblyResolver.Resolve (
+                                       ((AssemblyNameReference) enumType.Scope).FullName);
+
+                               if (asm != null)
+                                       type = asm.MainModule.Types [enumType.FullName];
+                       }
+
+                       if (type != null && type.IsEnum)
+                               return type.Fields.GetField ("value__").FieldType;
+
+                       return null;
+               }
+
+               bool ReadSimpleValue (BinaryReader br, ref CustomAttrib.Elem elem, TypeReference type)
+               {
+                       switch (type.FullName) {
+                       case Constants.Boolean :
+                               elem.Value = br.ReadByte () == 1;
+                               break;
+                       case Constants.Char :
+                               elem.Value = (char) br.ReadUInt16 ();
+                               break;
+                       case Constants.Single :
+                               elem.Value = br.ReadSingle ();
+                               break;
+                       case Constants.Double :
+                               elem.Value = br.ReadDouble ();
+                               break;
+                       case Constants.Byte :
+                               elem.Value = br.ReadByte ();
+                               break;
+                       case Constants.Int16 :
+                               elem.Value = br.ReadInt16 ();
+                               break;
+                       case Constants.Int32 :
+                               elem.Value = br.ReadInt32 ();
+                               break;
+                       case Constants.Int64 :
+                               elem.Value = br.ReadInt64 ();
+                               break;
+                       case Constants.SByte :
+                               elem.Value = br.ReadSByte ();
+                               break;
+                       case Constants.UInt16 :
+                               elem.Value = br.ReadUInt16 ();
+                               break;
+                       case Constants.UInt32 :
+                               elem.Value = br.ReadUInt32 ();
+                               break;
+                       case Constants.UInt64 :
+                               elem.Value = br.ReadUInt64 ();
+                               break;
+                       default : // enum
+                               return false;
+                       }
+                       elem.Simple = true;
+                       return true;
+               }
+
+               MarshalSig ReadMarshalSig (byte [] data)
+               {
+                       int start;
+                       MarshalSig ms = new MarshalSig ((NativeType) Utilities.ReadCompressedInteger (data, 0, out start));
+                       switch (ms.NativeInstrinsic) {
+                       case NativeType.ARRAY:
+                               MarshalSig.Array ar = new MarshalSig.Array ();
+                               ar.ArrayElemType = (NativeType) Utilities.ReadCompressedInteger (data, start, out start);
+                               if (start < data.Length)
+                                       ar.ParamNum = Utilities.ReadCompressedInteger (data, start, out start);
+                               if (start < data.Length)
+                                       ar.NumElem = Utilities.ReadCompressedInteger (data, start, out start);
+                               if (start < data.Length)
+                                       ar.ElemMult = Utilities.ReadCompressedInteger (data, start, out start);
+                               ms.Spec = ar;
+                               break;
+                       case NativeType.CUSTOMMARSHALER:
+                               MarshalSig.CustomMarshaler cm = new MarshalSig.CustomMarshaler ();
+                               cm.Guid = ReadUTF8String (data, start, out start);
+                               cm.UnmanagedType = ReadUTF8String (data, start, out start);
+                               cm.ManagedType = ReadUTF8String (data, start, out start);
+                               cm.Cookie = ReadUTF8String (data, start, out start);
+                               ms.Spec = cm;
+                               break;
+                       case NativeType.FIXEDARRAY:
+                               MarshalSig.FixedArray fa = new MarshalSig.FixedArray ();
+                               fa.NumElem = Utilities.ReadCompressedInteger (data, start, out start);
+                               if (start < data.Length)
+                                       fa.ArrayElemType = (NativeType) Utilities.ReadCompressedInteger (data, start, out start);
+                               ms.Spec = fa;
+                               break;
+                       case NativeType.SAFEARRAY:
+                               MarshalSig.SafeArray sa = new MarshalSig.SafeArray ();
+                               if (start < data.Length)
+                                       sa.ArrayElemType = (VariantType) Utilities.ReadCompressedInteger (data, start, out start);
+                               ms.Spec = sa;
+                               break;
+                       case NativeType.FIXEDSYSSTRING:
+                               MarshalSig.FixedSysString fss = new MarshalSig.FixedSysString ();
+                               if (start < data.Length)
+                                       fss.Size = Utilities.ReadCompressedInteger (data, start, out start);
+                               ms.Spec = fss;
+                               break;
+                       }
+                       return ms;
+               }
+
+               static internal string ReadUTF8String (byte [] data, BinaryReader br)
+               {
+                       int start = (int)br.BaseStream.Position;
+                       string val = ReadUTF8String (data, start, out start);
+                       br.BaseStream.Position = start;
+                       return val;
+               }
+
+               static internal string ReadUTF8String (byte [] data, int pos, out int start)
+               {
+                       int length = Utilities.ReadCompressedInteger (data, pos, out start);
+                       pos = start;
+                       start += length;
+                       // COMPACT FRAMEWORK NOTE: Encoding.GetString (byte[]) is not supported.
+                       return Encoding.UTF8.GetString (data, pos, length);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureWriter.cs
new file mode 100644 (file)
index 0000000..f1542c4
--- /dev/null
@@ -0,0 +1,564 @@
+//
+// SignatureWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using System;
+       using System.Text;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class SignatureWriter : BaseSignatureVisitor {
+
+               MetadataWriter m_mdWriter;
+               MemoryBinaryWriter m_sigWriter;
+
+               public SignatureWriter (MetadataWriter mdWriter)
+               {
+                       m_mdWriter = mdWriter;
+                       m_sigWriter = new MemoryBinaryWriter ();
+               }
+
+               uint GetPointer ()
+               {
+                       return m_mdWriter.AddBlob (m_sigWriter.ToArray ());
+               }
+
+               public uint AddMethodDefSig (MethodDefSig methSig)
+               {
+                       return AddSignature (methSig);
+               }
+
+               public uint AddMethodRefSig (MethodRefSig methSig)
+               {
+                       return AddSignature (methSig);
+               }
+
+               public uint AddPropertySig (PropertySig ps)
+               {
+                       return AddSignature (ps);
+               }
+
+               public uint AddFieldSig (FieldSig fSig)
+               {
+                       return AddSignature (fSig);
+               }
+
+               public uint AddLocalVarSig (LocalVarSig lvs)
+               {
+                       return AddSignature (lvs);
+               }
+
+               uint AddSignature (Signature s)
+               {
+                       m_sigWriter.Empty ();
+                       s.Accept (this);
+                       return GetPointer ();
+               }
+
+               public uint AddTypeSpec (TypeSpec ts)
+               {
+                       m_sigWriter.Empty ();
+                       Write (ts);
+                       return GetPointer ();
+               }
+
+               public uint AddMethodSpec (MethodSpec ms)
+               {
+                       m_sigWriter.Empty ();
+                       Write (ms);
+                       return GetPointer ();
+               }
+
+               public uint AddMarshalSig (MarshalSig ms)
+               {
+                       m_sigWriter.Empty ();
+                       Write (ms);
+                       return GetPointer ();
+               }
+
+               public uint AddCustomAttribute (CustomAttrib ca, MethodReference ctor)
+               {
+                       CompressCustomAttribute (ca, ctor, m_sigWriter);
+                       return GetPointer ();
+               }
+
+               public byte [] CompressCustomAttribute (CustomAttrib ca, MethodReference ctor)
+               {
+                       MemoryBinaryWriter writer = new MemoryBinaryWriter ();
+                       CompressCustomAttribute (ca, ctor, writer);
+                       return writer.ToArray ();
+               }
+
+               public byte [] CompressFieldSig (FieldSig field)
+               {
+                       m_sigWriter.Empty ();
+                       VisitFieldSig (field);
+                       return m_sigWriter.ToArray ();
+               }
+
+               public byte [] CompressLocalVar (LocalVarSig.LocalVariable var)
+               {
+                       m_sigWriter.Empty ();
+                       Write (var);
+                       return m_sigWriter.ToArray ();
+               }
+
+               void CompressCustomAttribute (CustomAttrib ca, MethodReference ctor, MemoryBinaryWriter writer)
+               {
+                       m_sigWriter.Empty ();
+                       Write (ca, ctor, writer);
+               }
+
+               public override void VisitMethodDefSig (MethodDefSig methodDef)
+               {
+                       m_sigWriter.Write (methodDef.CallingConvention);
+                       if (methodDef.GenericParameterCount > 0)
+                               Write (methodDef.GenericParameterCount);
+                       Write (methodDef.ParamCount);
+                       Write (methodDef.RetType);
+                       Write (methodDef.Parameters, methodDef.Sentinel);
+               }
+
+               public override void VisitMethodRefSig (MethodRefSig methodRef)
+               {
+                       m_sigWriter.Write (methodRef.CallingConvention);
+                       Write (methodRef.ParamCount);
+                       Write (methodRef.RetType);
+                       Write (methodRef.Parameters, methodRef.Sentinel);
+               }
+
+               public override void VisitFieldSig (FieldSig field)
+               {
+                       m_sigWriter.Write (field.CallingConvention);
+                       Write (field.CustomMods);
+                       Write (field.Type);
+               }
+
+               public override void VisitPropertySig (PropertySig property)
+               {
+                       m_sigWriter.Write (property.CallingConvention);
+                       Write (property.ParamCount);
+                       Write (property.CustomMods);
+                       Write (property.Type);
+                       Write (property.Parameters);
+               }
+
+               public override void VisitLocalVarSig (LocalVarSig localvar)
+               {
+                       m_sigWriter.Write (localvar.CallingConvention);
+                       Write (localvar.Count);
+                       Write (localvar.LocalVariables);
+               }
+
+               void Write (LocalVarSig.LocalVariable [] vars)
+               {
+                       foreach (LocalVarSig.LocalVariable var in vars)
+                               Write (var);
+               }
+
+               void Write (LocalVarSig.LocalVariable var)
+               {
+                       Write (var.CustomMods);
+                       if ((var.Constraint & Constraint.Pinned) != 0)
+                               Write (ElementType.Pinned);
+                       if (var.ByRef)
+                               Write (ElementType.ByRef);
+                       Write (var.Type);
+               }
+
+               void Write (RetType retType)
+               {
+                       Write (retType.CustomMods);
+                       if (retType.Void)
+                               Write (ElementType.Void);
+                       else if (retType.TypedByRef)
+                               Write (ElementType.TypedByRef);
+                       else if (retType.ByRef) {
+                               Write (ElementType.ByRef);
+                               Write (retType.Type);
+                       } else
+                               Write (retType.Type);
+               }
+
+               void Write (Param [] parameters, int sentinel)
+               {
+                       for (int i = 0; i < parameters.Length; i++) {
+                               if (i == sentinel)
+                                       Write (ElementType.Sentinel);
+
+                               Write (parameters [i]);
+                       }
+               }
+
+               void Write (Param [] parameters)
+               {
+                       foreach (Param p in parameters)
+                               Write (p);
+               }
+
+               void Write (ElementType et)
+               {
+                       Write ((int) et);
+               }
+
+               void Write (SigType t)
+               {
+                       Write ((int) t.ElementType);
+
+                       switch (t.ElementType) {
+                       case ElementType.ValueType :
+                               Write ((int) Utilities.CompressMetadataToken (
+                                               CodedIndex.TypeDefOrRef, ((VALUETYPE) t).Type));
+                               break;
+                       case ElementType.Class :
+                               Write ((int) Utilities.CompressMetadataToken (
+                                               CodedIndex.TypeDefOrRef, ((CLASS) t).Type));
+                               break;
+                       case ElementType.Ptr :
+                               PTR p = (PTR) t;
+                               if (p.Void)
+                                       Write (ElementType.Void);
+                               else {
+                                       Write (p.CustomMods);
+                                       Write (p.PtrType);
+                               }
+                               break;
+                       case ElementType.FnPtr :
+                               FNPTR fp = (FNPTR) t;
+                               if (fp.Method is MethodRefSig)
+                                       (fp.Method as MethodRefSig).Accept (this);
+                               else
+                                       (fp.Method as MethodDefSig).Accept (this);
+                               break;
+                       case ElementType.Array :
+                               ARRAY ary = (ARRAY) t;
+                               Write (ary.CustomMods);
+                               ArrayShape shape = ary.Shape;
+                               Write (ary.Type);
+                               Write (shape.Rank);
+                               Write (shape.NumSizes);
+                               foreach (int size in shape.Sizes)
+                                       Write (size);
+                               Write (shape.NumLoBounds);
+                               foreach (int loBound in shape.LoBounds)
+                                       Write (loBound);
+                               break;
+                       case ElementType.SzArray :
+                               SZARRAY sa = (SZARRAY) t;
+                               Write (sa.CustomMods);
+                               Write (sa.Type);
+                               break;
+                       case ElementType.Var :
+                               Write (((VAR) t).Index);
+                               break;
+                       case ElementType.MVar :
+                               Write (((MVAR) t).Index);
+                               break;
+                       case ElementType.GenericInst :
+                               GENERICINST gi = t as GENERICINST;
+                               Write (gi.ValueType ? ElementType.ValueType : ElementType.Class);
+                               Write ((int) Utilities.CompressMetadataToken (
+                                               CodedIndex.TypeDefOrRef, gi.Type));
+                               Write (gi.Signature);
+                               break;
+                       }
+               }
+
+               void Write (TypeSpec ts)
+               {
+                       Write (ts.CustomMods);
+                       Write (ts.Type);
+               }
+
+               void Write (MethodSpec ms)
+               {
+                       Write (0x0a);
+                       Write (ms.Signature);
+               }
+
+               void Write (GenericInstSignature gis)
+               {
+                       Write (gis.Arity);
+                       for (int i = 0; i < gis.Arity; i++)
+                               Write (gis.Types [i]);
+               }
+
+               void Write (GenericArg arg)
+               {
+                       Write (arg.CustomMods);
+                       Write (arg.Type);
+               }
+
+               void Write (Param p)
+               {
+                       Write (p.CustomMods);
+                       if (p.TypedByRef)
+                               Write (ElementType.TypedByRef);
+                       else if (p.ByRef) {
+                               Write (ElementType.ByRef);
+                               Write (p.Type);
+                       } else
+                               Write (p.Type);
+               }
+
+               void Write (CustomMod [] customMods)
+               {
+                       foreach (CustomMod cm in customMods)
+                               Write (cm);
+               }
+
+               void Write (CustomMod cm)
+               {
+                       switch (cm.CMOD) {
+                       case CustomMod.CMODType.OPT :
+                               Write (ElementType.CModOpt);
+                               break;
+                       case CustomMod.CMODType.REQD :
+                               Write (ElementType.CModReqD);
+                               break;
+                       }
+
+                       Write ((int) Utilities.CompressMetadataToken (
+                                       CodedIndex.TypeDefOrRef, cm.TypeDefOrRef));
+               }
+
+               void Write (MarshalSig ms)
+               {
+                       Write ((int) ms.NativeInstrinsic);
+                       switch (ms.NativeInstrinsic) {
+                       case NativeType.ARRAY :
+                               MarshalSig.Array ar = (MarshalSig.Array) ms.Spec;
+                               Write ((int) ar.ArrayElemType);
+                               if (ar.ParamNum != -1)
+                                       Write (ar.ParamNum);
+                               if (ar.NumElem != -1)
+                                       Write (ar.NumElem);
+                               if (ar.ElemMult != -1)
+                                       Write (ar.ElemMult);
+                               break;
+                       case NativeType.CUSTOMMARSHALER :
+                               MarshalSig.CustomMarshaler cm = (MarshalSig.CustomMarshaler) ms.Spec;
+                               Write (cm.Guid);
+                               Write (cm.UnmanagedType);
+                               Write (cm.ManagedType);
+                               Write (cm.Cookie);
+                               break;
+                       case NativeType.FIXEDARRAY :
+                               MarshalSig.FixedArray fa = (MarshalSig.FixedArray) ms.Spec;
+                               Write (fa.NumElem);
+                               if (fa.ArrayElemType != NativeType.NONE)
+                                       Write ((int) fa.ArrayElemType);
+                               break;
+                       case NativeType.SAFEARRAY :
+                               Write ((int) ((MarshalSig.SafeArray) ms.Spec).ArrayElemType);
+                               break;
+                       case NativeType.FIXEDSYSSTRING :
+                               Write (((MarshalSig.FixedSysString) ms.Spec).Size);
+                               break;
+                       }
+               }
+
+               void Write (CustomAttrib ca, MethodReference ctor, MemoryBinaryWriter writer)
+               {
+                       if (ca == null)
+                               return;
+
+                       if (ca.Prolog != CustomAttrib.StdProlog)
+                               return;
+
+                       writer.Write (ca.Prolog);
+
+                       for (int i = 0; i < ctor.Parameters.Count; i++)
+                               Write (ca.FixedArgs [i], writer);
+
+                       writer.Write (ca.NumNamed);
+
+                       for (int i = 0; i < ca.NumNamed; i++)
+                               Write (ca.NamedArgs [i], writer);
+               }
+
+               void Write (CustomAttrib.FixedArg fa, MemoryBinaryWriter writer)
+               {
+                       if (fa.SzArray)
+                               writer.Write (fa.NumElem);
+
+                       foreach (CustomAttrib.Elem elem in fa.Elems)
+                               Write (elem, writer);
+               }
+
+               static string GetEnumFullName (TypeReference type)
+               {
+                       string fullname = type.FullName;
+
+                       if (type.IsNested)
+                               fullname = fullname.Replace ('/', '+');
+
+                       if (type is TypeDefinition)
+                               return fullname;
+
+                       return string.Concat (fullname, ", ", type.Module.Assembly.Name.FullName);
+               }
+
+               void Write (CustomAttrib.NamedArg na, MemoryBinaryWriter writer)
+               {
+                       if (na.Field)
+                               writer.Write ((byte) 0x53);
+                       else if (na.Property)
+                               writer.Write ((byte) 0x54);
+                       else
+                               throw new MetadataFormatException ("Unknown kind of namedarg");
+
+                       if (na.FieldOrPropType == ElementType.Class)
+                               na.FieldOrPropType = ElementType.Enum;
+
+                       if (na.FixedArg.SzArray)
+                               writer.Write ((byte) ElementType.SzArray);
+
+                       if (na.FieldOrPropType == ElementType.Object)
+                               writer.Write ((byte) ElementType.Boxed);
+                       else
+                               writer.Write ((byte) na.FieldOrPropType);
+
+                       if (na.FieldOrPropType == ElementType.Enum)
+                               Write (GetEnumFullName (na.FixedArg.Elems [0].ElemType));
+
+                       Write (na.FieldOrPropName);
+
+                       Write (na.FixedArg, writer);
+               }
+
+               static ElementType GetElementTypeFromTypeCode (TypeCode tc)
+               {
+                       switch (tc) {
+                       case TypeCode.Byte:
+                               return ElementType.U1;
+                       case TypeCode.SByte:
+                               return ElementType.I1;
+                       case TypeCode.Int16:
+                               return ElementType.I2;
+                       case TypeCode.UInt16:
+                               return ElementType.U2;
+                       case TypeCode.Int32:
+                               return ElementType.I4;
+                       case TypeCode.UInt32:
+                               return ElementType.U4;
+                       case TypeCode.Int64:
+                               return ElementType.I8;
+                       case TypeCode.UInt64:
+                               return ElementType.U8;
+                       default:
+                               throw new ArgumentException ("tc");
+                       }
+               }
+
+               void Write (CustomAttrib.Elem elem, MemoryBinaryWriter writer)
+               {
+                       if (elem.String)
+                               elem.FieldOrPropType = ElementType.String;
+                       else if (elem.Type)
+                               elem.FieldOrPropType = ElementType.Type;
+
+                       if (elem.FieldOrPropType == ElementType.Class) // an enum in fact
+                               elem.FieldOrPropType = GetElementTypeFromTypeCode (Type.GetTypeCode (elem.Value.GetType ()));
+
+                       if (elem.BoxedValueType)
+                               Write (elem.FieldOrPropType);
+
+                       switch (elem.FieldOrPropType) {
+                       case ElementType.Boolean :
+                               writer.Write ((byte) ((bool) elem.Value ? 1 : 0));
+                               break;
+                       case ElementType.Char :
+                               writer.Write ((ushort) (char) elem.Value);
+                               break;
+                       case ElementType.R4 :
+                               writer.Write ((float) elem.Value);
+                               break;
+                       case ElementType.R8 :
+                               writer.Write ((double) elem.Value);
+                               break;
+                       case ElementType.I1 :
+                               writer.Write ((sbyte) elem.Value);
+                               break;
+                       case ElementType.I2 :
+                               writer.Write ((short) elem.Value);
+                               break;
+                       case ElementType.I4 :
+                               writer.Write ((int) elem.Value);
+                               break;
+                       case ElementType.I8 :
+                               writer.Write ((long) elem.Value);
+                               break;
+                       case ElementType.U1 :
+                               writer.Write ((byte) elem.Value);
+                               break;
+                       case ElementType.U2 :
+                               writer.Write ((ushort) elem.Value);
+                               break;
+                       case ElementType.U4 :
+                               writer.Write ((uint) elem.Value);
+                               break;
+                       case ElementType.U8 :
+                               writer.Write ((ulong) elem.Value);
+                               break;
+                       case ElementType.String :
+                       case ElementType.Type :
+                               string s = elem.Value as string;
+                               if (s == null)
+                                       writer.Write ((byte) 0xff);
+                               else if (s.Length == 0)
+                                       writer.Write ((byte) 0x00);
+                               else
+                                       Write (s);
+                               break;
+                       case ElementType.Object :
+                               if (elem.Value != null)
+                                       throw new NotSupportedException ("Unknown state");
+                               writer.Write ((byte) 0xff);
+                               break;
+                       default :
+                               throw new NotImplementedException ("WriteElem " + elem.FieldOrPropType.ToString ());
+                       }
+               }
+
+               void Write (string s)
+               {
+                       byte [] str = Encoding.UTF8.GetBytes (s);
+                       Write (str.Length);
+                       m_sigWriter.Write (str);
+               }
+
+               void Write (int i)
+               {
+                       Utilities.WriteCompressedInteger (m_sigWriter, i);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/SzArray.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SzArray.cs
new file mode 100644 (file)
index 0000000..08ad8f1
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// SzArray.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class SZARRAY : SigType {
+
+               public CustomMod [] CustomMods;
+               public SigType Type;
+
+               public SZARRAY () : base (ElementType.SzArray)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/TypeSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/TypeSpec.cs
new file mode 100644 (file)
index 0000000..7664df3
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeSpec.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       internal sealed class TypeSpec {
+
+               public CustomMod [] CustomMods;
+               public SigType Type;
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/ValueType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ValueType.cs
new file mode 100644 (file)
index 0000000..36b2661
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// ValueType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class VALUETYPE : SigType {
+
+               public MetadataToken Type;
+
+               public VALUETYPE () : base (ElementType.ValueType)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/Var.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Var.cs
new file mode 100644 (file)
index 0000000..97b35b6
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// Var.cs
+//
+// Author:
+//     Martin Baulig  <martin@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class VAR : SigType {
+
+               public int Index;
+
+               public VAR (int index) : base (ElementType.Var)
+               {
+                       this.Index = index;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AggressiveReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/AggressiveReflectionReader.cs
new file mode 100644 (file)
index 0000000..adbb872
--- /dev/null
@@ -0,0 +1,453 @@
+//
+// AggressiveRefletionReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+
+       internal sealed class AggressiveReflectionReader : ReflectionReader {
+
+               public AggressiveReflectionReader (ModuleDefinition module) : base (module)
+               {
+               }
+
+               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
+               {
+                       base.VisitTypeDefinitionCollection (types);
+
+                       ReadGenericParameterConstraints ();
+                       ReadClassLayoutInfos ();
+                       ReadFieldLayoutInfos ();
+                       ReadPInvokeInfos ();
+                       ReadProperties ();
+                       ReadEvents ();
+                       ReadSemantics ();
+                       ReadInterfaces ();
+                       ReadOverrides ();
+                       ReadSecurityDeclarations ();
+                       ReadCustomAttributes ();
+                       ReadConstants ();
+                       ReadExternTypes ();
+                       ReadMarshalSpecs ();
+                       ReadInitialValues ();
+
+                       m_events = null;
+                       m_properties = null;
+                       m_parameters = null;
+               }
+
+               void ReadGenericParameterConstraints ()
+               {
+                       if (!m_tHeap.HasTable (GenericParamConstraintTable.RId))
+                               return;
+
+                       GenericParamConstraintTable gpcTable = m_tableReader.GetGenericParamConstraintTable ();
+                       for (int i = 0; i < gpcTable.Rows.Count; i++) {
+                               GenericParamConstraintRow gpcRow = gpcTable [i];
+                               GenericParameter gp = GetGenericParameterAt (gpcRow.Owner);
+
+                               gp.Constraints.Add (GetTypeDefOrRef (gpcRow.Constraint, new GenericContext (gp.Owner)));
+                       }
+               }
+
+               void ReadClassLayoutInfos ()
+               {
+                       if (!m_tHeap.HasTable (ClassLayoutTable.RId))
+                               return;
+
+                       ClassLayoutTable clTable = m_tableReader.GetClassLayoutTable ();
+                       for (int i = 0; i < clTable.Rows.Count; i++) {
+                               ClassLayoutRow clRow = clTable [i];
+                               TypeDefinition type = GetTypeDefAt (clRow.Parent);
+                               type.PackingSize = clRow.PackingSize;
+                               type.ClassSize = clRow.ClassSize;
+                       }
+               }
+
+               void ReadFieldLayoutInfos ()
+               {
+                       if (!m_tHeap.HasTable (FieldLayoutTable.RId))
+                               return;
+
+                       FieldLayoutTable flTable = m_tableReader.GetFieldLayoutTable ();
+                       for (int i = 0; i < flTable.Rows.Count; i++) {
+                               FieldLayoutRow flRow = flTable [i];
+                               FieldDefinition field = GetFieldDefAt (flRow.Field);
+                               field.Offset = flRow.Offset;
+                       }
+               }
+
+               void ReadPInvokeInfos ()
+               {
+                       if (!m_tHeap.HasTable (ImplMapTable.RId))
+                               return;
+
+                       ImplMapTable imTable = m_tableReader.GetImplMapTable ();
+                       for (int i = 0; i < imTable.Rows.Count; i++) {
+                               ImplMapRow imRow = imTable [i];
+                               if (imRow.MemberForwarded.TokenType == TokenType.Method) { // should always be true
+                                       MethodDefinition meth = GetMethodDefAt (imRow.MemberForwarded.RID);
+                                       meth.PInvokeInfo = new PInvokeInfo (
+                                               meth, imRow.MappingFlags, MetadataRoot.Streams.StringsHeap [imRow.ImportName],
+                                               Module.ModuleReferences [(int) imRow.ImportScope - 1]);
+                               }
+                       }
+               }
+
+               void ReadProperties ()
+               {
+                       if (!m_tHeap.HasTable (PropertyTable.RId)) {
+                               m_properties = new PropertyDefinition [0];
+                               return;
+                       }
+
+                       PropertyTable propsTable = m_tableReader.GetPropertyTable ();
+                       PropertyMapTable pmapTable = m_tableReader.GetPropertyMapTable ();
+                       m_properties = new PropertyDefinition [propsTable.Rows.Count];
+                       for (int i = 0; i < pmapTable.Rows.Count; i++) {
+                               PropertyMapRow pmapRow = pmapTable [i];
+                               if (pmapRow.Parent == 0)
+                                       continue;
+
+                               TypeDefinition owner = GetTypeDefAt (pmapRow.Parent);
+
+                               GenericContext context = new GenericContext (owner);
+
+                               int start = (int) pmapRow.PropertyList, last = propsTable.Rows.Count + 1, end;
+                               if (i < pmapTable.Rows.Count - 1)
+                                       end = (int) pmapTable [i + 1].PropertyList;
+                               else
+                                       end = last;
+
+                               if (end > last)
+                                       end = last;
+
+                               for (int j = start; j < end; j++) {
+                                       PropertyRow prow = propsTable [j - 1];
+                                       PropertySig psig = m_sigReader.GetPropSig (prow.Type);
+                                       PropertyDefinition pdef = new PropertyDefinition (
+                                               m_root.Streams.StringsHeap [prow.Name],
+                                               GetTypeRefFromSig (psig.Type, context),
+                                       prow.Flags);
+                                       pdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Property, j - 1);
+
+                                       pdef.PropertyType = GetModifierType (psig.CustomMods, pdef.PropertyType);
+
+                                       if (!IsDeleted (pdef))
+                                               owner.Properties.Add (pdef);
+
+                                       m_properties [j - 1] = pdef;
+                               }
+                       }
+               }
+
+               void ReadEvents ()
+               {
+                       if (!m_tHeap.HasTable (EventTable.RId)) {
+                               m_events = new EventDefinition [0];
+                               return;
+                       }
+
+                       EventTable evtTable = m_tableReader.GetEventTable ();
+                       EventMapTable emapTable = m_tableReader.GetEventMapTable ();
+                       m_events = new EventDefinition [evtTable.Rows.Count];
+                       for (int i = 0; i < emapTable.Rows.Count; i++) {
+                               EventMapRow emapRow = emapTable [i];
+                               if (emapRow.Parent == 0)
+                                       continue;
+
+                               TypeDefinition owner = GetTypeDefAt (emapRow.Parent);
+                               GenericContext context = new GenericContext (owner);
+
+                               int start = (int) emapRow.EventList, last = evtTable.Rows.Count + 1, end;
+                               if (i < (emapTable.Rows.Count - 1))
+                                       end = (int) emapTable [i + 1].EventList;
+                               else
+                                       end = last;
+
+                               if (end > last)
+                                       end = last;
+
+                               for (int j = start; j < end; j++) {
+                                       EventRow erow = evtTable [j - 1];
+                                       EventDefinition edef = new EventDefinition (
+                                               m_root.Streams.StringsHeap [erow.Name],
+                                               GetTypeDefOrRef (erow.EventType, context), erow.EventFlags);
+                                       edef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Event, j - 1);
+
+                                       if (!IsDeleted (edef))
+                                               owner.Events.Add (edef);
+
+                                       m_events [j - 1] = edef;
+                               }
+                       }
+               }
+
+               void ReadSemantics ()
+               {
+                       if (!m_tHeap.HasTable (MethodSemanticsTable.RId))
+                               return;
+
+                       MethodSemanticsTable semTable = m_tableReader.GetMethodSemanticsTable ();
+                       for (int i = 0; i < semTable.Rows.Count; i++) {
+                               MethodSemanticsRow semRow = semTable [i];
+                               MethodDefinition semMeth = GetMethodDefAt (semRow.Method);
+                               semMeth.SemanticsAttributes = semRow.Semantics;
+                               switch (semRow.Association.TokenType) {
+                               case TokenType.Event :
+                                       EventDefinition evt = GetEventDefAt (semRow.Association.RID);
+                                       if ((semRow.Semantics & MethodSemanticsAttributes.AddOn) != 0)
+                                               evt.AddMethod = semMeth;
+                                       else if ((semRow.Semantics & MethodSemanticsAttributes.Fire) != 0)
+                                               evt.InvokeMethod = semMeth;
+                                       else if ((semRow.Semantics & MethodSemanticsAttributes.RemoveOn) != 0)
+                                               evt.RemoveMethod = semMeth;
+                                       break;
+                               case TokenType.Property :
+                                       PropertyDefinition prop = GetPropertyDefAt (semRow.Association.RID);
+                                       if ((semRow.Semantics & MethodSemanticsAttributes.Getter) != 0)
+                                               prop.GetMethod = semMeth;
+                                       else if ((semRow.Semantics & MethodSemanticsAttributes.Setter) != 0)
+                                               prop.SetMethod = semMeth;
+                                       break;
+                               }
+                       }
+               }
+
+               void ReadInterfaces ()
+               {
+                       if (!m_tHeap.HasTable (InterfaceImplTable.RId))
+                               return;
+
+                       InterfaceImplTable intfsTable = m_tableReader.GetInterfaceImplTable ();
+                       for (int i = 0; i < intfsTable.Rows.Count; i++) {
+                               InterfaceImplRow intfsRow = intfsTable [i];
+                               TypeDefinition owner = GetTypeDefAt (intfsRow.Class);
+                               owner.Interfaces.Add (GetTypeDefOrRef (intfsRow.Interface, new GenericContext (owner)));
+                       }
+               }
+
+               void ReadOverrides ()
+               {
+                       if (!m_tHeap.HasTable (MethodImplTable.RId))
+                               return;
+
+                       MethodImplTable implTable = m_tableReader.GetMethodImplTable ();
+                       for (int i = 0; i < implTable.Rows.Count; i++) {
+                               MethodImplRow implRow = implTable [i];
+                               if (implRow.MethodBody.TokenType == TokenType.Method) {
+                                       MethodDefinition owner = GetMethodDefAt (implRow.MethodBody.RID);
+                                       switch (implRow.MethodDeclaration.TokenType) {
+                                       case TokenType.Method :
+                                               owner.Overrides.Add (
+                                                       GetMethodDefAt (implRow.MethodDeclaration.RID));
+                                               break;
+                                       case TokenType.MemberRef :
+                                               owner.Overrides.Add (
+                                                       (MethodReference) GetMemberRefAt (
+                                                               implRow.MethodDeclaration.RID, new GenericContext (owner)));
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               void ReadSecurityDeclarations ()
+               {
+                       if (!m_tHeap.HasTable (DeclSecurityTable.RId))
+                               return;
+
+                       DeclSecurityTable dsTable = m_tableReader.GetDeclSecurityTable ();
+                       for (int i = 0; i < dsTable.Rows.Count; i++) {
+                               DeclSecurityRow dsRow = dsTable [i];
+                               SecurityDeclaration dec = BuildSecurityDeclaration (dsRow);
+
+                               if (dsRow.Parent.RID == 0)
+                                       continue;
+
+                               IHasSecurity owner = null;
+                               switch (dsRow.Parent.TokenType) {
+                               case TokenType.Assembly :
+                                       owner = this.Module.Assembly;
+                                       break;
+                               case TokenType.TypeDef :
+                                       owner = GetTypeDefAt (dsRow.Parent.RID);
+                                       break;
+                               case TokenType.Method :
+                                       owner = GetMethodDefAt (dsRow.Parent.RID);
+                                       break;
+                               }
+
+                               owner.SecurityDeclarations.Add (dec);
+                       }
+               }
+
+               void ReadCustomAttributes ()
+               {
+                       if (!m_tHeap.HasTable (CustomAttributeTable.RId))
+                               return;
+
+                       CustomAttributeTable caTable = m_tableReader.GetCustomAttributeTable ();
+                       for (int i = 0; i < caTable.Rows.Count; i++) {
+                               CustomAttributeRow caRow = caTable [i];
+                               MethodReference ctor;
+
+                               if (caRow.Type.RID == 0)
+                                       continue;
+
+                               if (caRow.Type.TokenType == TokenType.Method)
+                                       ctor = GetMethodDefAt (caRow.Type.RID);
+                               else
+                                       ctor = GetMemberRefAt (caRow.Type.RID, new GenericContext ()) as MethodReference;
+
+                               CustomAttrib ca = m_sigReader.GetCustomAttrib (caRow.Value, ctor);
+                               CustomAttribute cattr = BuildCustomAttribute (ctor, m_root.Streams.BlobHeap.Read (caRow.Value), ca);
+
+                               if (caRow.Parent.RID == 0)
+                                       continue;
+
+                               ICustomAttributeProvider owner = null;
+                               switch (caRow.Parent.TokenType) {
+                               case TokenType.Assembly :
+                                       owner = this.Module.Assembly;
+                                       break;
+                               case TokenType.Module :
+                                       owner = this.Module;
+                                       break;
+                               case TokenType.TypeDef :
+                                       owner = GetTypeDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.TypeRef :
+                                       owner = GetTypeRefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.Field :
+                                       owner = GetFieldDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.Method :
+                                       owner = GetMethodDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.Property :
+                                       owner = GetPropertyDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.Event :
+                                       owner = GetEventDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.Param :
+                                       owner = GetParamDefAt (caRow.Parent.RID);
+                                       break;
+                               case TokenType.GenericParam :
+                                       owner = GetGenericParameterAt (caRow.Parent.RID);
+                                       break;
+                               default :
+                                       //TODO: support other ?
+                                       break;
+                               }
+
+                               if (owner != null)
+                                       owner.CustomAttributes.Add (cattr);
+                       }
+               }
+
+               void ReadConstants ()
+               {
+                       if (!m_tHeap.HasTable (ConstantTable.RId))
+                               return;
+
+                       ConstantTable csTable = m_tableReader.GetConstantTable ();
+                       for (int i = 0; i < csTable.Rows.Count; i++) {
+                               ConstantRow csRow = csTable [i];
+
+                               object constant = GetConstant (csRow.Value, csRow.Type);
+
+                               IHasConstant owner = null;
+                               switch (csRow.Parent.TokenType) {
+                               case TokenType.Field :
+                                       owner = GetFieldDefAt (csRow.Parent.RID);
+                                       break;
+                               case TokenType.Property :
+                                       owner = GetPropertyDefAt (csRow.Parent.RID);
+                                       break;
+                               case TokenType.Param :
+                                       owner = GetParamDefAt (csRow.Parent.RID);
+                                       break;
+                               }
+
+                               owner.Constant = constant;
+                       }
+               }
+
+               void ReadExternTypes ()
+               {
+                       base.VisitExternTypeCollection (Module.ExternTypes);
+               }
+
+               void ReadMarshalSpecs ()
+               {
+                       if (!m_tHeap.HasTable (FieldMarshalTable.RId))
+                               return;
+
+                       FieldMarshalTable fmTable = m_tableReader.GetFieldMarshalTable ();
+                       for (int i = 0; i < fmTable.Rows.Count; i++) {
+                               FieldMarshalRow fmRow = fmTable [i];
+
+                               if (fmRow.Parent.RID == 0)
+                                       continue;
+
+                               IHasMarshalSpec owner = null;
+                               switch (fmRow.Parent.TokenType) {
+                               case TokenType.Field:
+                                       owner = GetFieldDefAt (fmRow.Parent.RID);
+                                       break;
+                               case TokenType.Param:
+                                       owner = GetParamDefAt (fmRow.Parent.RID);
+                                       break;
+                               }
+
+                               owner.MarshalSpec = BuildMarshalDesc (
+                                       m_sigReader.GetMarshalSig (fmRow.NativeType), owner);
+                       }
+               }
+
+               void ReadInitialValues ()
+               {
+                       if (!m_tHeap.HasTable (FieldRVATable.RId))
+                               return;
+
+                       FieldRVATable frTable = m_tableReader.GetFieldRVATable ();
+                       for (int i = 0; i < frTable.Rows.Count; i++) {
+                               FieldRVARow frRow = frTable [i];
+                               FieldDefinition field = GetFieldDefAt (frRow.Field);
+                               field.RVA = frRow.RVA;
+                               SetInitialValue (field);
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs
new file mode 100644 (file)
index 0000000..7e94599
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// ArrayDimension.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class ArrayDimension {
+
+               int m_lowerBound;
+               int m_upperBound;
+
+               public int LowerBound {
+                       get { return m_lowerBound; }
+                       set { m_lowerBound = value; }
+               }
+
+               public int UpperBound {
+                       get { return m_upperBound; }
+                       set { m_upperBound = value; }
+               }
+
+               public ArrayDimension (int lb, int ub)
+               {
+                       m_lowerBound = lb;
+                       m_upperBound = ub;
+               }
+
+               public override string ToString ()
+               {
+                       if (m_upperBound == 0)
+                               return string.Empty;
+                       return string.Concat (m_lowerBound, "...", m_upperBound);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs
new file mode 100644 (file)
index 0000000..e7b5082
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// ArrayDimensionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ArrayDimensionCollection : CollectionBase {
+
+               ArrayType m_container;
+
+               public ArrayDimension this [int index] {
+                       get { return List [index] as ArrayDimension; }
+                       set { List [index] = value; }
+               }
+
+               public ArrayType Container {
+                       get { return m_container; }
+               }
+
+               public ArrayDimensionCollection (ArrayType container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (ArrayDimension value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (ArrayDimension value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (ArrayDimension value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, ArrayDimension value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (ArrayDimension value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is ArrayDimension))
+                               throw new ArgumentException ("Must be of type " + typeof (ArrayDimension).FullName);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs
new file mode 100644 (file)
index 0000000..e06a8eb
--- /dev/null
@@ -0,0 +1,109 @@
+//
+// ArrayType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Text;
+
+       using Mono.Cecil.Signatures;
+
+       internal sealed class ArrayType : TypeSpecification {
+
+               private ArrayDimensionCollection m_dimensions;
+
+               public ArrayDimensionCollection Dimensions {
+                       get { return m_dimensions; }
+               }
+
+               public int Rank {
+                       get { return m_dimensions.Count; }
+               }
+
+               public bool IsSizedArray {
+                       get {
+                               if (this.Rank != 1)
+                                       return false;
+                               ArrayDimension dim = m_dimensions [0];
+                               return dim.UpperBound == 0;
+                       }
+               }
+
+               public override string Name {
+                       get { return string.Concat (base.Name, Suffix ()); }
+               }
+
+               public override string FullName {
+                       get { return string.Concat (base.FullName, Suffix ()); }
+               }
+
+               string Suffix ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append ("[");
+                       for (int i = 0; i < m_dimensions.Count; i++) {
+                               ArrayDimension dim = m_dimensions [i];
+                               string rank = dim.ToString ();
+                               if (i < m_dimensions.Count - 1)
+                                       sb.Append (",");
+                               if (rank.Length > 0) {
+                                       sb.Append (" ");
+                                       sb.Append (rank);
+                               }
+                       }
+                       sb.Append ("]");
+                       return sb.ToString ();
+               }
+
+               internal ArrayType (TypeReference elementType, ArrayShape shape) : base (elementType)
+               {
+                       m_dimensions = new ArrayDimensionCollection (this);
+                       for (int i = 0; i < shape.Rank; i++) {
+                               int lower = 0, upper = 0;
+                               if (i < shape.NumSizes)
+                                       if (i < shape.NumLoBounds) {
+                                               lower = shape.LoBounds [i];
+                                               upper = shape.LoBounds [i] + shape.Sizes [i] - 1;
+                                       } else
+                                               upper = shape.Sizes [i] - 1;
+
+                               m_dimensions.Add (new ArrayDimension (lower, upper));
+                       }
+               }
+
+               public ArrayType (TypeReference elementType, int rank) : base (elementType)
+               {
+                       m_dimensions = new ArrayDimensionCollection (this);
+                       for (int i = 0; i < rank; i++)
+                               m_dimensions.Add (new ArrayDimension (0, 0));
+               }
+
+               public ArrayType (TypeReference elementType) : this (elementType, 1)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs
new file mode 100644 (file)
index 0000000..b0c3aa6
--- /dev/null
@@ -0,0 +1,169 @@
+//
+// AssemblyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Metadata;
+
+       internal class AssemblyDefinition : ICustomAttributeProvider,
+               IHasSecurity, IAnnotationProvider, IReflectionStructureVisitable {
+
+               MetadataToken m_token;
+               AssemblyNameDefinition m_asmName;
+               ModuleDefinitionCollection m_modules;
+               SecurityDeclarationCollection m_secDecls;
+               CustomAttributeCollection m_customAttrs;
+               MethodDefinition m_ep;
+               TargetRuntime m_runtime;
+               AssemblyKind m_kind;
+
+               ModuleDefinition m_mainModule;
+               StructureReader m_reader;
+
+               IAssemblyResolver m_resolver;
+               IDictionary m_annotations;
+
+               public MetadataToken MetadataToken {
+                       get { return m_token; }
+                       set { m_token = value; }
+               }
+
+               public AssemblyNameDefinition Name {
+                       get { return m_asmName; }
+               }
+
+               public ModuleDefinitionCollection Modules {
+                       get { return m_modules; }
+               }
+
+               public bool HasSecurityDeclarations {
+                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+               }
+
+               public SecurityDeclarationCollection SecurityDeclarations {
+                       get {
+                               if (m_secDecls == null)
+                                       m_secDecls = new SecurityDeclarationCollection (this);
+
+                               return m_secDecls;
+                       }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public MethodDefinition EntryPoint {
+                       get { return m_ep; }
+                       set { m_ep = value; }
+               }
+
+               public TargetRuntime Runtime {
+                       get { return m_runtime; }
+                       set { m_runtime = value; }
+               }
+
+               public AssemblyKind Kind {
+                       get { return m_kind; }
+                       set { m_kind = value; }
+               }
+
+               public ModuleDefinition MainModule {
+                       get {
+                               if (m_mainModule == null) {
+                                       foreach (ModuleDefinition module in m_modules) {
+                                               if (module.Main) {
+                                                       m_mainModule = module;
+                                                       break;
+                                               }
+                                       }
+                               }
+                               return m_mainModule;
+                       }
+               }
+
+               internal StructureReader Reader {
+                       get { return m_reader; }
+               }
+
+               public IAssemblyResolver Resolver {
+                       get { return m_resolver; }
+                       set { m_resolver = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               internal AssemblyDefinition (AssemblyNameDefinition name)
+               {
+                       if (name == null)
+                               throw new ArgumentNullException ("name");
+
+                       m_asmName = name;
+                       m_modules = new ModuleDefinitionCollection (this);
+                       m_resolver = new DefaultAssemblyResolver ();
+               }
+
+               internal AssemblyDefinition (AssemblyNameDefinition name, StructureReader reader) : this (name)
+               {
+                       m_reader = reader;
+               }
+
+               public void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitAssemblyDefinition (this);
+
+                       m_asmName.Accept (visitor);
+                       m_modules.Accept (visitor);
+
+                       visitor.TerminateAssemblyDefinition (this);
+               }
+
+               public override string ToString ()
+               {
+                       return m_asmName.FullName;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs
new file mode 100644 (file)
index 0000000..8a63627
--- /dev/null
@@ -0,0 +1,183 @@
+//
+// AssemblyFactory.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.IO;
+       using SR = System.Reflection;
+
+       using Mono.Cecil.Binary;
+
+       internal sealed class AssemblyFactory {
+
+               AssemblyFactory ()
+               {
+               }
+
+               static AssemblyDefinition GetAssembly (ImageReader irv, bool manifestOnly)
+               {
+                       StructureReader srv = new StructureReader (irv, manifestOnly);
+                       AssemblyDefinition asm = new AssemblyDefinition (
+                               new AssemblyNameDefinition (), srv);
+
+                       asm.Accept (srv);
+                       return asm;
+               }
+
+               static AssemblyDefinition GetAssembly (ImageReader reader)
+               {
+                       return GetAssembly (reader, false);
+               }
+
+               static AssemblyDefinition GetAssemblyManifest (ImageReader reader)
+               {
+                       return GetAssembly (reader, true);
+               }
+
+               public static AssemblyDefinition GetAssembly (string file)
+               {
+                       return GetAssembly (ImageReader.Read (file));
+               }
+
+               public static AssemblyDefinition GetAssembly (byte [] assembly)
+               {
+                       return GetAssembly (ImageReader.Read (assembly));
+               }
+
+               public static AssemblyDefinition GetAssembly (Stream stream)
+               {
+                       return GetAssembly (ImageReader.Read (stream));
+               }
+
+               public static AssemblyDefinition GetAssemblyManifest (string file)
+               {
+                       return GetAssemblyManifest (ImageReader.Read (file));
+               }
+
+               public static AssemblyDefinition GetAssemblyManifest (byte [] assembly)
+               {
+                       return GetAssemblyManifest (ImageReader.Read (assembly));
+               }
+
+               public static AssemblyDefinition GetAssemblyManifest (Stream stream)
+               {
+                       return GetAssemblyManifest (ImageReader.Read (stream));
+               }
+
+               static TargetRuntime CurrentRuntime ()
+               {
+                       Version corlib = typeof (object).Assembly.GetName ().Version;
+
+                       switch (corlib.Major) {
+                       case 1:
+                               return corlib.Minor == 0 ? TargetRuntime.NET_1_0 : TargetRuntime.NET_1_1;
+                       case 2:
+                               return TargetRuntime.NET_2_0;
+                       case 4:
+                               return TargetRuntime.NET_4_0;
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
+
+               public static AssemblyDefinition DefineAssembly (string name, AssemblyKind kind)
+               {
+                       return DefineAssembly (name, name, CurrentRuntime (), kind);
+               }
+
+               public static AssemblyDefinition DefineAssembly (string name, TargetRuntime rt, AssemblyKind kind)
+               {
+                       return DefineAssembly (name, name, rt, kind);
+               }
+
+               public static AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, TargetRuntime rt, AssemblyKind kind)
+               {
+                       AssemblyNameDefinition asmName = new AssemblyNameDefinition ();
+                       asmName.Name = assemblyName;
+                       AssemblyDefinition asm = new AssemblyDefinition (asmName);
+                       asm.Runtime = rt;
+                       asm.Kind = kind;
+                       ModuleDefinition main = new ModuleDefinition (moduleName, asm, true);
+                       asm.Modules.Add (main);
+                       return asm;
+               }
+
+               static void WriteAssembly (AssemblyDefinition asm, BinaryWriter bw)
+               {
+                       asm.Accept (new StructureWriter (asm, bw));
+               }
+
+               public static void SaveAssembly (AssemblyDefinition asm, string file)
+               {
+                       using (FileStream fs = new FileStream (
+                               file, FileMode.Create, FileAccess.Write, FileShare.None)) {
+
+                               SaveAssembly (asm, fs);
+                               asm.MainModule.Image.SetFileInfo (new FileInfo (file));
+                       }
+               }
+
+               public static void SaveAssembly (AssemblyDefinition asm, out byte [] assembly)
+               {
+                       MemoryBinaryWriter bw = new MemoryBinaryWriter ();
+                       SaveAssembly (asm, bw.BaseStream);
+                       assembly = bw.ToArray ();
+               }
+
+               public static void SaveAssembly (AssemblyDefinition asm, Stream stream)
+               {
+                       BinaryWriter bw = new BinaryWriter (stream);
+                       try {
+                               WriteAssembly (asm, bw);
+                       } finally {
+                               bw.Close ();
+                       }
+
+                       foreach (ModuleDefinition module in asm.Modules)
+                               if (module.Controller.Writer.SaveSymbols)
+                                       module.Controller.Writer.WriteSymbols (module);
+               }
+
+#if !CF_1_0 && !CF_2_0
+               public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm, AppDomain domain)
+               {
+                       using (MemoryBinaryWriter writer = new MemoryBinaryWriter ()) {
+
+                               WriteAssembly (asm, writer);
+                               return domain.Load (writer.ToArray ());
+                       }
+               }
+
+               public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm)
+               {
+                       return CreateReflectionAssembly (asm, AppDomain.CurrentDomain);
+               }
+#endif
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs
new file mode 100644 (file)
index 0000000..bc2980d
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// AssemblyFlags.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum AssemblyFlags : uint {
+               PublicKey                                               = 0x0001,
+               SideBySideCompatible                    = 0x0000,
+               Retargetable                                    = 0x0100,
+               EnableJITcompileTracking                = 0x8000,
+               DisableJITcompileOptimizer              = 0x4000
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs
new file mode 100644 (file)
index 0000000..c95c842
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// AssemblyHashAlgorithm.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum AssemblyHashAlgorithm : uint {
+               None            = 0x0000,
+               Reserved        = 0x8003,       // MD5
+               SHA1            = 0x8004
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyInfo.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..cd77a32
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+#if !EMBEDDED
+
+[assembly: AssemblyTitle ("Mono.Cecil")]
+[assembly: AssemblyDescription ("Library for reading and writing CIL images")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyProduct ("Mono.Cecil")]
+[assembly: AssemblyCopyright ("(C) 2005 - 2007, Jb Evain")]
+[assembly: AssemblyCulture ("")]
+
+[assembly: CLSCompliant (false)]
+[assembly: ComVisible (false)]
+
+[assembly: AssemblyVersion (
+       //
+       // DO NOT MODIFY THE STRING BELOWS WITOUT UPDATING cecil.pc.in in mono/data
+       //
+       "0.6.9.0"
+       //
+       // DO NOT MODIFY THE STRING ABOVE WITHOUT UPDATING cecil.pc.in in mono/data
+)]
+
+#if KEYFILE
+[assembly: AssemblyKeyFile("../../mono.snk")]
+#endif
+
+#endif
+
+
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs
new file mode 100644 (file)
index 0000000..a4b7e46
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// AssemblyKind.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum AssemblyKind {
+               Dll,
+               Console,
+               Windows
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs
new file mode 100644 (file)
index 0000000..2b30344
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// AssemblyLinkedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class AssemblyLinkedResource : Resource {
+
+               private AssemblyNameReference m_asmRef;
+
+               public AssemblyNameReference Assembly {
+                       get { return m_asmRef; }
+                       set { m_asmRef = value; }
+               }
+
+               public AssemblyLinkedResource (string name, ManifestResourceAttributes flags,
+                       AssemblyNameReference asmRef) : base (name, flags)
+               {
+                       m_asmRef = asmRef;
+               }
+
+               public override void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitAssemblyLinkedResource (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs
new file mode 100644 (file)
index 0000000..ef36e08
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// AssemblyNameDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal sealed class AssemblyNameDefinition : AssemblyNameReference {
+
+               public override byte [] Hash {
+                       get { return new byte [0]; }
+               }
+
+               public AssemblyNameDefinition () : base()
+               {
+               }
+
+               public AssemblyNameDefinition (string name, string culture, Version version) : base (name, culture, version)
+               {
+               }
+
+               public override void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitAssemblyNameDefinition (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs
new file mode 100644 (file)
index 0000000..3d2278a
--- /dev/null
@@ -0,0 +1,275 @@
+//
+// AssemblyNameReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Globalization;
+       using System.Security.Cryptography;
+       using System.Text;
+
+       using Mono.Cecil.Metadata;
+
+       internal class AssemblyNameReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+
+               string m_name;
+               string m_culture;
+               Version m_version;
+               AssemblyFlags m_flags;
+               byte [] m_publicKey;
+               byte [] m_publicKeyToken;
+               AssemblyHashAlgorithm m_hashAlgo;
+               byte [] m_hash;
+               MetadataToken m_token;
+               IDictionary m_annotations;
+
+               bool m_fullNameDiscarded = true;
+               string m_fullName;
+
+               public string Name {
+                       get { return m_name; }
+                       set {
+                               m_name = value;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public string Culture {
+                       get { return m_culture; }
+                       set {
+                               m_culture = value;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public Version Version {
+                       get { return m_version; }
+                       set {
+                                m_version = value;
+                                m_fullNameDiscarded = true;
+                       }
+               }
+
+               public AssemblyFlags Flags {
+                       get { return m_flags; }
+                       set { m_flags = value; }
+               }
+
+               public bool HasPublicKey {
+                       get { return (m_flags & AssemblyFlags.PublicKey) != 0; }
+                       set {
+                               if (value)
+                                       m_flags |= AssemblyFlags.PublicKey;
+                               else
+                                       m_flags &= ~AssemblyFlags.PublicKey;
+                       }
+               }
+
+               public bool IsSideBySideCompatible {
+                       get { return (m_flags & AssemblyFlags.SideBySideCompatible) != 0; }
+                       set {
+                               if (value)
+                                       m_flags |= AssemblyFlags.SideBySideCompatible;
+                               else
+                                       m_flags &= ~AssemblyFlags.SideBySideCompatible;
+                       }
+               }
+
+               public bool IsRetargetable {
+                       get { return (m_flags & AssemblyFlags.Retargetable) != 0; }
+                       set {
+                               if (value)
+                                       m_flags |= AssemblyFlags.Retargetable;
+                               else
+                                       m_flags &= ~AssemblyFlags.Retargetable;
+                       }
+               }
+
+               public byte [] PublicKey {
+                       get { return m_publicKey; }
+                       set {
+                               m_publicKey = value;
+                               m_publicKeyToken = null;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public byte [] PublicKeyToken {
+                       get {
+#if !CF_1_0
+                               if ((m_publicKeyToken == null || m_publicKeyToken.Length == 0) && (m_publicKey != null && m_publicKey.Length > 0)) {
+                                       HashAlgorithm ha;
+                                       switch (m_hashAlgo) {
+                                       case AssemblyHashAlgorithm.Reserved:
+                                               ha = MD5.Create (); break;
+                                       default:
+                                               // None default to SHA1
+                                               ha = SHA1.Create (); break;
+                                       }
+                                       byte [] hash = ha.ComputeHash (m_publicKey);
+                                       // we need the last 8 bytes in reverse order
+                                       m_publicKeyToken = new byte [8];
+                                       Array.Copy (hash, (hash.Length - 8), m_publicKeyToken, 0, 8);
+                                       Array.Reverse (m_publicKeyToken, 0, 8);
+                               }
+#endif
+                               return m_publicKeyToken;
+                       }
+                       set {
+                               m_publicKeyToken = value;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public string FullName {
+                       get {
+                               if (m_fullName != null && !m_fullNameDiscarded)
+                                       return m_fullName;
+
+                               StringBuilder sb = new StringBuilder ();
+                               string sep = ", ";
+                               sb.Append (m_name);
+                               if (m_version != null) {
+                                       sb.Append (sep);
+                                       sb.Append ("Version=");
+                                       sb.Append (m_version.ToString ());
+                               }
+                               sb.Append (sep);
+                               sb.Append ("Culture=");
+                               sb.Append (m_culture == null || m_culture.Length == 0 ? "neutral" : m_culture);
+                               sb.Append (sep);
+                               sb.Append ("PublicKeyToken=");
+                               if (this.PublicKeyToken != null && m_publicKeyToken.Length > 0) {
+                                       for (int i = 0 ; i < m_publicKeyToken.Length ; i++) {
+                                               sb.Append (m_publicKeyToken [i].ToString ("x2"));
+                                       }
+                               } else {
+                                       sb.Append ("null");
+                               }
+                               m_fullName = sb.ToString ();
+                               m_fullNameDiscarded = false;
+                               return m_fullName;
+                       }
+               }
+
+               public static AssemblyNameReference Parse (string fullName)
+               {
+                       if (fullName == null)
+                               throw new ArgumentNullException ("fullName");
+                       if (fullName.Length == 0)
+                               throw new ArgumentException ("Name can not be empty");
+
+                       AssemblyNameReference name = new AssemblyNameReference ();
+                       string [] tokens = fullName.Split (',');
+                       for (int i = 0; i < tokens.Length; i++) {
+                               string token = tokens [i].Trim ();
+
+                               if (i == 0) {
+                                       name.Name = token;
+                                       continue;
+                               }
+
+                               string [] parts = token.Split ('=');
+                               if (parts.Length != 2)
+                                       throw new ArgumentException ("Malformed name");
+
+                               switch (parts [0]) {
+                               case "Version":
+                                       name.Version = new Version (parts [1]);
+                                       break;
+                               case "Culture":
+                                       name.Culture = parts [1];
+                                       break;
+                               case "PublicKeyToken":
+                                       string pkToken = parts [1];
+                                       if (pkToken == "null")
+                                               break;
+
+                                       name.PublicKeyToken = new byte [pkToken.Length / 2];
+                                       for (int j = 0; j < name.PublicKeyToken.Length; j++) {
+                                               name.PublicKeyToken [j] = Byte.Parse (pkToken.Substring (j * 2, 2), NumberStyles.HexNumber);
+                                       }
+                                       break;
+                               }
+                       }
+
+                       return name;
+               }
+
+               public AssemblyHashAlgorithm HashAlgorithm
+               {
+                       get { return m_hashAlgo; }
+                       set { m_hashAlgo = value; }
+               }
+
+               public virtual byte [] Hash {
+                       get { return m_hash; }
+                       set { m_hash = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return m_token; }
+                       set { m_token = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public AssemblyNameReference () : this (string.Empty, string.Empty, new Version (0, 0, 0, 0))
+               {
+               }
+
+               public AssemblyNameReference (string name, string culture, Version version)
+               {
+                       if (name == null)
+                               throw new ArgumentNullException ("name");
+                       if (culture == null)
+                               throw new ArgumentNullException ("culture");
+                       m_name = name;
+                       m_culture = culture;
+                       m_version = version;
+                       m_hashAlgo = AssemblyHashAlgorithm.None;
+               }
+
+               public override string ToString ()
+               {
+                       return this.FullName;
+               }
+
+               public virtual void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitAssemblyNameReference (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs
new file mode 100644 (file)
index 0000000..280ede5
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// AssemblyNameReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class AssemblyNameReferenceCollection : CollectionBase, IReflectionStructureVisitable {
+
+               ModuleDefinition m_container;
+
+               public AssemblyNameReference this [int index] {
+                       get { return List [index] as AssemblyNameReference; }
+                       set { List [index] = value; }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public AssemblyNameReferenceCollection (ModuleDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (AssemblyNameReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (AssemblyNameReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (AssemblyNameReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, AssemblyNameReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (AssemblyNameReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is AssemblyNameReference))
+                               throw new ArgumentException ("Must be of type " + typeof (AssemblyNameReference).FullName);
+               }
+
+               public void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitAssemblyNameReferenceCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs
new file mode 100644 (file)
index 0000000..f661075
--- /dev/null
@@ -0,0 +1,264 @@
+//
+// BaseAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.IO;
+       using SR = System.Reflection;
+       using System.Text;
+
+       internal abstract class BaseAssemblyResolver : IAssemblyResolver {
+
+               ArrayList m_directories;
+               string[] m_monoGacPaths;
+
+               public void AddSearchDirectory (string directory)
+               {
+                       m_directories.Add (directory);
+               }
+
+               public void RemoveSearchDirectory (string directory)
+               {
+                       m_directories.Remove (directory);
+               }
+
+               public string [] GetSearchDirectories ()
+               {
+                       return (string []) m_directories.ToArray (typeof (string));
+               }
+
+               public virtual AssemblyDefinition Resolve (string fullName)
+               {
+                       return Resolve (AssemblyNameReference.Parse (fullName));
+               }
+
+               public BaseAssemblyResolver ()
+               {
+                       m_directories = new ArrayList ();
+                       m_directories.Add (".");
+                       m_directories.Add ("bin");
+               }
+
+               public virtual AssemblyDefinition Resolve (AssemblyNameReference name)
+               {
+                       AssemblyDefinition assembly;
+                       string frameworkdir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+
+                       assembly = SearchDirectory (name, m_directories);
+                       if (assembly != null)
+                               return assembly;
+
+                       if (IsZero (name.Version)) {
+                               assembly = SearchDirectory (name, new string [] {frameworkdir});
+                               if (assembly != null)
+                                       return assembly;
+                       }
+
+#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
+                       if (name.Name == "mscorlib") {
+                               assembly = GetCorlib (name);
+                               if (assembly != null)
+                                       return assembly;
+                       }
+
+                       assembly = GetAssemblyInGac (name);
+                       if (assembly != null)
+                               return assembly;
+#endif
+
+                       assembly = SearchDirectory (name, new string [] {frameworkdir});
+                       if (assembly != null)
+                               return assembly;
+
+                       throw new FileNotFoundException ("Could not resolve: " + name);
+               }
+
+               static readonly string [] _extentions = new string [] { ".dll", ".exe" };
+
+               static AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable directories)
+               {
+                       foreach (string dir in directories) {
+                               foreach (string ext in _extentions) {
+                                       string file = Path.Combine (dir, name.Name + ext);
+                                       if (File.Exists (file))
+                                               return AssemblyFactory.GetAssembly (file);
+                               }
+                       }
+
+                       return null;
+               }
+
+               static bool IsZero (Version version)
+               {
+                       return version.Major == 0 && version.Minor == 0 && version.Build == 0 && version.Revision == 0;
+               }
+
+#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
+               static AssemblyDefinition GetCorlib (AssemblyNameReference reference)
+               {
+                       SR.AssemblyName corlib = typeof (object).Assembly.GetName ();
+                       if (corlib.Version == reference.Version || IsZero (reference.Version))
+                               return AssemblyFactory.GetAssembly (typeof (object).Module.FullyQualifiedName);
+
+                       string path = Directory.GetParent (
+                               Directory.GetParent (
+                                       typeof (object).Module.FullyQualifiedName).FullName
+                               ).FullName;
+
+                       string runtime_path = null;
+                       if (OnMono ()) {
+                               if (reference.Version.Major == 1)
+                                       runtime_path = "1.0";
+                               else if (reference.Version.Major == 2) {
+                                       if (reference.Version.Minor == 1)
+                                               runtime_path = "2.1";
+                                       else
+                                               runtime_path = "2.0";
+                               } else if (reference.Version.Major == 4)
+                                       runtime_path = "4.0";
+                       } else {
+                               switch (reference.Version.ToString ()) {
+                               case "1.0.3300.0":
+                                       runtime_path = "v1.0.3705";
+                                       break;
+                               case "1.0.5000.0":
+                                       runtime_path = "v1.1.4322";
+                                       break;
+                               case "2.0.0.0":
+                                       runtime_path = "v2.0.50727";
+                                       break;
+                               case "4.0.0.0":
+                                       runtime_path = "v4.0.30319";
+                                       break;
+                               }
+                       }
+
+                       if (runtime_path == null)
+                               throw new NotSupportedException ("Version not supported: " + reference.Version);
+
+                       path = Path.Combine (path, runtime_path);
+
+                       if (File.Exists (Path.Combine (path, "mscorlib.dll")))
+                               return AssemblyFactory.GetAssembly (Path.Combine (path, "mscorlib.dll"));
+
+                       return null;
+               }
+
+               public static bool OnMono ()
+               {
+                       return typeof (object).Assembly.GetType ("System.MonoType", false) != null;
+               }
+
+               string[] MonoGacPaths {
+                       get {
+                               if (m_monoGacPaths == null)
+                                       m_monoGacPaths = GetDefaultMonoGacPaths ();
+                               return m_monoGacPaths;
+                       }
+               }
+
+               static string[] GetDefaultMonoGacPaths ()
+               {
+                       ArrayList paths = new ArrayList ();
+                       string s = GetCurrentGacPath ();
+                       if (s != null)
+                               paths.Add (s);
+                       string gacPathsEnv = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
+                       if (gacPathsEnv != null && gacPathsEnv.Length > 0) {
+                               string[] gacPrefixes = gacPathsEnv.Split (Path.PathSeparator);
+                               foreach (string gacPrefix in gacPrefixes) {
+                                       if (gacPrefix != null && gacPrefix.Length > 0) {
+                                               string gac = Path.Combine (Path.Combine (Path.Combine (gacPrefix, "lib"), "mono"), "gac");
+                                               if (Directory.Exists (gac) && !paths.Contains (gac))
+                                                       paths.Add (gac);
+                                       }
+                               }
+                       }
+                       return (string[]) paths.ToArray (typeof (String));
+               }
+
+               AssemblyDefinition GetAssemblyInGac (AssemblyNameReference reference)
+               {
+                       if (reference.PublicKeyToken == null || reference.PublicKeyToken.Length == 0)
+                               return null;
+
+                       if (OnMono ()) {
+                               foreach (string gacpath in MonoGacPaths) {
+                                       string s = GetAssemblyFile (reference, gacpath);
+                                       if (File.Exists (s))
+                                               return AssemblyFactory.GetAssembly (s);
+                               }
+                       } else {
+                               string currentGac = GetCurrentGacPath ();
+                               if (currentGac == null)
+                                       return null;
+
+                               string [] gacs = new string [] {"GAC_MSIL", "GAC_32", "GAC"};
+                               for (int i = 0; i < gacs.Length; i++) {
+                                       string gac = Path.Combine (Directory.GetParent (currentGac).FullName, gacs [i]);
+                                       string asm = GetAssemblyFile (reference, gac);
+                                       if (Directory.Exists (gac) && File.Exists (asm))
+                                               return AssemblyFactory.GetAssembly (asm);
+                               }
+                       }
+
+                       return null;
+               }
+
+               static string GetAssemblyFile (AssemblyNameReference reference, string gac)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (reference.Version);
+                       sb.Append ("__");
+                       for (int i = 0; i < reference.PublicKeyToken.Length; i++)
+                               sb.Append (reference.PublicKeyToken [i].ToString ("x2"));
+
+                       return Path.Combine (
+                               Path.Combine (
+                                       Path.Combine (gac, reference.Name), sb.ToString ()),
+                                       string.Concat (reference.Name, ".dll"));
+               }
+
+               static string GetCurrentGacPath ()
+               {
+                       string file = typeof (Uri).Module.FullyQualifiedName;
+                       if (!File.Exists (file))
+                               return null;
+
+                       return Directory.GetParent (
+                               Directory.GetParent (
+                                       Path.GetDirectoryName (
+                                               file)
+                                       ).FullName
+                               ).FullName;
+               }
+#endif
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionReader.cs
new file mode 100644 (file)
index 0000000..ceeec17
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// BaseReflectionReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal abstract class BaseReflectionReader : BaseReflectionVisitor, IDetailReader {
+
+               public virtual void ReadSemantic (EventDefinition evt)
+               {
+               }
+
+               public virtual void ReadSemantic (PropertyDefinition prop)
+               {
+               }
+
+               public virtual void ReadMarshalSpec (ParameterDefinition param)
+               {
+               }
+
+               public virtual void ReadMarshalSpec (FieldDefinition field)
+               {
+               }
+
+               public virtual void ReadLayout (TypeDefinition type)
+               {
+               }
+
+               public virtual void ReadLayout (FieldDefinition field)
+               {
+               }
+
+               public virtual void ReadConstant (FieldDefinition field)
+               {
+               }
+
+               public virtual void ReadConstant (PropertyDefinition prop)
+               {
+               }
+
+               public virtual void ReadConstant (ParameterDefinition param)
+               {
+               }
+
+               public virtual void ReadInitialValue (FieldDefinition field)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs
new file mode 100644 (file)
index 0000000..5bef67a
--- /dev/null
@@ -0,0 +1,188 @@
+//
+// BaseReflectionVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal abstract class BaseReflectionVisitor : IReflectionVisitor {
+
+               public virtual void VisitModuleDefinition (ModuleDefinition module)
+               {
+               }
+
+               public virtual void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
+               {
+               }
+
+               public virtual void VisitTypeDefinition (TypeDefinition type)
+               {
+               }
+
+               public virtual void VisitTypeReferenceCollection (TypeReferenceCollection refs)
+               {
+               }
+
+               public virtual void VisitTypeReference (TypeReference type)
+               {
+               }
+
+               public virtual void VisitMemberReferenceCollection (MemberReferenceCollection members)
+               {
+               }
+
+               public virtual void VisitMemberReference (MemberReference member)
+               {
+               }
+
+               public virtual void VisitInterfaceCollection (InterfaceCollection interfaces)
+               {
+               }
+
+               public virtual void VisitInterface (TypeReference interf)
+               {
+               }
+
+               public virtual void VisitExternTypeCollection (ExternTypeCollection externs)
+               {
+               }
+
+               public virtual void VisitExternType (TypeReference externType)
+               {
+               }
+
+               public virtual void VisitOverrideCollection (OverrideCollection meth)
+               {
+               }
+
+               public virtual void VisitOverride (MethodReference ov)
+               {
+               }
+
+               public virtual void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
+               {
+               }
+
+               public virtual void VisitNestedType (TypeDefinition nestedType)
+               {
+               }
+
+               public virtual void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
+               {
+               }
+
+               public virtual void VisitParameterDefinition (ParameterDefinition parameter)
+               {
+               }
+
+               public virtual void VisitMethodDefinitionCollection (MethodDefinitionCollection methods)
+               {
+               }
+
+               public virtual void VisitMethodDefinition (MethodDefinition method)
+               {
+               }
+
+               public virtual void VisitConstructorCollection (ConstructorCollection ctors)
+               {
+               }
+
+               public virtual void VisitConstructor (MethodDefinition ctor)
+               {
+               }
+
+               public virtual void VisitPInvokeInfo (PInvokeInfo pinvk)
+               {
+               }
+
+               public virtual void VisitEventDefinitionCollection (EventDefinitionCollection events)
+               {
+               }
+
+               public virtual void VisitEventDefinition (EventDefinition evt)
+               {
+               }
+
+               public virtual void VisitFieldDefinitionCollection (FieldDefinitionCollection fields)
+               {
+               }
+
+               public virtual void VisitFieldDefinition (FieldDefinition field)
+               {
+               }
+
+               public virtual void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
+               {
+               }
+
+               public virtual void VisitPropertyDefinition (PropertyDefinition property)
+               {
+               }
+
+               public virtual void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
+               {
+               }
+
+               public virtual void VisitSecurityDeclaration (SecurityDeclaration secDecl)
+               {
+               }
+
+               public virtual void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
+               {
+               }
+
+               public virtual void VisitCustomAttribute (CustomAttribute customAttr)
+               {
+               }
+
+               public virtual void VisitGenericParameterCollection (GenericParameterCollection genparams)
+               {
+               }
+
+               public virtual void VisitGenericParameter (GenericParameter genparam)
+               {
+               }
+
+               public virtual void VisitMarshalSpec (MarshalSpec marshalSpec)
+               {
+               }
+
+               public virtual void TerminateModuleDefinition (ModuleDefinition module)
+               {
+               }
+
+               protected void VisitCollection (ICollection coll)
+               {
+                       if (coll.Count == 0)
+                               return;
+
+                       foreach (IReflectionVisitable visitable in coll)
+                               visitable.Accept (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs
new file mode 100644 (file)
index 0000000..e2c6ec3
--- /dev/null
@@ -0,0 +1,96 @@
+//
+// BaseStructureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal abstract class BaseStructureVisitor : IReflectionStructureVisitor {
+
+               public virtual void VisitAssemblyDefinition (AssemblyDefinition asm)
+               {
+               }
+
+               public virtual void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
+               {
+               }
+
+               public virtual void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
+               {
+               }
+
+               public virtual void VisitAssemblyNameReference (AssemblyNameReference name)
+               {
+               }
+
+               public virtual void VisitResourceCollection (ResourceCollection resources)
+               {
+               }
+
+               public virtual void VisitEmbeddedResource (EmbeddedResource res)
+               {
+               }
+
+               public virtual void VisitLinkedResource (LinkedResource res)
+               {
+               }
+
+               public virtual void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
+               {
+               }
+
+               public virtual void VisitModuleDefinition (ModuleDefinition module)
+               {
+               }
+
+               public virtual void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
+               {
+               }
+
+               public virtual void VisitModuleReference (ModuleReference module)
+               {
+               }
+
+               public virtual void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
+               {
+               }
+
+               public virtual void TerminateAssemblyDefinition (AssemblyDefinition asm)
+               {
+               }
+
+               protected void VisitCollection (ICollection coll)
+               {
+                       if (coll.Count == 0)
+                               return;
+
+                       foreach (IReflectionStructureVisitable visitable in coll)
+                               visitable.Accept (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CallSite.cs b/mcs/tools/cil-strip/Mono.Cecil/CallSite.cs
new file mode 100644 (file)
index 0000000..ece4997
--- /dev/null
@@ -0,0 +1,109 @@
+//
+// CallSite.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+       using System.Text;
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class CallSite : IMethodSignature, IAnnotationProvider, IMetadataTokenProvider {
+
+               MethodReference m_function;
+
+               public bool HasThis {
+                       get { return m_function.HasThis; }
+                       set { m_function.HasThis = value; }
+               }
+
+               public bool ExplicitThis {
+                       get { return m_function.ExplicitThis; }
+                       set { m_function.ExplicitThis = value; }
+               }
+
+               public MethodCallingConvention CallingConvention {
+                       get { return m_function.CallingConvention; }
+                       set { m_function.CallingConvention = value; }
+               }
+
+               public bool HasParameters {
+                       get { return m_function.HasParameters; }
+               }
+
+               public ParameterDefinitionCollection Parameters {
+                       get { return m_function.Parameters; }
+               }
+
+               public MethodReturnType ReturnType {
+                       get { return m_function.ReturnType; }
+                       set { m_function.ReturnType = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return m_function.MetadataToken; }
+                       set { m_function.MetadataToken = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get { return ((IAnnotationProvider) m_function).Annotations; }
+               }
+
+               public CallSite (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType)
+               {
+                       m_function = new MethodReference (string.Empty, hasThis, explicitThis, callConv);
+                       m_function.ReturnType = retType;
+               }
+
+               public int GetSentinel ()
+               {
+                       return m_function.GetSentinel ();
+               }
+
+               public override string ToString ()
+               {
+                       int sentinel = GetSentinel ();
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (m_function.ReturnType.ReturnType.FullName);
+                       sb.Append ("(");
+                       if (m_function.HasParameters) {
+                               for (int i = 0; i < m_function.Parameters.Count; i++) {
+                                       if (i > 0)
+                                               sb.Append (",");
+
+                                       if (i == sentinel)
+                                               sb.Append ("...,");
+
+                                       sb.Append (m_function.Parameters [i].ParameterType.FullName);
+                               }
+                       }
+                       sb.Append (")");
+                       return sb.ToString ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs b/mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs
new file mode 100644 (file)
index 0000000..a8802e2
--- /dev/null
@@ -0,0 +1,68 @@
+//
+// FrameworkCompatibility.cs
+//
+// Author:
+//   Rodrigo B. de Oliveira (rodrigobamboo@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if CF_1_0
+namespace System {
+
+       internal class NotImplementedException : System.Exception {
+
+               public NotImplementedException (string message) : base (message)
+               {
+               }
+
+               public NotImplementedException ()
+               {
+               }
+       }
+}
+#endif
+
+#if CF_1_0 || CF_2_0
+namespace System.Security {
+
+       internal class SecurityElement  {
+
+               public SecurityElement (string tag)
+               {
+               }
+
+               public string Text
+               {
+                       get { return string.Empty; }
+                       set {}
+               }
+
+               public void AddChild (SecurityElement child)
+               {
+               }
+
+               public void AddAttribute (string name, string value)
+               {
+               }
+       }
+}
+#endif
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Constants.cs b/mcs/tools/cil-strip/Mono.Cecil/Constants.cs
new file mode 100644 (file)
index 0000000..46af5cf
--- /dev/null
@@ -0,0 +1,65 @@
+//
+// Constants.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal class Constants {
+
+               Constants ()
+               {
+               }
+
+               public const string Corlib = "mscorlib";
+
+               public const string ModuleType = "<Module>";
+               public const string PrivateImplDetails = "<PrivateImplementationDetails>";
+               public const string Deleted = "_Deleted";
+
+               public const string Void = "System.Void";
+               public const string Object = "System.Object";
+               public const string String = "System.String";
+               public const string Boolean = "System.Boolean";
+               public const string Char = "System.Char";
+               public const string Single = "System.Single";
+               public const string Double = "System.Double";
+               public const string SByte = "System.SByte";
+               public const string Byte = "System.Byte";
+               public const string Int16 = "System.Int16";
+               public const string UInt16 = "System.UInt16";
+               public const string Int32 = "System.Int32";
+               public const string UInt32 = "System.UInt32";
+               public const string Int64 = "System.Int64";
+               public const string UInt64 = "System.UInt64";
+               public const string IntPtr = "System.IntPtr";
+               public const string UIntPtr = "System.UIntPtr";
+               public const string TypedReference = "System.TypedReference";
+               public const string Type = "System.Type";
+               public const string ValueType = "System.ValueType";
+               public const string Enum = "System.Enum";
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs
new file mode 100644 (file)
index 0000000..072aebf
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// ConstraintCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ConstraintCollection : CollectionBase {
+
+               GenericParameter m_container;
+
+               public TypeReference this [int index] {
+                       get { return List [index] as TypeReference; }
+                       set { List [index] = value; }
+               }
+
+               public GenericParameter Container {
+                       get { return m_container; }
+               }
+
+               public ConstraintCollection (GenericParameter container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (TypeReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (TypeReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, TypeReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (TypeReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is TypeReference))
+                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs
new file mode 100644 (file)
index 0000000..011af98
--- /dev/null
@@ -0,0 +1,182 @@
+//
+// ConstructorCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ConstructorCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public MethodDefinition this [int index] {
+                       get { return List [index] as MethodDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public ConstructorCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (MethodDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (MethodDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (MethodDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (MethodDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, MethodDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (MethodDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       MethodDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is MethodDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
+               }
+
+               internal MethodDefinition GetConstructorInternal (bool isStatic, IList parameters)
+               {
+                       if (parameters == null)
+#if CF_2_0 || CF_1_0
+                               parameters = new Type[0];
+#else
+                               parameters = Type.EmptyTypes;
+#endif
+
+                       foreach (MethodDefinition ctor in this) {
+                               if (ctor.IsStatic != isStatic || ctor.Parameters.Count != parameters.Count)
+                                       continue;
+
+                               bool match = true;
+                               for (int i = 0; i < parameters.Count; i++) {
+                                       string pname;
+                                       object param = parameters [i];
+                                       if (param is Type)
+                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
+                                       else if (param is TypeReference)
+                                               pname = (param as TypeReference).FullName;
+                                       else if (param is ParameterDefinition)
+                                               pname = (param as ParameterDefinition).ParameterType.FullName;
+                                       else
+                                               throw new NotSupportedException ();
+
+                                       if (ctor.Parameters [i].ParameterType.FullName != pname) {
+                                               match = false;
+                                               break;
+                                       }
+                               }
+
+                               if (match)
+                                       return ctor;
+                       }
+
+                       return null;
+               }
+
+               public MethodDefinition GetConstructor (bool isStatic, Type [] parameters)
+               {
+                       return GetConstructorInternal (isStatic, parameters);
+               }
+
+               public MethodDefinition GetConstructor (bool isStatic, TypeReference [] parameters)
+               {
+                       return GetConstructorInternal (isStatic, parameters);
+               }
+
+               public MethodDefinition GetConstructor (bool isStatic, ParameterDefinitionCollection parameters)
+               {
+                       return GetConstructorInternal (isStatic, parameters);
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitConstructorCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs
new file mode 100644 (file)
index 0000000..feec720
--- /dev/null
@@ -0,0 +1,199 @@
+//
+// CustomAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal sealed class CustomAttribute : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+
+               MethodReference m_ctor;
+               IList m_parameters;
+               IDictionary m_fields;
+               IDictionary m_properties;
+               IDictionary m_fieldTypes;
+               IDictionary m_propTypes;
+               IDictionary m_annotations;
+
+               bool m_resolved;
+               byte [] m_blob;
+
+               public MethodReference Constructor {
+                       get { return m_ctor; }
+                       set { m_ctor = value; }
+               }
+
+               public IList ConstructorParameters {
+                       get {
+                               if (m_parameters == null)
+                                       m_parameters = new ArrayList ();
+                               return m_parameters;
+                       }
+               }
+
+               public IDictionary Fields {
+                       get {
+                               if (m_fields == null)
+                                       m_fields = new Hashtable ();
+
+                               return m_fields;
+                       }
+               }
+
+               public IDictionary Properties {
+                       get {
+                               if (m_properties == null)
+                                       m_properties = new Hashtable ();
+
+                               return m_properties;
+                       }
+               }
+
+               internal IDictionary FieldTypes {
+                       get {
+                               if (m_fieldTypes == null)
+                                       m_fieldTypes = new Hashtable ();
+
+                               return m_fieldTypes;
+                       }
+               }
+
+               internal IDictionary PropertyTypes {
+                       get {
+                               if (m_propTypes == null)
+                                       m_propTypes = new Hashtable ();
+
+                               return m_propTypes;
+                       }
+               }
+
+               public bool Resolved {
+                       get { return m_resolved; }
+                       set { m_resolved = value; }
+               }
+
+               public byte [] Blob {
+                       get { return m_blob; }
+                       set { m_blob = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public CustomAttribute (MethodReference ctor)
+               {
+                       m_ctor = ctor;
+                       m_resolved = true;
+               }
+
+               public CustomAttribute (MethodReference ctor, byte [] blob)
+               {
+                       m_ctor = ctor;
+                       m_blob = blob;
+               }
+
+               public TypeReference GetFieldType (string fieldName)
+               {
+                       return (TypeReference) FieldTypes [fieldName];
+               }
+
+               public TypeReference GetPropertyType (string propertyName)
+               {
+                       return (TypeReference) PropertyTypes [propertyName];
+               }
+
+               public void SetFieldType (string fieldName, TypeReference type)
+               {
+                       FieldTypes [fieldName] = type;
+               }
+
+               public void SetPropertyType (string propertyName, TypeReference type)
+               {
+                       PropertyTypes [propertyName] = type;
+               }
+
+               public CustomAttribute Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance));
+               }
+
+               static void Clone (IDictionary original, IDictionary target)
+               {
+                       target.Clear ();
+                       foreach (DictionaryEntry entry in original)
+                               target.Add (entry.Key, entry.Value);
+               }
+
+               internal static CustomAttribute Clone (CustomAttribute custattr, ImportContext context)
+               {
+                       CustomAttribute ca = new CustomAttribute (context.Import (custattr.Constructor));
+                       custattr.CopyTo (ca);
+                       return ca;
+               }
+
+               void CopyTo (CustomAttribute target)
+               {
+                       target.Resolved = Resolved;
+                       if (!Resolved) {
+                               target.Blob = Blob;
+                               return;
+                       }
+
+                       foreach (object o in ConstructorParameters)
+                               target.ConstructorParameters.Add (o);
+                       Clone (Fields, target.Fields);
+                       Clone (FieldTypes, target.FieldTypes);
+                       Clone (Properties, target.Properties);
+                       Clone (PropertyTypes, target.PropertyTypes);
+               }
+
+               public bool Resolve ()
+               {
+                       if (Resolved)
+                               return true;
+
+                       ReflectionReader r = m_ctor.DeclaringType.Module.Controller.Reader;
+                       CustomAttribute newCa = r.GetCustomAttribute (m_ctor, Blob, true);
+                       if (!newCa.Resolved)
+                               return false;
+
+                       newCa.CopyTo (this);
+                       return true;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitCustomAttribute (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs
new file mode 100644 (file)
index 0000000..b4e1870
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// CustomAttributeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class CustomAttributeCollection : CollectionBase, IReflectionVisitable {
+
+               ICustomAttributeProvider m_container;
+
+               public CustomAttribute this [int index] {
+                       get { return List [index] as CustomAttribute; }
+                       set { List [index] = value; }
+               }
+
+               public ICustomAttributeProvider Container {
+                       get { return m_container; }
+               }
+
+               public CustomAttributeCollection (ICustomAttributeProvider container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (CustomAttribute value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (CustomAttribute value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (CustomAttribute value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, CustomAttribute value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (CustomAttribute value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is CustomAttribute))
+                               throw new ArgumentException ("Must be of type " + typeof (CustomAttribute).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitCustomAttributeCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs
new file mode 100644 (file)
index 0000000..161349d
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// DefaultAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal class DefaultAssemblyResolver : BaseAssemblyResolver {
+
+               IDictionary m_cache;
+
+               public DefaultAssemblyResolver ()
+               {
+                       m_cache = new Hashtable ();
+               }
+
+               public override AssemblyDefinition Resolve (AssemblyNameReference name)
+               {
+                       AssemblyDefinition asm = (AssemblyDefinition) m_cache [name.FullName];
+                       if (asm == null) {
+                               asm = base.Resolve (name);
+                               m_cache [name.FullName] = asm;
+                       }
+
+                       return asm;
+               }
+
+               protected void RegisterAssembly (AssemblyDefinition assembly)
+               {
+                       string key = assembly.Name.FullName;
+                       if (m_cache.Contains (key))
+                               return;
+
+                       m_cache [key] = assembly;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs
new file mode 100644 (file)
index 0000000..a367f1a
--- /dev/null
@@ -0,0 +1,266 @@
+//
+// DefaultReferenceImporter.cs
+//
+// Author:
+//   Jb Evain (jbevain@novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal class DefaultImporter : IImporter {
+
+               ModuleDefinition m_module;
+
+               public ModuleDefinition Module {
+                       get { return m_module; }
+               }
+
+               public DefaultImporter (ModuleDefinition module)
+               {
+                       m_module = module;
+               }
+
+               public AssemblyNameReference ImportAssembly (AssemblyNameReference asm)
+               {
+                       AssemblyNameReference asmRef = GetAssemblyNameReference (asm);
+                       if (asmRef != null)
+                               return asmRef;
+
+                       asmRef = new AssemblyNameReference (
+                               asm.Name, asm.Culture, asm.Version);
+                       asmRef.PublicKeyToken = asm.PublicKeyToken;
+                       asmRef.HashAlgorithm = asm.HashAlgorithm;
+                       m_module.AssemblyReferences.Add (asmRef);
+                       return asmRef;
+               }
+
+               AssemblyNameReference GetAssemblyNameReference (AssemblyNameReference asm)
+               {
+                       foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
+                               if (reference.FullName == asm.FullName)
+                                       return reference;
+
+                       return null;
+               }
+
+               TypeSpecification GetTypeSpec (TypeSpecification original, ImportContext context)
+               {
+                       TypeSpecification typeSpec;
+
+                       TypeReference elementType = ImportTypeReference (original.ElementType, context);
+                       if (original is PointerType) {
+                               typeSpec = new PointerType (elementType);
+                       } else if (original is ArrayType) { // deal with complex arrays
+                               typeSpec = new ArrayType (elementType);
+                       } else if (original is ReferenceType) {
+                               typeSpec = new ReferenceType (elementType);
+                       } else if (original is GenericInstanceType) {
+                               GenericInstanceType git = original as GenericInstanceType;
+                               GenericInstanceType genElemType = new GenericInstanceType (elementType);
+
+                               context.GenericContext.CheckProvider (genElemType.GetOriginalType (), git.GenericArguments.Count);
+                               foreach (TypeReference arg in git.GenericArguments)
+                                       genElemType.GenericArguments.Add (ImportTypeReference (arg, context));
+
+                               typeSpec = genElemType;
+                       } else if (original is ModifierOptional) {
+                               TypeReference mt = (original as ModifierOptional).ModifierType;
+                               typeSpec = new ModifierOptional (elementType, ImportTypeReference (mt, context));
+                       } else if (original is ModifierRequired) {
+                               TypeReference mt = (original as ModifierRequired).ModifierType;
+                               typeSpec = new ModifierRequired (elementType, ImportTypeReference (mt, context));
+                       } else if (original is SentinelType) {
+                               typeSpec = new SentinelType (elementType);
+                       } else if (original is FunctionPointerType) {
+                               FunctionPointerType ori = original as FunctionPointerType;
+
+                               FunctionPointerType fnptr = new FunctionPointerType (
+                                       ori.HasThis,
+                                       ori.ExplicitThis,
+                                       ori.CallingConvention,
+                                       new MethodReturnType (ImportTypeReference (ori.ReturnType.ReturnType, context)));
+
+                               foreach (ParameterDefinition parameter in ori.Parameters)
+                                       fnptr.Parameters.Add (new ParameterDefinition (ImportTypeReference (parameter.ParameterType, context)));
+
+                               typeSpec = fnptr;
+                       } else
+                               throw new ReflectionException ("Unknown element type: {0}", original.GetType ().Name);
+
+                       return typeSpec;
+               }
+
+               static GenericParameter GetGenericParameter (GenericParameter gp, ImportContext context)
+               {
+                       GenericParameter p;
+                       if (gp.Owner is TypeReference)
+                               p = context.GenericContext.Type.GenericParameters [gp.Position];
+                       else if (gp.Owner is MethodReference)
+                               p = context.GenericContext.Method.GenericParameters [gp.Position];
+                       else
+                               throw new NotSupportedException ();
+
+                       return p;
+               }
+
+               TypeReference AdjustReference (TypeReference type, TypeReference reference)
+               {
+                       if (type.IsValueType && !reference.IsValueType)
+                               reference.IsValueType = true;
+
+                       if (type.HasGenericParameters) {
+                               for (int i = reference.GenericParameters.Count; i < type.GenericParameters.Count; i++)
+                                       reference.GenericParameters.Add (new GenericParameter (i, reference));
+                       }
+
+                       return reference;
+               }
+
+               public virtual TypeReference ImportTypeReference (TypeReference t, ImportContext context)
+               {
+                       if (t.Module == m_module)
+                               return t;
+
+                       if (t is TypeSpecification)
+                               return GetTypeSpec (t as TypeSpecification, context);
+
+                       if (t is GenericParameter)
+                               return GetGenericParameter (t as GenericParameter, context);
+
+                       TypeReference type = m_module.TypeReferences [t.FullName];
+                       if (type != null)
+                               return AdjustReference (t, type);
+
+                       AssemblyNameReference asm;
+                       if (t.Scope is AssemblyNameReference)
+                               asm = ImportAssembly ((AssemblyNameReference) t.Scope);
+                       else if (t.Scope is ModuleDefinition)
+                               asm = ImportAssembly (((ModuleDefinition) t.Scope).Assembly.Name);
+                       else
+                               throw new NotImplementedException ();
+
+                       if (t.DeclaringType != null) {
+                               type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
+                               type.DeclaringType = ImportTypeReference (t.DeclaringType, context);
+                       } else
+                               type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
+
+                       TypeReference contextType = context.GenericContext.Type;
+
+                       context.GenericContext.Type = type;
+
+                       GenericParameter.CloneInto (t, type, context);
+
+                       context.GenericContext.Type = contextType;
+
+                       m_module.TypeReferences.Add (type);
+                       return type;
+               }
+
+               public virtual FieldReference ImportFieldReference (FieldReference fr, ImportContext context)
+               {
+                       if (fr.DeclaringType.Module == m_module)
+                               return fr;
+
+                       FieldReference field = (FieldReference) GetMemberReference (fr);
+                       if (field != null)
+                               return field;
+
+                       field = new FieldReference (
+                               fr.Name,
+                               ImportTypeReference (fr.DeclaringType, context),
+                               ImportTypeReference (fr.FieldType, context));
+
+                       m_module.MemberReferences.Add (field);
+                       return field;
+               }
+
+               MethodReference GetMethodSpec (MethodReference meth, ImportContext context)
+               {
+                       if (!(meth is GenericInstanceMethod))
+                               return null;
+
+                       GenericInstanceMethod gim = meth as GenericInstanceMethod;
+                       GenericInstanceMethod ngim = new GenericInstanceMethod (
+                               ImportMethodReference (gim.ElementMethod, context));
+
+                       context.GenericContext.CheckProvider (ngim.GetOriginalMethod (), gim.GenericArguments.Count);
+                       foreach (TypeReference arg in gim.GenericArguments)
+                               ngim.GenericArguments.Add (ImportTypeReference (arg, context));
+
+                       return ngim;
+               }
+
+               public virtual MethodReference ImportMethodReference (MethodReference mr, ImportContext context)
+               {
+                       if (mr.DeclaringType.Module == m_module)
+                               return mr;
+
+                       if (mr is MethodSpecification)
+                               return GetMethodSpec (mr, context);
+
+                       MethodReference meth = (MethodReference) GetMemberReference (mr);
+                       if (meth != null)
+                               return meth;
+
+                       meth = new MethodReference (
+                               mr.Name,
+                               mr.HasThis,
+                               mr.ExplicitThis,
+                               mr.CallingConvention);
+                       meth.DeclaringType = ImportTypeReference (mr.DeclaringType, context);
+
+                       TypeReference contextType = context.GenericContext.Type;
+                       MethodReference contextMethod = context.GenericContext.Method;
+
+                       context.GenericContext.Method = meth;
+                       context.GenericContext.Type = meth.DeclaringType.GetOriginalType();
+
+                       GenericParameter.CloneInto (mr, meth, context);
+
+                       meth.ReturnType.ReturnType = ImportTypeReference (mr.ReturnType.ReturnType, context);
+
+                       foreach (ParameterDefinition param in mr.Parameters)
+                               meth.Parameters.Add (new ParameterDefinition (
+                                       ImportTypeReference (param.ParameterType, context)));
+
+                       context.GenericContext.Type = contextType;
+                       context.GenericContext.Method = contextMethod;
+
+                       m_module.MemberReferences.Add (meth);
+                       return meth;
+               }
+
+               MemberReference GetMemberReference (MemberReference member)
+               {
+                       foreach (MemberReference reference in m_module.MemberReferences)
+                               if (reference.ToString () == member.ToString ())
+                                       return reference;
+
+                       return null;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs
new file mode 100644 (file)
index 0000000..6f9d98f
--- /dev/null
@@ -0,0 +1,56 @@
+//
+// EmbeddedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class EmbeddedResource : Resource {
+
+               byte [] m_data;
+
+               public byte [] Data {
+                       get { return m_data; }
+                       set { m_data = value; }
+               }
+
+               public EmbeddedResource (string name, ManifestResourceAttributes flags) :
+                       base (name, flags)
+               {
+               }
+
+               public EmbeddedResource (string name, ManifestResourceAttributes flags, byte [] data) :
+                       base (name, flags)
+               {
+                       m_data = data;
+               }
+
+               public override void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitEmbeddedResource (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs
new file mode 100644 (file)
index 0000000..94c1d50
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// EventAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum EventAttributes : ushort {
+               SpecialName             = 0x0200,       // Event is special
+               RTSpecialName   = 0x0400         // CLI provides 'special' behavior, depending upon the name of the event
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs
new file mode 100644 (file)
index 0000000..9abfedb
--- /dev/null
@@ -0,0 +1,173 @@
+//
+// EventDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class EventDefinition : EventReference, IMemberDefinition, ICustomAttributeProvider {
+
+               EventAttributes m_attributes;
+
+               CustomAttributeCollection m_customAttrs;
+
+               MethodDefinition m_addMeth;
+               MethodDefinition m_invMeth;
+               MethodDefinition m_remMeth;
+
+               public EventAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public MethodDefinition AddMethod {
+                       get { return m_addMeth; }
+                       set { m_addMeth = value; }
+               }
+
+               public MethodDefinition InvokeMethod {
+                       get { return m_invMeth; }
+                       set { m_invMeth = value; }
+               }
+
+               public MethodDefinition RemoveMethod {
+                       get { return m_remMeth; }
+                       set { m_remMeth = value; }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               #region EventAttributes
+
+               public bool IsSpecialName {
+                       get { return (m_attributes & EventAttributes.SpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= EventAttributes.SpecialName;
+                               else
+                                       m_attributes &= ~EventAttributes.SpecialName;
+                       }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return (m_attributes & EventAttributes.RTSpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= EventAttributes.RTSpecialName;
+                               else
+                                       m_attributes &= ~EventAttributes.RTSpecialName;
+                       }
+               }
+
+               #endregion
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
+               }
+
+               public EventDefinition (string name, TypeReference eventType,
+                       EventAttributes attrs) : base (name, eventType)
+               {
+                       m_attributes = attrs;
+               }
+
+               public override EventDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public static MethodDefinition CreateAddMethod (EventDefinition evt)
+               {
+                       MethodDefinition add = new MethodDefinition (
+                               string.Concat ("add_", evt.Name), (MethodAttributes) 0, evt.EventType);
+                       evt.AddMethod = add;
+                       return add;
+               }
+
+               public static MethodDefinition CreateRemoveMethod (EventDefinition evt)
+               {
+                       MethodDefinition remove = new MethodDefinition (
+                               string.Concat ("remove_", evt.Name), (MethodAttributes) 0, evt.EventType);
+                       evt.RemoveMethod = remove;
+                       return remove;
+               }
+
+               public static MethodDefinition CreateInvokeMethod (EventDefinition evt)
+               {
+                       MethodDefinition raise = new MethodDefinition (
+                               string.Concat ("raise_", evt.Name), (MethodAttributes) 0, evt.EventType);
+                       evt.InvokeMethod = raise;
+                       return raise;
+               }
+
+               public EventDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+               }
+
+               internal static EventDefinition Clone (EventDefinition evt, ImportContext context)
+               {
+                       EventDefinition ne = new EventDefinition (
+                               evt.Name,
+                               context.Import (evt.EventType),
+                               evt.Attributes);
+
+                       if (context.GenericContext.Type is TypeDefinition) {
+                               TypeDefinition type = context.GenericContext.Type as TypeDefinition;
+                               if (evt.AddMethod != null)
+                                       ne.AddMethod = type.Methods.GetMethod (evt.AddMethod.Name) [0];
+                               if (evt.InvokeMethod != null)
+                                       ne.InvokeMethod = type.Methods.GetMethod (evt.InvokeMethod.Name) [0];
+                               if (evt.RemoveMethod != null)
+                                       ne.RemoveMethod = type.Methods.GetMethod (evt.RemoveMethod.Name) [0];
+                       }
+
+                       foreach (CustomAttribute ca in evt.CustomAttributes)
+                               ne.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+                       return ne;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitEventDefinition (this);
+
+                       this.CustomAttributes.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..94a2c54
--- /dev/null
@@ -0,0 +1,137 @@
+//
+// EventDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class EventDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public EventDefinition this [int index] {
+                       get { return List [index] as EventDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public EventDefinitionCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (EventDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (EventDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (EventDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (EventDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, EventDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (EventDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       EventDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is EventDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (EventDefinition).FullName);
+               }
+
+               public EventDefinition GetEvent (string name)
+               {
+                       foreach (EventDefinition evt in this)
+                               if (evt.Name == name)
+                                       return evt;
+
+                       return null;
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitEventDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventReference.cs b/mcs/tools/cil-strip/Mono.Cecil/EventReference.cs
new file mode 100644 (file)
index 0000000..b1205b5
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// EventReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal abstract class EventReference : MemberReference {
+
+               TypeReference m_eventType;
+
+               public TypeReference EventType {
+                       get { return m_eventType; }
+                       set { m_eventType = value; }
+               }
+
+               public EventReference (string name, TypeReference eventType) : base (name)
+               {
+                       m_eventType = eventType;
+               }
+
+               public abstract EventDefinition Resolve ();
+
+               public override string ToString ()
+               {
+                       return string.Concat (m_eventType.FullName, " ", base.ToString ());
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs
new file mode 100644 (file)
index 0000000..ea86be1
--- /dev/null
@@ -0,0 +1,192 @@
+//
+// ExternTypeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Collections.Specialized;
+
+       using Mono.Cecil.Cil;
+
+       using Hcp = Mono.Cecil.HashCodeProvider;
+       using Cmp = System.Collections.Comparer;
+
+       internal sealed class ExternTypeCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+               ModuleDefinition m_container;
+
+               public TypeReference this [int index] {
+                       get { return this.BaseGet (index) as TypeReference; }
+                       set { this.BaseSet (index, value); }
+               }
+
+               public TypeReference this [string fullName] {
+                       get { return this.BaseGet (fullName) as TypeReference; }
+                       set { this.BaseSet (fullName, value); }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               bool IList.IsReadOnly {
+                       get { return false; }
+               }
+
+               bool IList.IsFixedSize {
+                       get { return false; }
+               }
+
+               object IList.this [int index] {
+                       get { return BaseGet (index); }
+                       set {
+                               Check (value);
+                               BaseSet (index, value);
+                       }
+               }
+
+               public ExternTypeCollection (ModuleDefinition container) :
+                       base (Hcp.Instance, Cmp.Default)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeReference value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       this.BaseAdd (value.FullName, value);
+               }
+
+               public void Clear ()
+               {
+                       this.BaseClear ();
+               }
+
+               public bool Contains (TypeReference value)
+               {
+                       return Contains (value.FullName);
+               }
+
+               public bool Contains (string fullName)
+               {
+                       return this.BaseGet (fullName) != null;
+               }
+
+               public int IndexOf (TypeReference value)
+               {
+                       string [] keys = this.BaseGetAllKeys ();
+                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+               }
+
+               public void Remove (TypeReference value)
+               {
+                       this.BaseRemove (value.FullName);
+               }
+
+               public void RemoveAt (int index)
+               {
+                       TypeReference item = this [index];
+                       Remove (item);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       this.BaseGetAllValues ().CopyTo (ary, index);
+               }
+
+               public new IEnumerator GetEnumerator ()
+               {
+                       return this.BaseGetAllValues ().GetEnumerator ();
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitExternTypeCollection (this);
+               }
+
+#if CF_1_0 || CF_2_0
+               internal object [] BaseGetAllValues ()
+               {
+                       object [] values = new object [this.Count];
+                       for (int i=0; i < values.Length; ++i) {
+                               values [i] = this.BaseGet (i);
+                       }
+                       return values;
+               }
+#endif
+
+               void Check (object value)
+               {
+                       if (!(value is TypeReference))
+                               throw new ArgumentException ();
+               }
+
+               int IList.Add (object value)
+               {
+                       Check (value);
+                       Add (value as TypeReference);
+                       return 0;
+               }
+
+               bool IList.Contains (object value)
+               {
+                       Check (value);
+                       return Contains (value as TypeReference);
+               }
+
+               int IList.IndexOf (object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Insert (int index, object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Remove (object value)
+               {
+                       Check (value);
+                       Remove (value as TypeReference);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs
new file mode 100644 (file)
index 0000000..2c20927
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// FieldAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum FieldAttributes : ushort {
+               FieldAccessMask         = 0x0007,
+               Compilercontrolled      = 0x0000,       // Member not referenceable
+               Private                         = 0x0001,       // Accessible only by the parent type
+               FamANDAssem                     = 0x0002,       // Accessible by sub-types only in this assembly
+               Assembly                        = 0x0003,       // Accessible by anyone in the Assembly
+               Family                          = 0x0004,       // Accessible only by type and sub-types
+               FamORAssem                      = 0x0005,       // Accessible by sub-types anywhere, plus anyone in the assembly
+               Public                          = 0x0006,       // Accessible by anyone who has visibility to this scope field contract attributes
+
+               Static                          = 0x0010,       // Defined on type, else per instance
+               InitOnly                        = 0x0020,       // Field may only be initialized, not written after init
+               Literal                         = 0x0040,       // Value is compile time constant
+               NotSerialized           = 0x0080,       // Field does not have to be serialized when type is remoted
+               SpecialName                     = 0x0200,       // Field is special
+
+               // Interop Attributes
+               PInvokeImpl                     = 0x2000,       // Implementation is forwarded through PInvoke
+
+               // Additional flags
+               RTSpecialName           = 0x0400,       // CLI provides 'special' behavior, depending upon the name of the field
+               HasFieldMarshal         = 0x1000,       // Field has marshalling information
+               HasDefault                      = 0x8000,       // Field has default
+               HasFieldRVA                     = 0x0100         // Field has RVA
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs
new file mode 100644 (file)
index 0000000..ad9509e
--- /dev/null
@@ -0,0 +1,331 @@
+//
+// FieldDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using Mono.Cecil;
+       using Mono.Cecil.Binary;
+
+       internal sealed class FieldDefinition : FieldReference, IMemberDefinition,
+               ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+
+               FieldAttributes m_attributes;
+
+               CustomAttributeCollection m_customAttrs;
+
+               bool m_hasInfo;
+               uint m_offset;
+
+               RVA m_rva;
+               byte [] m_initVal;
+
+               bool m_hasConstant;
+               object m_const;
+
+               MarshalSpec m_marshalDesc;
+
+               public bool HasLayoutInfo {
+                       get { return m_hasInfo; }
+               }
+
+               public uint Offset {
+                       get { return m_offset; }
+                       set {
+                               m_hasInfo = true;
+                               m_offset = value;
+                       }
+               }
+
+               public RVA RVA {
+                       get { return m_rva; }
+                       set { m_rva = value; }
+               }
+
+               public byte [] InitialValue {
+                       get { return m_initVal; }
+                       set { m_initVal = value; }
+               }
+
+               public FieldAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public bool HasConstant {
+                       get { return m_hasConstant; }
+               }
+
+               public object Constant {
+                       get { return m_const; }
+                       set {
+                               m_hasConstant = true;
+                               m_const = value;
+                       }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public MarshalSpec MarshalSpec {
+                       get { return m_marshalDesc; }
+                       set {
+                               m_marshalDesc = value;
+                               if (value != null)
+                                       m_attributes |= FieldAttributes.HasFieldMarshal;
+                               else
+                                       m_attributes &= FieldAttributes.HasFieldMarshal;
+                       }
+               }
+
+               #region FieldAttributes
+
+               public bool IsCompilerControlled {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Compilercontrolled; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.Compilercontrolled;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Compilercontrolled);
+                       }
+               }
+
+               public bool IsPrivate {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.Private;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Private);
+                       }
+               }
+
+               public bool IsFamilyAndAssembly {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.FamANDAssem;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamANDAssem);
+                       }
+               }
+
+               public bool IsAssembly {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.Assembly;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Assembly);
+                       }
+               }
+
+               public bool IsFamily {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.Family;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Family);
+                       }
+               }
+
+               public bool IsFamilyOrAssembly {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.FamORAssem;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamORAssem);
+                       }
+               }
+
+               public bool IsPublic {
+                       get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~FieldAttributes.FieldAccessMask;
+                                       m_attributes |= FieldAttributes.Public;
+                               } else
+                                       m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Public);
+                       }
+               }
+
+               public bool IsStatic {
+                       get { return (m_attributes & FieldAttributes.Static) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.Static;
+                               else
+                                       m_attributes &= ~FieldAttributes.Static;
+                       }
+               }
+
+               public bool IsInitOnly {
+                       get { return (m_attributes & FieldAttributes.InitOnly) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.InitOnly;
+                               else
+                                       m_attributes &= ~FieldAttributes.InitOnly;
+                       }
+               }
+
+               public bool IsLiteral {
+                       get { return (m_attributes & FieldAttributes.Literal) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.Literal;
+                               else
+                                       m_attributes &= ~FieldAttributes.Literal;
+                       }
+               }
+
+               public bool IsNotSerialized {
+                       get { return (m_attributes & FieldAttributes.NotSerialized) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.NotSerialized;
+                               else
+                                       m_attributes &= ~FieldAttributes.NotSerialized;
+                       }
+               }
+
+               public bool IsSpecialName {
+                       get { return (m_attributes & FieldAttributes.SpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.SpecialName;
+                               else
+                                       m_attributes &= ~FieldAttributes.SpecialName;
+                       }
+               }
+
+               public bool IsPInvokeImpl {
+                       get { return (m_attributes & FieldAttributes.PInvokeImpl) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.PInvokeImpl;
+                               else
+                                       m_attributes &= ~FieldAttributes.PInvokeImpl;
+                       }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return (m_attributes & FieldAttributes.RTSpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.RTSpecialName;
+                               else
+                                       m_attributes &= ~FieldAttributes.RTSpecialName;
+                       }
+               }
+
+               public bool HasDefault {
+                       get { return (m_attributes & FieldAttributes.HasDefault) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= FieldAttributes.HasDefault;
+                               else
+                                       m_attributes &= ~FieldAttributes.HasDefault;
+                       }
+               }
+
+               #endregion
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
+               }
+
+               public FieldDefinition (string name, TypeReference fieldType,
+                       FieldAttributes attrs) : base (name, fieldType)
+               {
+                       m_attributes = attrs;
+               }
+
+               public override FieldDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public FieldDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+               }
+
+               internal static FieldDefinition Clone (FieldDefinition field, ImportContext context)
+               {
+                       FieldDefinition nf = new FieldDefinition (
+                               field.Name,
+                               context.Import (field.FieldType),
+                               field.Attributes);
+
+                       if (field.HasConstant)
+                               nf.Constant = field.Constant;
+                       if (field.MarshalSpec != null)
+                               nf.MarshalSpec = field.MarshalSpec.CloneInto (nf);
+                       if (field.RVA != RVA.Zero)
+                               nf.InitialValue = field.InitialValue;
+                       else
+                               nf.InitialValue = new byte [0];
+                       if (field.HasLayoutInfo)
+                               nf.Offset = field.Offset;
+
+                       foreach (CustomAttribute ca in field.CustomAttributes)
+                               nf.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+                       return nf;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitFieldDefinition (this);
+
+                       if (this.MarshalSpec != null)
+                               this.MarshalSpec.Accept (visitor);
+
+                       this.CustomAttributes.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..65b5784
--- /dev/null
@@ -0,0 +1,137 @@
+//
+// FieldDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class FieldDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public FieldDefinition this [int index] {
+                       get { return List [index] as FieldDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public FieldDefinitionCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (FieldDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (FieldDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (FieldDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (FieldDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, FieldDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (FieldDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       FieldDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is FieldDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (FieldDefinition).FullName);
+               }
+
+               public FieldDefinition GetField (string name)
+               {
+                       foreach (FieldDefinition field in this)
+                               if (field.Name == name)
+                                       return field;
+
+                       return null;
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitFieldDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs
new file mode 100644 (file)
index 0000000..b7eb33d
--- /dev/null
@@ -0,0 +1,67 @@
+//
+// FieldReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using Mono.Cecil;
+
+       internal class FieldReference : MemberReference {
+
+               TypeReference m_fieldType;
+
+               public TypeReference FieldType {
+                       get { return m_fieldType; }
+                       set { m_fieldType = value; }
+               }
+
+               internal FieldReference (string name, TypeReference fieldType) : base (name)
+               {
+                       m_fieldType = fieldType;
+               }
+
+               public FieldReference (string name, TypeReference declaringType, TypeReference fieldType) :
+                       this (name, fieldType)
+               {
+                       this.DeclaringType = declaringType;
+               }
+
+               public virtual FieldDefinition Resolve ()
+               {
+                       TypeReference declaringType = DeclaringType;
+                       if (declaringType == null)
+                               return null;
+
+                       return declaringType.Module.Resolver.Resolve (this);
+               }
+
+               public override string ToString ()
+               {
+                       return string.Concat (m_fieldType.FullName, " ", base.ToString ());
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs
new file mode 100644 (file)
index 0000000..74d29a9
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// FileAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum FileAttributes : uint {
+               ContainsMetaData        = 0x0000,       // This is not a resource file
+               ContainsNoMetaData  = 0x0001,   // This is a resource file or other non-metadata-containing file
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs b/mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs
new file mode 100644 (file)
index 0000000..ef1375f
--- /dev/null
@@ -0,0 +1,116 @@
+//
+// FunctionPointerType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Text;
+
+       internal sealed class FunctionPointerType : TypeSpecification, IMethodSignature {
+
+               MethodReference m_function;
+
+               public bool HasThis {
+                       get { return m_function.HasThis; }
+                       set { m_function.HasThis = value; }
+               }
+
+               public bool ExplicitThis {
+                       get { return m_function.ExplicitThis; }
+                       set { m_function.ExplicitThis = value; }
+               }
+
+               public MethodCallingConvention CallingConvention {
+                       get { return m_function.CallingConvention; }
+                       set { m_function.CallingConvention = value; }
+               }
+
+               public bool HasParameters {
+                       get { return m_function.HasParameters; }
+               }
+
+               public ParameterDefinitionCollection Parameters {
+                       get { return m_function.Parameters; }
+               }
+
+               public MethodReturnType ReturnType {
+                       get { return m_function.ReturnType; }
+                       set { m_function.ReturnType = value; }
+               }
+
+               public override string Name {
+                       get { return m_function.Name; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override string Namespace {
+                       get { return string.Empty; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override IMetadataScope Scope {
+                       get { return m_function.DeclaringType.Scope; }
+               }
+
+               public override string FullName {
+                       get {
+                               int sentinel = GetSentinel ();
+                               StringBuilder sb = new StringBuilder ();
+                               sb.Append (m_function.Name);
+                               sb.Append (" ");
+                               sb.Append (m_function.ReturnType.ReturnType.FullName);
+                               sb.Append (" *(");
+                               if (m_function.HasParameters) {
+                                       for (int i = 0; i < m_function.Parameters.Count; i++) {
+                                               if (i > 0)
+                                                       sb.Append (",");
+
+                                               if (i == sentinel)
+                                                       sb.Append ("...,");
+
+                                               sb.Append (m_function.Parameters [i].ParameterType.FullName);
+                                       }
+                               }
+                               sb.Append (")");
+                               return sb.ToString ();
+                       }
+               }
+
+               public FunctionPointerType (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType) :
+                       base (retType.ReturnType)
+               {
+                       m_function = new MethodReference ("method", hasThis, explicitThis, callConv);
+                       m_function.ReturnType = retType;
+               }
+
+               public int GetSentinel ()
+               {
+                       return m_function.GetSentinel ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs
new file mode 100644 (file)
index 0000000..3faea84
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// GenericArgumentCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class GenericArgumentCollection : CollectionBase {
+
+               IGenericInstance m_container;
+
+               public TypeReference this [int index] {
+                       get { return List [index] as TypeReference; }
+                       set { List [index] = value; }
+               }
+
+               public IGenericInstance Container {
+                       get { return m_container; }
+               }
+
+               public GenericArgumentCollection (IGenericInstance container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (TypeReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (TypeReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, TypeReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (TypeReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is TypeReference))
+                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs
new file mode 100644 (file)
index 0000000..bdf0026
--- /dev/null
@@ -0,0 +1,92 @@
+//
+// GenericContext.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal class GenericContext {
+
+               TypeReference m_type;
+               MethodReference m_method;
+
+               public TypeReference Type {
+                       get { return m_type; }
+                       set { m_type = value; }
+               }
+
+               public MethodReference Method {
+                       get { return m_method; }
+                       set { m_method = value; }
+               }
+
+               public bool AllowCreation {
+                       get { return m_type != null && m_type.GetType () == typeof (TypeReference); }
+               }
+
+               public bool Null {
+                       get { return m_type == null && m_method == null; }
+               }
+
+               public GenericContext ()
+               {
+               }
+
+               public GenericContext (TypeReference type, MethodReference meth)
+               {
+                       m_type = type;
+                       m_method = meth;
+               }
+
+               public GenericContext (IGenericParameterProvider provider)
+               {
+                       if (provider is TypeReference)
+                               m_type = provider as TypeReference;
+                       else if (provider is MethodReference) {
+                               MethodReference meth = provider as MethodReference;
+                               m_method = meth;
+                               m_type = meth.DeclaringType;
+                       }
+               }
+
+               internal void CheckProvider (IGenericParameterProvider provider, int count)
+               {
+                       if (!AllowCreation)
+                               return;
+
+                       for (int i = provider.GenericParameters.Count; i < count; i++)
+                               provider.GenericParameters.Add (new GenericParameter (i, provider));
+               }
+
+               public GenericContext Clone ()
+               {
+                       GenericContext ctx = new GenericContext ();
+                       ctx.Type = m_type;
+                       ctx.Method = m_method;
+                       return ctx;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs
new file mode 100644 (file)
index 0000000..342dba5
--- /dev/null
@@ -0,0 +1,81 @@
+//
+// IGenericInstanceMethod.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Text;
+
+       internal sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance {
+
+               private GenericArgumentCollection m_genArgs;
+
+               public GenericArgumentCollection GenericArguments {
+                       get {
+                               if (m_genArgs == null)
+                                       m_genArgs = new GenericArgumentCollection (this);
+                               return m_genArgs;
+                       }
+               }
+
+               public bool HasGenericArguments {
+                       get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+               }
+
+               public GenericInstanceMethod (MethodReference elemMethod) : base (elemMethod)
+               {
+               }
+
+               public override string ToString ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       MethodReference meth = this.ElementMethod;
+                       sb.Append (meth.ReturnType.ReturnType.FullName);
+                       sb.Append (" ");
+                       sb.Append (meth.DeclaringType.FullName);
+                       sb.Append ("::");
+                       sb.Append (meth.Name);
+                       sb.Append ("<");
+                       for (int i = 0; i < this.GenericArguments.Count; i++) {
+                               if (i > 0)
+                                       sb.Append (",");
+                               sb.Append (this.GenericArguments [i].FullName);
+                       }
+                       sb.Append (">");
+                       sb.Append ("(");
+                       if (meth.HasParameters) {
+                               for (int i = 0; i < meth.Parameters.Count; i++) {
+                                       sb.Append (meth.Parameters [i].ParameterType.FullName);
+                                       if (i < meth.Parameters.Count - 1)
+                                               sb.Append (",");
+                               }
+                       }
+                       sb.Append (")");
+                       return sb.ToString ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs
new file mode 100644 (file)
index 0000000..ee672eb
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// GenericInstanceType.cs
+//
+// Author:
+//     Martin Baulig  <martin@ximian.com>
+//  Jb Evain  <jbevain@gmail.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Text;
+
+       internal sealed class GenericInstanceType : TypeSpecification, IGenericInstance {
+
+               private GenericArgumentCollection m_genArgs;
+
+               public GenericArgumentCollection GenericArguments {
+                       get {
+                               if (m_genArgs == null)
+                                       m_genArgs = new GenericArgumentCollection (this);
+                               return m_genArgs;
+                       }
+               }
+
+               public bool HasGenericArguments {
+                       get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+               }
+
+               public override bool IsValueType {
+                       get { return m_isValueType; }
+                       set { m_isValueType = value; }
+               }
+
+               public override string FullName {
+                       get {
+                               StringBuilder sb = new StringBuilder ();
+                               sb.Append (base.FullName);
+                               sb.Append ("<");
+                               for (int i = 0; i < this.GenericArguments.Count; i++) {
+                                       if (i > 0)
+                                               sb.Append (",");
+                                       sb.Append (this.GenericArguments [i].FullName);
+                               }
+                               sb.Append (">");
+                               return sb.ToString ();
+                       }
+               }
+
+               public GenericInstanceType (TypeReference elementType) : base (elementType)
+               {
+                       m_isValueType = elementType.IsValueType;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs
new file mode 100644 (file)
index 0000000..205b06e
--- /dev/null
@@ -0,0 +1,238 @@
+//
+// GenericParameter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal sealed class GenericParameter : TypeReference {
+
+               int m_position;
+               string m_name;
+               GenericParameterAttributes m_attributes;
+               IGenericParameterProvider m_owner;
+               ConstraintCollection m_constraints;
+
+               public int Position {
+                       get { return m_position; }
+                       set { m_position = value; }
+               }
+
+               public GenericParameterAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public IGenericParameterProvider Owner {
+                       get { return m_owner; }
+               }
+
+               public bool HasConstraints {
+                       get { return (m_constraints == null) ? false : (m_constraints.Count > 0); }
+               }
+
+               public ConstraintCollection Constraints {
+                       get {
+                               if (m_constraints == null)
+                                       m_constraints = new ConstraintCollection (this);
+
+                               return m_constraints;
+                       }
+               }
+
+               public override IMetadataScope Scope {
+                       get {
+                               if (m_owner is TypeReference)
+                                       return ((TypeReference) m_owner).Scope;
+                               if (m_owner is MethodReference)
+                                       return ((MethodReference) m_owner).DeclaringType.Scope;
+
+                               throw new InvalidOperationException ();
+                       }
+               }
+
+               public override ModuleDefinition Module {
+                       get {
+                               if (m_owner is TypeReference)
+                                       return ((TypeReference) m_owner).Module;
+                               if (m_owner is MethodReference)
+                                       return ((MethodReference) m_owner).DeclaringType.Module;
+
+                               throw new InvalidOperationException ();
+                       }
+               }
+
+               public override string Name {
+                       get {
+                               if (m_name != null)
+                                       return m_name;
+
+                               if (m_owner is TypeReference)
+                                       return string.Concat ("!", m_position.ToString ());
+                               else if (m_owner is MethodReference)
+                                       return string.Concat ("!!", m_position.ToString ());
+                               else
+                                       throw new InvalidOperationException ();
+                       }
+                       set { m_name = value; }
+               }
+
+               public override string Namespace {
+                       get { return string.Empty; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override string FullName {
+                       get { return Name; }
+               }
+
+               #region GenericParameterAttributes
+
+               public bool IsNonVariant {
+                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.NonVariant; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
+                                       m_attributes |= GenericParameterAttributes.NonVariant;
+                               } else
+                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.NonVariant);
+                       }
+               }
+
+               public bool IsCovariant {
+                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Covariant; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
+                                       m_attributes |= GenericParameterAttributes.Covariant;
+                               } else
+                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Covariant);
+                       }
+               }
+
+               public bool IsContravariant {
+                       get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Contravariant; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~GenericParameterAttributes.VarianceMask;
+                                       m_attributes |= GenericParameterAttributes.Contravariant;
+                               } else
+                                       m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Contravariant);
+                       }
+               }
+
+               public bool HasReferenceTypeConstraint {
+                       get { return (m_attributes & GenericParameterAttributes.ReferenceTypeConstraint) != 0; }
+                       set {
+                               if (value) {
+                                       m_attributes |= GenericParameterAttributes.ReferenceTypeConstraint;
+                               } else
+                                       m_attributes &= ~GenericParameterAttributes.ReferenceTypeConstraint;
+                       }
+               }
+
+               public bool HasNotNullableValueTypeConstraint {
+                       get { return (m_attributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
+                       set {
+                               if (value) {
+                                       m_attributes |= GenericParameterAttributes.NotNullableValueTypeConstraint;
+                               } else
+                                       m_attributes &= ~GenericParameterAttributes.NotNullableValueTypeConstraint;
+                       }
+               }
+
+               public bool HasDefaultConstructorConstraint {
+                       get { return (m_attributes & GenericParameterAttributes.DefaultConstructorConstraint) != 0; }
+                       set {
+                               if (value) {
+                                       m_attributes |= GenericParameterAttributes.DefaultConstructorConstraint;
+                               } else
+                                       m_attributes &= ~GenericParameterAttributes.DefaultConstructorConstraint;
+                       }
+               }
+
+               #endregion
+
+               internal GenericParameter (int pos, IGenericParameterProvider owner) :
+                       base (string.Empty, string.Empty)
+               {
+                       m_position = pos;
+                       m_owner = owner;
+               }
+
+               public GenericParameter (string name, IGenericParameterProvider owner) :
+                       base (string.Empty, string.Empty)
+               {
+                       m_name = name;
+                       m_owner = owner;
+               }
+
+               public override TypeDefinition Resolve ()
+               {
+                       return null;
+               }
+
+               internal static void CloneInto (IGenericParameterProvider old, IGenericParameterProvider np, ImportContext context)
+               {
+                       foreach (GenericParameter gp in old.GenericParameters) {
+                               GenericParameter ngp = Clone (gp, context);
+                               np.GenericParameters.Add (ngp);
+                               CloneConstraints (gp, ngp, context);
+                       }
+               }
+
+               internal static GenericParameter Clone (GenericParameter gp, ImportContext context)
+               {
+                       GenericParameter ngp;
+                       if (gp.Owner is TypeReference)
+                               ngp = new GenericParameter (gp.m_name, context.GenericContext.Type);
+                       else if (gp.Owner is MethodReference)
+                               ngp = new GenericParameter (gp.m_name, context.GenericContext.Method);
+                       else
+                               throw new NotSupportedException ();
+
+                       ngp.Position = gp.Owner.GenericParameters.IndexOf (gp);
+                       ngp.Attributes = gp.Attributes;
+
+                       if (gp.HasCustomAttributes) {
+                               foreach (CustomAttribute ca in gp.CustomAttributes)
+                                       ngp.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+                       }
+
+                       return ngp;
+               }
+
+               static void CloneConstraints (GenericParameter gp, GenericParameter ngp, ImportContext context)
+               {
+                       if (gp.HasConstraints) {
+                               foreach (TypeReference constraint in gp.Constraints)
+                                       ngp.Constraints.Add (context.Import (constraint));
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs
new file mode 100644 (file)
index 0000000..141e968
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// GenericParameterAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum GenericParameterAttributes : ushort {
+               VarianceMask    = 0x0003,
+               NonVariant              = 0x0000,
+               Covariant               = 0x0001,
+               Contravariant   = 0x0002,
+
+               SpecialConstraintMask                   = 0x001c,
+               ReferenceTypeConstraint                 = 0x0004,
+               NotNullableValueTypeConstraint  = 0x0008,
+               DefaultConstructorConstraint    = 0x0010
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs
new file mode 100644 (file)
index 0000000..9d9ec0b
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// GenericParameterCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class GenericParameterCollection : CollectionBase, IReflectionVisitable {
+
+               IGenericParameterProvider m_container;
+
+               public GenericParameter this [int index] {
+                       get { return List [index] as GenericParameter; }
+                       set { List [index] = value; }
+               }
+
+               public IGenericParameterProvider Container {
+                       get { return m_container; }
+               }
+
+               public GenericParameterCollection (IGenericParameterProvider container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (GenericParameter value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (GenericParameter value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (GenericParameter value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, GenericParameter value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (GenericParameter value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is GenericParameter))
+                               throw new ArgumentException ("Must be of type " + typeof (GenericParameter).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitGenericParameterCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/HashCodeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/HashCodeProvider.cs
new file mode 100644 (file)
index 0000000..6b7b80c
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// HashCodeProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal sealed class HashCodeProvider : IHashCodeProvider {
+
+               public static readonly HashCodeProvider Instance = new HashCodeProvider ();
+
+               HashCodeProvider ()
+               {
+               }
+
+               public int GetHashCode (object o)
+               {
+                       return o.GetHashCode ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs
new file mode 100644 (file)
index 0000000..6ebc22e
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// AssemblyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal interface IAnnotationProvider {
+
+               IDictionary Annotations { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs
new file mode 100644 (file)
index 0000000..ed4329a
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// IAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IAssemblyResolver {
+
+               AssemblyDefinition Resolve (string fullName);
+               AssemblyDefinition Resolve (AssemblyNameReference name);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs
new file mode 100644 (file)
index 0000000..fdd5225
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// ICustomAttributeProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Reflection;
+
+       internal interface ICustomAttributeProvider {
+
+               CustomAttributeCollection CustomAttributes { get; }
+
+               bool HasCustomAttributes { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IDetailReader.cs b/mcs/tools/cil-strip/Mono.Cecil/IDetailReader.cs
new file mode 100644 (file)
index 0000000..ca70132
--- /dev/null
@@ -0,0 +1,48 @@
+//
+// IDetailReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IDetailReader {
+
+               void ReadSemantic (EventDefinition evt);
+               void ReadSemantic (PropertyDefinition prop);
+
+               void ReadMarshalSpec (ParameterDefinition param);
+               void ReadMarshalSpec (FieldDefinition field);
+
+               void ReadLayout (TypeDefinition type);
+               void ReadLayout (FieldDefinition field);
+
+               void ReadConstant (FieldDefinition field);
+               void ReadConstant (PropertyDefinition prop);
+               void ReadConstant (ParameterDefinition param);
+
+               void ReadInitialValue (FieldDefinition field);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs b/mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs
new file mode 100644 (file)
index 0000000..8aa7c5c
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IGenericInstanceMethod.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IGenericInstance : IMetadataTokenProvider {
+
+               GenericArgumentCollection GenericArguments { get; }
+
+               bool HasGenericArguments { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs
new file mode 100644 (file)
index 0000000..5e823dd
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IGenericParameterProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IGenericParameterProvider : IMetadataTokenProvider {
+
+               GenericParameterCollection GenericParameters { get; }
+
+               bool HasGenericParameters { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs
new file mode 100644 (file)
index 0000000..13f299e
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// IHasConstant.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IHasConstant : IMetadataTokenProvider {
+
+               bool HasConstant { get; }
+               object Constant { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs
new file mode 100644 (file)
index 0000000..e5991df
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// IHasMarshalSpec.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IHasMarshalSpec : IMetadataTokenProvider {
+
+               MarshalSpec MarshalSpec { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs
new file mode 100644 (file)
index 0000000..470b6f4
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IHasSecurity.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IHasSecurity : IMetadataTokenProvider {
+
+               SecurityDeclarationCollection SecurityDeclarations { get; }
+
+               bool HasSecurityDeclarations { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/IImporter.cs
new file mode 100644 (file)
index 0000000..7a16080
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IImporter.cs
+//
+// Author:
+//   Jb Evain (jbevain@novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IImporter {
+
+               TypeReference ImportTypeReference (TypeReference type, ImportContext context);
+               FieldReference ImportFieldReference (FieldReference field, ImportContext context);
+               MethodReference ImportMethodReference (MethodReference method, ImportContext context);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs
new file mode 100644 (file)
index 0000000..be0828e
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IMemberDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IMemberDefinition : IMemberReference, ICustomAttributeProvider {
+
+               new TypeDefinition DeclaringType { get; set; }
+               bool IsSpecialName { get; set; }
+               bool IsRuntimeSpecialName { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs b/mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs
new file mode 100644 (file)
index 0000000..e7f4f34
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// IMemberReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IMemberReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+
+               string Name { get; set; }
+               TypeReference DeclaringType { get; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs b/mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs
new file mode 100644 (file)
index 0000000..a7cbe9f
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// IMetadataScope.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IMetadataScope : IMetadataTokenProvider {
+               string Name { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs
new file mode 100644 (file)
index 0000000..cff4fb7
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IMetadataTokenProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using Mono.Cecil.Metadata;
+
+       internal interface IMetadataTokenProvider {
+
+               MetadataToken MetadataToken { get; set; }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs b/mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs
new file mode 100644 (file)
index 0000000..35ecf9b
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// IMethodSignature.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IMethodSignature {
+
+               bool HasParameters { get; }
+               bool HasThis { get; set; }
+               bool ExplicitThis { get; set; }
+               MethodCallingConvention CallingConvention { get; set; }
+
+               ParameterDefinitionCollection Parameters { get; }
+               MethodReturnType ReturnType { get; }
+
+               int GetSentinel ();
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs
new file mode 100644 (file)
index 0000000..be6d54b
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// IReflectionStructureVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IReflectionStructureVisitable {
+
+               void Accept (IReflectionStructureVisitor visitor);
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs
new file mode 100644 (file)
index 0000000..3f2e65d
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// IReflectionStructureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IReflectionStructureVisitor {
+
+               void VisitAssemblyDefinition (AssemblyDefinition asm);
+               void VisitAssemblyNameDefinition (AssemblyNameDefinition name);
+               void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names);
+               void VisitAssemblyNameReference (AssemblyNameReference name);
+               void VisitResourceCollection (ResourceCollection resources);
+               void VisitEmbeddedResource (EmbeddedResource res);
+               void VisitLinkedResource (LinkedResource res);
+               void VisitAssemblyLinkedResource (AssemblyLinkedResource res);
+               void VisitModuleDefinition (ModuleDefinition module);
+               void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules);
+               void VisitModuleReference (ModuleReference module);
+               void VisitModuleReferenceCollection (ModuleReferenceCollection modules);
+
+               void TerminateAssemblyDefinition (AssemblyDefinition asm);
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs
new file mode 100644 (file)
index 0000000..575f14f
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// IReflectionVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IReflectionVisitable {
+
+               void Accept (IReflectionVisitor visitor);
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs
new file mode 100644 (file)
index 0000000..b1c991f
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// IReflectionVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IReflectionVisitor {
+
+               void VisitModuleDefinition (ModuleDefinition module);
+               void VisitTypeDefinitionCollection (TypeDefinitionCollection types);
+               void VisitTypeDefinition (TypeDefinition type);
+               void VisitTypeReferenceCollection (TypeReferenceCollection refs);
+               void VisitTypeReference (TypeReference type);
+               void VisitMemberReferenceCollection (MemberReferenceCollection members);
+               void VisitMemberReference (MemberReference member);
+               void VisitInterfaceCollection (InterfaceCollection interfaces);
+               void VisitInterface (TypeReference interf);
+               void VisitExternTypeCollection (ExternTypeCollection externs);
+               void VisitExternType (TypeReference externType);
+               void VisitOverrideCollection (OverrideCollection meth);
+               void VisitOverride (MethodReference ov);
+               void VisitNestedTypeCollection (NestedTypeCollection nestedTypes);
+               void VisitNestedType (TypeDefinition nestedType);
+               void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters);
+               void VisitParameterDefinition (ParameterDefinition parameter);
+               void VisitMethodDefinitionCollection (MethodDefinitionCollection methods);
+               void VisitMethodDefinition (MethodDefinition method);
+               void VisitConstructorCollection (ConstructorCollection ctors);
+               void VisitConstructor (MethodDefinition ctor);
+               void VisitPInvokeInfo (PInvokeInfo pinvk);
+               void VisitEventDefinitionCollection (EventDefinitionCollection events);
+               void VisitEventDefinition (EventDefinition evt);
+               void VisitFieldDefinitionCollection (FieldDefinitionCollection fields);
+               void VisitFieldDefinition (FieldDefinition field);
+               void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties);
+               void VisitPropertyDefinition (PropertyDefinition property);
+               void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls);
+               void VisitSecurityDeclaration (SecurityDeclaration secDecl);
+               void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs);
+               void VisitCustomAttribute (CustomAttribute customAttr);
+               void VisitGenericParameterCollection (GenericParameterCollection genparams);
+               void VisitGenericParameter (GenericParameter genparam);
+               void VisitMarshalSpec (MarshalSpec marshalSpec);
+
+               void TerminateModuleDefinition (ModuleDefinition module);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs b/mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs
new file mode 100644 (file)
index 0000000..41bfc0d
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IRequireResolving.cs
+//
+// Author:
+//     Jb Evain <jbevain@gmail.com>
+//
+// Copyright (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal interface IRequireResolving {
+
+               byte [] Blob { get; }
+               bool Resolved { get; }
+               bool Resolve ();
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs b/mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs
new file mode 100644 (file)
index 0000000..bc41788
--- /dev/null
@@ -0,0 +1,68 @@
+//
+// ImportContext.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2006 Evaluant RC S.A.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal class ImportContext {
+
+               GenericContext m_genContext;
+               IImporter m_importer;
+
+               public GenericContext GenericContext {
+                       get { return m_genContext; }
+                       set { m_genContext = value; }
+               }
+
+               public ImportContext (IImporter importer)
+               {
+                       m_genContext = new GenericContext ();
+                       m_importer = importer;
+               }
+
+               public ImportContext (IImporter importer, IGenericParameterProvider provider)
+               {
+                       m_importer = importer;
+                       m_genContext = new GenericContext (provider);
+               }
+
+               public TypeReference Import (TypeReference type)
+               {
+                       return m_importer.ImportTypeReference (type, this);
+               }
+
+               public MethodReference Import (MethodReference meth)
+               {
+                       return m_importer.ImportMethodReference (meth, this);
+               }
+
+               public FieldReference Import (FieldReference field)
+               {
+                       return m_importer.ImportFieldReference (field, this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs
new file mode 100644 (file)
index 0000000..be0a3d2
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// InterfaceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class InterfaceCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public TypeReference this [int index] {
+                       get { return List [index] as TypeReference; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public InterfaceCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (TypeReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (TypeReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, TypeReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (TypeReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is TypeReference))
+                               throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitInterfaceCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs
new file mode 100644 (file)
index 0000000..9520769
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// LinkedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class LinkedResource : Resource {
+
+               byte [] m_hash;
+               string m_file;
+
+               public byte [] Hash {
+                       get { return m_hash; }
+                       set { m_hash = value; }
+               }
+
+               public string File {
+                       get { return m_file; }
+                       set { m_file = value; }
+               }
+
+               public LinkedResource (string name, ManifestResourceAttributes flags, string file) :
+                       base (name, flags)
+               {
+                       m_file = file;
+               }
+
+               public override void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitLinkedResource (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs
new file mode 100644 (file)
index 0000000..390c25b
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// ManigestResourceAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum ManifestResourceAttributes {
+               VisibilityMask  = 0x0007,
+               Public                  = 0x0001,       // The resource is exported from the Assembly
+               Private                 = 0x0002         // The resource is private to the Assembly
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs b/mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs
new file mode 100644 (file)
index 0000000..c4fd81d
--- /dev/null
@@ -0,0 +1,218 @@
+//
+// MarshalDesc.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal class MarshalSpec {
+
+               NativeType m_natIntr;
+               IHasMarshalSpec m_container;
+
+               public NativeType NativeIntrinsic {
+                       get { return m_natIntr; }
+                       set { m_natIntr = value; }
+               }
+
+               public IHasMarshalSpec Container {
+                       get { return m_container; }
+                       set { m_container = value; }
+               }
+
+               public MarshalSpec (NativeType natIntr, IHasMarshalSpec container)
+               {
+                       m_natIntr = natIntr;
+                       m_container = container;
+               }
+
+               public virtual void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitMarshalSpec (this);
+               }
+
+               public virtual MarshalSpec CloneInto (IHasMarshalSpec container)
+               {
+                       return new MarshalSpec (m_natIntr, container);
+               }
+       }
+
+       internal sealed class ArrayMarshalSpec : MarshalSpec {
+
+               NativeType m_elemType;
+               int m_paramNum;
+               int m_elemMult;
+               int m_numElem;
+
+               public NativeType ElemType {
+                       get { return m_elemType; }
+                       set { m_elemType = value; }
+               }
+
+               public int ParamNum {
+                       get { return m_paramNum; }
+                       set { m_paramNum = value; }
+               }
+
+               public int ElemMult {
+                       get { return m_elemMult; }
+                       set { m_elemMult = value; }
+               }
+
+               public int NumElem {
+                       get { return m_numElem; }
+                       set { m_numElem = value; }
+               }
+
+               public ArrayMarshalSpec (IHasMarshalSpec container) : base (NativeType.ARRAY, container)
+               {
+               }
+
+               public override MarshalSpec CloneInto (IHasMarshalSpec container)
+               {
+                       ArrayMarshalSpec spec = new ArrayMarshalSpec (container);
+                       spec.m_elemType = m_elemType;
+                       spec.m_paramNum = m_paramNum;
+                       spec.m_elemMult = m_elemMult;
+                       spec.m_numElem = m_numElem;
+                       return spec;
+               }
+       }
+
+       internal sealed class CustomMarshalerSpec : MarshalSpec {
+
+               Guid m_guid;
+               string m_unmanagedType;
+               string m_managedType;
+               string m_cookie;
+
+               public Guid Guid {
+                       get { return m_guid; }
+                       set { m_guid = value; }
+               }
+
+               public String UnmanagedType {
+                       get { return m_unmanagedType; }
+                       set { m_unmanagedType = value; }
+               }
+
+               public string ManagedType {
+                       get { return m_managedType; }
+                       set { m_managedType = value; }
+               }
+
+               public string Cookie {
+                       get { return m_cookie; }
+                       set { m_cookie = value; }
+               }
+
+               public CustomMarshalerSpec (IHasMarshalSpec container) : base (NativeType.CUSTOMMARSHALER, container)
+               {
+               }
+
+               public override MarshalSpec CloneInto (IHasMarshalSpec container)
+               {
+                       CustomMarshalerSpec spec = new CustomMarshalerSpec (container);
+                       spec.m_guid = m_guid;
+                       spec.m_unmanagedType = m_unmanagedType;
+                       spec.m_managedType = m_managedType;
+                       spec.m_cookie = m_cookie;
+                       return spec;
+               }
+       }
+
+       internal sealed class SafeArraySpec : MarshalSpec {
+
+               private VariantType m_elemType;
+
+               public VariantType ElemType {
+                       get { return m_elemType; }
+                       set { m_elemType = value; }
+               }
+
+               public SafeArraySpec (IHasMarshalSpec container) : base (NativeType.SAFEARRAY, container)
+               {
+               }
+
+               public override MarshalSpec CloneInto(IHasMarshalSpec container)
+               {
+                       SafeArraySpec spec = new SafeArraySpec  (container);
+                       spec.m_elemType = m_elemType;
+                       return spec;
+               }
+       }
+
+       internal sealed class FixedArraySpec : MarshalSpec {
+
+               private int m_numElem;
+               private NativeType m_elemType;
+
+               public int NumElem {
+                       get { return m_numElem; }
+                       set { m_numElem = value; }
+               }
+
+               public NativeType ElemType {
+                       get { return m_elemType; }
+                       set { m_elemType = value; }
+               }
+
+               public FixedArraySpec (IHasMarshalSpec container) : base (NativeType.FIXEDARRAY, container)
+               {
+               }
+
+               public override MarshalSpec CloneInto (IHasMarshalSpec container)
+               {
+                       FixedArraySpec spec = new FixedArraySpec (container);
+                       spec.m_numElem = m_numElem;
+                       spec.m_elemType = m_elemType;
+                       return spec;
+               }
+       }
+
+       internal sealed class FixedSysStringSpec : MarshalSpec {
+
+               private int m_size;
+
+               public int Size {
+                       get { return m_size; }
+                       set { m_size = value; }
+               }
+
+               public FixedSysStringSpec (IHasMarshalSpec container) : base (NativeType.FIXEDSYSSTRING, container)
+               {
+               }
+
+               public override MarshalSpec CloneInto (IHasMarshalSpec container)
+               {
+                       FixedSysStringSpec spec = new FixedSysStringSpec (container);
+                       spec.m_size = m_size;
+                       return spec;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs b/mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs
new file mode 100644 (file)
index 0000000..0e1f194
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// MemberReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       using Mono.Cecil.Metadata;
+
+       internal abstract class MemberReference : IMemberReference {
+
+               string m_name;
+               TypeReference m_decType;
+               MetadataToken m_token;
+               IDictionary m_annotations;
+
+               public virtual string Name {
+                       get { return m_name; }
+                       set { m_name = value; }
+               }
+
+               public virtual TypeReference DeclaringType {
+                       get { return m_decType; }
+                       set { m_decType = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return m_token; }
+                       set { m_token = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public MemberReference (string name)
+               {
+                       m_name = name;
+               }
+
+               public override string ToString ()
+               {
+                       if (m_decType == null)
+                               return m_name;
+
+                       return string.Concat (m_decType.FullName, "::", m_name);
+               }
+
+               public virtual void Accept (IReflectionVisitor visitor)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs
new file mode 100644 (file)
index 0000000..c916025
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// MemberReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class MemberReferenceCollection : CollectionBase, IReflectionVisitable {
+
+               ModuleDefinition m_container;
+
+               public MemberReference this [int index] {
+                       get { return List [index] as MemberReference; }
+                       set { List [index] = value; }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public MemberReferenceCollection (ModuleDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (MemberReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (MemberReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (MemberReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, MemberReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (MemberReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is MemberReference))
+                               throw new ArgumentException ("Must be of type " + typeof (MemberReference).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitMemberReferenceCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MetadataResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/MetadataResolver.cs
new file mode 100644 (file)
index 0000000..af014bc
--- /dev/null
@@ -0,0 +1,231 @@
+//
+// MetadataResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2008 Jb Evain (http://evain.net)
+// (C) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace Mono.Cecil {
+
+       class MetadataResolver {
+
+               AssemblyDefinition assembly;
+
+               public IAssemblyResolver AssemblyResolver {
+                       get { return assembly.Resolver; }
+               }
+
+               public MetadataResolver (AssemblyDefinition assembly)
+               {
+                       this.assembly = assembly;
+               }
+
+               public TypeDefinition Resolve (TypeReference type)
+               {
+                       type = type.GetOriginalType ();
+
+                       if (type is TypeDefinition)
+                               return (TypeDefinition) type;
+
+                       AssemblyNameReference reference = type.Scope as AssemblyNameReference;
+                       if (reference != null) {
+                               AssemblyDefinition assembly = AssemblyResolver.Resolve (reference);
+                               if (assembly == null)
+                                       return null;
+
+                               return assembly.MainModule.Types [type.FullName];
+                       }
+
+                       ModuleDefinition module = type.Scope as ModuleDefinition;
+                       if (module != null)
+                               return module.Types [type.FullName];
+
+                       ModuleReference mod_reference = type.Scope as ModuleReference;
+                       if (mod_reference != null) {
+                               foreach (ModuleDefinition netmodule in type.Module.Assembly.Modules)
+                                       if (netmodule.Name == mod_reference.Name)
+                                               return netmodule.Types [type.FullName];
+                       }
+
+                       throw new NotImplementedException ();
+               }
+
+               public FieldDefinition Resolve (FieldReference field)
+               {
+                       TypeDefinition type = Resolve (field.DeclaringType);
+                       if (type == null)
+                               return null;
+
+                       return type.HasFields ? GetField (type.Fields, field) : null;
+               }
+
+               static FieldDefinition GetField (ICollection collection, FieldReference reference)
+               {
+                       foreach (FieldDefinition field in collection) {
+                               if (field.Name != reference.Name)
+                                       continue;
+
+                               if (!AreSame (field.FieldType, reference.FieldType))
+                                       continue;
+
+                               return field;
+                       }
+
+                       return null;
+               }
+
+               public MethodDefinition Resolve (MethodReference method)
+               {
+                       TypeDefinition type = Resolve (method.DeclaringType);
+                       if (type == null)
+                               return null;
+
+                       method = method.GetOriginalMethod ();
+                       if (method.Name == MethodDefinition.Cctor || method.Name == MethodDefinition.Ctor)
+                               return type.HasConstructors ? GetMethod (type.Constructors, method) : null;
+                       else
+                               return type.HasMethods ? GetMethod (type, method) : null;
+               }
+
+               MethodDefinition GetMethod (TypeDefinition type, MethodReference reference)
+               {
+                       while (type != null) {
+                               MethodDefinition method = GetMethod (type.Methods, reference);
+                               if (method == null) {
+                                       if (type.BaseType == null)
+                                               return null;
+
+                                       type = Resolve (type.BaseType);
+                               } else
+                                       return method;
+                       }
+
+                       return null;
+               }
+
+               static MethodDefinition GetMethod (ICollection collection, MethodReference reference)
+               {
+                       foreach (MethodDefinition meth in collection) {
+                               if (meth.Name != reference.Name)
+                                       continue;
+
+                               if (!AreSame (meth.ReturnType.ReturnType, reference.ReturnType.ReturnType))
+                                       continue;
+
+                               if (meth.HasParameters != reference.HasParameters)
+                                       continue;
+
+                               if (!meth.HasParameters && !reference.HasParameters)
+                                       return meth; //both have no parameters hence meth is the good one
+
+                               if (!AreSame (meth.Parameters, reference.Parameters))
+                                       continue;
+
+                               return meth;
+                       }
+
+                       return null;
+               }
+
+               static bool AreSame (ParameterDefinitionCollection a, ParameterDefinitionCollection b)
+               {
+                       if (a.Count != b.Count)
+                               return false;
+
+                       if (a.Count == 0)
+                               return true;
+
+                       for (int i = 0; i < a.Count; i++)
+                               if (!AreSame (a [i].ParameterType, b [i].ParameterType))
+                                       return false;
+
+                       return true;
+               }
+
+               static bool AreSame (ModType a, ModType b)
+               {
+                       if (!AreSame (a.ModifierType, b.ModifierType))
+                               return false;
+
+                       return AreSame (a.ElementType, b.ElementType);
+               }
+
+               static bool AreSame (TypeSpecification a, TypeSpecification b)
+               {
+                       if (a is GenericInstanceType)
+                               return AreSame ((GenericInstanceType) a, (GenericInstanceType) b);
+
+                       if (a is ModType)
+                               return AreSame ((ModType) a, (ModType) b);
+
+                       return AreSame (a.ElementType, b.ElementType);
+               }
+
+               static bool AreSame (GenericInstanceType a, GenericInstanceType b)
+               {
+                       if (!AreSame (a.ElementType, b.ElementType))
+                               return false;
+
+                       if (a.GenericArguments.Count != b.GenericArguments.Count)
+                               return false;
+
+                       if (a.GenericArguments.Count == 0)
+                               return true;
+
+                       for (int i = 0; i < a.GenericArguments.Count; i++)
+                               if (!AreSame (a.GenericArguments [i], b.GenericArguments [i]))
+                                       return false;
+
+                       return true;
+               }
+
+               static bool AreSame (GenericParameter a, GenericParameter b)
+               {
+                       return a.Position == b.Position;
+               }
+
+               static bool AreSame (TypeReference a, TypeReference b)
+               {
+                       if (a is TypeSpecification || b is TypeSpecification) {
+                               if (a.GetType () != b.GetType ())
+                                       return false;
+
+                               return AreSame ((TypeSpecification) a, (TypeSpecification) b);
+                       }
+
+                       if (a is GenericParameter || b is GenericParameter) {
+                               if (a.GetType () != b.GetType ())
+                                       return false;
+
+                               return AreSame ((GenericParameter) a, (GenericParameter) b);
+                       }
+
+                       return a.FullName == b.FullName;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs
new file mode 100644 (file)
index 0000000..55ee872
--- /dev/null
@@ -0,0 +1,66 @@
+//
+// MethodAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum MethodAttributes : ushort {
+               MemberAccessMask        = 0x0007,
+               Compilercontrolled      = 0x0000,       // Member not referenceable
+               Private                         = 0x0001,       // Accessible only by the parent type
+               FamANDAssem                     = 0x0002,       // Accessible by sub-types only in this Assembly
+               Assem                           = 0x0003,       // Accessibly by anyone in the Assembly
+               Family                          = 0x0004,       // Accessible only by type and sub-types
+               FamORAssem                      = 0x0005,       // Accessibly by sub-types anywhere, plus anyone in assembly
+               Public                          = 0x0006,       // Accessibly by anyone who has visibility to this scope
+
+               Static                          = 0x0010,       // Defined on type, else per instance
+               Final                           = 0x0020,       // Method may not be overridden
+               Virtual                         = 0x0040,       // Method is virtual
+               HideBySig                       = 0x0080,       // Method hides by name+sig, else just by name
+
+               VtableLayoutMask        = 0x0100,       // Use this mask to retrieve vtable attributes
+               ReuseSlot                       = 0x0000,       // Method reuses existing slot in vtable
+               NewSlot                         = 0x0100,       // Method always gets a new slot in the vtable
+
+               Strict                          = 0x0200,   // Method can only be overriden if also accessible
+               Abstract                        = 0x0400,       // Method does not provide an implementation
+               SpecialName                     = 0x0800,       // Method is special
+
+               // Interop Attributes
+               PInvokeImpl                     = 0x2000,       // Implementation is forwarded through PInvoke
+               UnmanagedExport         = 0x0008,       // Reserved: shall be zero for conforming implementations
+
+               // Additional flags
+               RTSpecialName           = 0x1000,       // CLI provides 'special' behavior, depending upon the name of the method
+               HasSecurity                     = 0x4000,       // Method has security associate with it
+               RequireSecObject        = 0x8000         // Method calls another method containing security code
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs
new file mode 100644 (file)
index 0000000..80ecd58
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// MethodCallingConvention.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum MethodCallingConvention : byte {
+               Default         = 0x0,
+               C                       = 0x1,
+               StdCall         = 0x2,
+               ThisCall        = 0x3,
+               FastCall        = 0x4,
+               VarArg          = 0x5,
+               Generic         = 0x10
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs
new file mode 100644 (file)
index 0000000..ca9045e
--- /dev/null
@@ -0,0 +1,653 @@
+//
+// MethodDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Cil;
+
+       internal sealed class MethodDefinition : MethodReference, IMemberDefinition,
+               IHasSecurity, ICustomAttributeProvider {
+
+               public const string Cctor = ".cctor";
+               public const string Ctor = ".ctor";
+
+               MethodAttributes m_attributes;
+               MethodImplAttributes m_implAttrs;
+               MethodSemanticsAttributes m_semAttrs;
+               SecurityDeclarationCollection m_secDecls;
+               CustomAttributeCollection m_customAttrs;
+
+               MethodBody m_body;
+               RVA m_rva;
+               OverrideCollection m_overrides;
+               PInvokeInfo m_pinvoke;
+               readonly ParameterDefinition m_this;
+
+               public MethodAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public MethodImplAttributes ImplAttributes {
+                       get { return m_implAttrs; }
+                       set { m_implAttrs = value; }
+               }
+
+               public MethodSemanticsAttributes SemanticsAttributes {
+                       get { return m_semAttrs; }
+                       set { m_semAttrs = value; }
+               }
+
+               public bool HasSecurityDeclarations {
+                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+               }
+
+               public SecurityDeclarationCollection SecurityDeclarations {
+                       get {
+                               if (m_secDecls == null)
+                                       m_secDecls = new SecurityDeclarationCollection (this);
+
+                               return m_secDecls;
+                       }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public RVA RVA {
+                       get { return m_rva; }
+                       set { m_rva = value; }
+               }
+
+               public MethodBody Body {
+                       get {
+                               LoadBody ();
+                               return m_body;
+                       }
+                       set { m_body = value; }
+               }
+
+               public PInvokeInfo PInvokeInfo {
+                       get { return m_pinvoke; }
+                       set { m_pinvoke = value; }
+               }
+
+               public bool HasOverrides {
+                       get { return (m_overrides == null) ? false : (m_overrides.Count > 0); }
+               }
+
+               public OverrideCollection Overrides {
+                       get {
+                               if (m_overrides == null)
+                                       m_overrides = new OverrideCollection (this);
+
+                               return m_overrides;
+                       }
+               }
+
+               public ParameterDefinition This {
+                       get { return m_this; }
+               }
+
+               #region MethodAttributes
+
+               public bool IsCompilerControlled {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Compilercontrolled; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.Compilercontrolled;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Compilercontrolled);
+                       }
+               }
+
+               public bool IsPrivate {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.Private;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Private);
+                       }
+               }
+
+               public bool IsFamilyAndAssembly {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.FamANDAssem;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamANDAssem);
+                       }
+               }
+
+               public bool IsAssembly {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.Assem;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Assem);
+                       }
+               }
+
+               public bool IsFamily {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.Family;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Family);
+                       }
+               }
+
+               public bool IsFamilyOrAssembly {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.FamORAssem;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamORAssem);
+                       }
+               }
+
+               public bool IsPublic {
+                       get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.MemberAccessMask;
+                                       m_attributes |= MethodAttributes.Public;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Public);
+                       }
+               }
+
+               public bool IsStatic {
+                       get { return (m_attributes & MethodAttributes.Static) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.Static;
+                               else
+                                       m_attributes &= ~MethodAttributes.Static;
+                       }
+               }
+
+               public bool IsFinal {
+                       get { return (m_attributes & MethodAttributes.Final) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.Final;
+                               else
+                                       m_attributes &= ~MethodAttributes.Final;
+                       }
+               }
+
+               public bool IsVirtual {
+                       get { return (m_attributes & MethodAttributes.Virtual) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.Virtual;
+                               else
+                                       m_attributes &= ~MethodAttributes.Virtual;
+                       }
+               }
+
+               public bool IsHideBySig {
+                       get { return (m_attributes & MethodAttributes.HideBySig) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.HideBySig;
+                               else
+                                       m_attributes &= ~MethodAttributes.HideBySig;
+                       }
+               }
+
+               public bool IsReuseSlot {
+                       get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.ReuseSlot; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.VtableLayoutMask;
+                                       m_attributes |= MethodAttributes.ReuseSlot;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.ReuseSlot);
+                       }
+               }
+
+               public bool IsNewSlot {
+                       get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.NewSlot; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~MethodAttributes.VtableLayoutMask;
+                                       m_attributes |= MethodAttributes.NewSlot;
+                               } else
+                                       m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.NewSlot);
+                       }
+               }
+
+               public bool IsStrict {
+                       get { return (m_attributes & MethodAttributes.Strict) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.Strict;
+                               else
+                                       m_attributes &= ~MethodAttributes.Strict;
+                       }
+               }
+
+               public bool IsAbstract {
+                       get { return (m_attributes & MethodAttributes.Abstract) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.Abstract;
+                               else
+                                       m_attributes &= ~MethodAttributes.Abstract;
+                       }
+               }
+
+               public bool IsSpecialName {
+                       get { return (m_attributes & MethodAttributes.SpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.SpecialName;
+                               else
+                                       m_attributes &= ~MethodAttributes.SpecialName;
+                       }
+               }
+
+               public bool IsPInvokeImpl {
+                       get { return (m_attributes & MethodAttributes.PInvokeImpl) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.PInvokeImpl;
+                               else
+                                       m_attributes &= ~MethodAttributes.PInvokeImpl;
+                       }
+               }
+
+               public bool IsUnmanagedExport {
+                       get { return (m_attributes & MethodAttributes.UnmanagedExport) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.UnmanagedExport;
+                               else
+                                       m_attributes &= ~MethodAttributes.UnmanagedExport;
+                       }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return (m_attributes & MethodAttributes.RTSpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.RTSpecialName;
+                               else
+                                       m_attributes &= ~MethodAttributes.RTSpecialName;
+                       }
+               }
+
+               public bool HasSecurity {
+                       get { return (m_attributes & MethodAttributes.HasSecurity) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= MethodAttributes.HasSecurity;
+                               else
+                                       m_attributes &= ~MethodAttributes.HasSecurity;
+                       }
+               }
+
+               #endregion
+
+               #region MethodImplAttributes
+
+               public bool IsIL {
+                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.IL; }
+                       set {
+                               if (value) {
+                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+                                       m_implAttrs |= MethodImplAttributes.IL;
+                               } else
+                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.IL);
+                       }
+               }
+
+               public bool IsNative {
+                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Native; }
+                       set {
+                               if (value) {
+                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+                                       m_implAttrs |= MethodImplAttributes.Native;
+                               } else
+                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Native);
+                       }
+               }
+
+               public bool IsRuntime {
+                       get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Runtime; }
+                       set {
+                               if (value) {
+                                       m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+                                       m_implAttrs |= MethodImplAttributes.Runtime;
+                               } else
+                                       m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Runtime);
+                       }
+               }
+
+               public bool IsUnmanaged {
+                       get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Unmanaged; }
+                       set {
+                               if (value) {
+                                       m_implAttrs &= ~MethodImplAttributes.ManagedMask;
+                                       m_implAttrs |= MethodImplAttributes.Unmanaged;
+                               } else
+                                       m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Unmanaged);
+                       }
+               }
+
+               public bool IsManaged {
+                       get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Managed; }
+                       set {
+                               if (value) {
+                                       m_implAttrs &= ~MethodImplAttributes.ManagedMask;
+                                       m_implAttrs |= MethodImplAttributes.Managed;
+                               } else
+                                       m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Managed);
+                       }
+               }
+
+               public bool IsForwardRef {
+                       get { return (m_implAttrs & MethodImplAttributes.ForwardRef) != 0; }
+                       set {
+                               if (value)
+                                       m_implAttrs |= MethodImplAttributes.ForwardRef;
+                               else
+                                       m_implAttrs &= ~MethodImplAttributes.ForwardRef;
+                       }
+               }
+
+               public bool IsPreserveSig {
+                       get { return (m_implAttrs & MethodImplAttributes.PreserveSig) != 0; }
+                       set {
+                               if (value)
+                                       m_implAttrs |= MethodImplAttributes.PreserveSig;
+                               else
+                                       m_implAttrs &= ~MethodImplAttributes.PreserveSig;
+                       }
+               }
+
+               public bool IsInternalCall {
+                       get { return (m_implAttrs & MethodImplAttributes.InternalCall) != 0; }
+                       set {
+                               if (value)
+                                       m_implAttrs |= MethodImplAttributes.InternalCall;
+                               else
+                                       m_implAttrs &= ~MethodImplAttributes.InternalCall;
+                       }
+               }
+
+               public bool IsSynchronized {
+                       get { return (m_implAttrs & MethodImplAttributes.Synchronized) != 0; }
+                       set {
+                               if (value)
+                                       m_implAttrs |= MethodImplAttributes.Synchronized;
+                               else
+                                       m_implAttrs &= ~MethodImplAttributes.Synchronized;
+                       }
+               }
+
+               public bool NoInlining {
+                       get { return (m_implAttrs & MethodImplAttributes.NoInlining) != 0; }
+                       set {
+                               if (value)
+                                       m_implAttrs |= MethodImplAttributes.NoInlining;
+                               else
+                                       m_implAttrs &= ~MethodImplAttributes.NoInlining;
+                       }
+               }
+
+               #endregion
+
+               #region MethodSemanticsAttributes
+               public bool IsSetter {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.Setter) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.Setter;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.Setter;
+                       }
+               }
+
+               public bool IsGetter {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.Getter) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.Getter;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.Getter;
+                       }
+               }
+
+               public bool IsOther {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.Other) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.Other;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.Other;
+                       }
+               }
+
+               public bool IsAddOn {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.AddOn) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.AddOn;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.AddOn;
+                       }
+               }
+
+               public bool IsRemoveOn {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.RemoveOn) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.RemoveOn;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.RemoveOn;
+                       }
+               }
+
+               public bool IsFire {
+                       get { return (m_semAttrs & MethodSemanticsAttributes.Fire) != 0; }
+                       set {
+                               if (value)
+                                       m_semAttrs |= MethodSemanticsAttributes.Fire;
+                               else
+                                       m_semAttrs &= ~MethodSemanticsAttributes.Fire;
+                       }
+               }
+
+               #endregion
+
+               public bool IsConstructor {
+                       get {
+                               return this.IsRuntimeSpecialName && this.IsSpecialName &&
+                                       (this.Name == Cctor || this.Name == Ctor);
+                       }
+               }
+
+               public bool HasBody {
+                       get {
+                               return (m_attributes & MethodAttributes.Abstract) == 0 &&
+                                       (m_attributes & MethodAttributes.PInvokeImpl) == 0 &&
+                                       (m_implAttrs & MethodImplAttributes.InternalCall) == 0 &&
+                                       (m_implAttrs & MethodImplAttributes.Native) == 0 &&
+                                       (m_implAttrs & MethodImplAttributes.Unmanaged) == 0 &&
+                                       (m_implAttrs & MethodImplAttributes.Runtime) == 0;
+                       }
+               }
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
+               }
+
+               public MethodDefinition (string name, RVA rva,
+                       MethodAttributes attrs, MethodImplAttributes implAttrs,
+                       bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
+                       base (name, hasThis, explicitThis, callConv)
+               {
+                       m_rva = rva;
+                       m_attributes = attrs;
+                       m_implAttrs = implAttrs;
+
+                       if (!IsStatic)
+                               m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+               }
+
+               internal MethodDefinition (string name, MethodAttributes attrs) : base (name)
+               {
+                       m_attributes = attrs;
+
+                       this.HasThis = !this.IsStatic;
+                       if (!IsStatic)
+                               m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+               }
+
+               public MethodDefinition (string name, MethodAttributes attrs, TypeReference returnType) :
+                       this (name, attrs)
+               {
+                       this.ReturnType.ReturnType = returnType;
+               }
+
+               internal void LoadBody ()
+               {
+                       if (m_body == null && this.HasBody) {
+                               m_body = new MethodBody (this);
+
+                               ModuleDefinition module = DeclaringType != null ? DeclaringType.Module : null;
+
+                               if (module != null && m_rva != RVA.Zero)
+                                       module.Controller.Reader.Code.VisitMethodBody (m_body);
+                       }
+               }
+
+               public override MethodDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public MethodDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
+               }
+
+               internal static MethodDefinition Clone (MethodDefinition meth, ImportContext context)
+               {
+                       MethodDefinition nm = new MethodDefinition (
+                               meth.Name,
+                               RVA.Zero,
+                               meth.Attributes,
+                               meth.ImplAttributes,
+                               meth.HasThis,
+                               meth.ExplicitThis,
+                               meth.CallingConvention);
+
+                       MethodReference contextMethod = context.GenericContext.Method;
+
+                       context.GenericContext.Method = nm;
+
+                       GenericParameter.CloneInto (meth, nm, context);
+
+                       nm.ReturnType.ReturnType = context.Import (meth.ReturnType.ReturnType);
+
+                       if (meth.ReturnType.Parameter != null) {
+                               nm.ReturnType.Parameter = ParameterDefinition.Clone (meth.ReturnType.Parameter, context);
+                               nm.ReturnType.Parameter.Method = nm;
+                       }
+
+                       if (meth.PInvokeInfo != null)
+                               nm.PInvokeInfo = meth.PInvokeInfo; // TODO: import module ?
+
+                       if (meth.HasParameters) {
+                               foreach (ParameterDefinition param in meth.Parameters)
+                                       nm.Parameters.Add (ParameterDefinition.Clone (param, context));
+                       }
+                       if (meth.HasOverrides) {
+                               foreach (MethodReference ov in meth.Overrides)
+                                       nm.Overrides.Add (context.Import (ov));
+                       }
+                       if (meth.HasCustomAttributes) {
+                               foreach (CustomAttribute ca in meth.CustomAttributes)
+                                       nm.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+                       }
+                       if (meth.HasSecurityDeclarations) {
+                               foreach (SecurityDeclaration sec in meth.SecurityDeclarations)
+                                       nm.SecurityDeclarations.Add (SecurityDeclaration.Clone (sec));
+                       }
+
+                       if (meth.Body != null)
+                               nm.Body = MethodBody.Clone (meth.Body, nm, context);
+
+                       context.GenericContext.Method = contextMethod;
+
+                       return nm;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitMethodDefinition (this);
+
+                       this.GenericParameters.Accept (visitor);
+                       this.Parameters.Accept (visitor);
+
+                       if (this.PInvokeInfo != null)
+                               this.PInvokeInfo.Accept (visitor);
+
+                       this.SecurityDeclarations.Accept (visitor);
+                       this.Overrides.Accept (visitor);
+                       this.CustomAttributes.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..0042aa1
--- /dev/null
@@ -0,0 +1,185 @@
+//
+// MethodDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class MethodDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public MethodDefinition this [int index] {
+                       get { return List [index] as MethodDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public MethodDefinitionCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (MethodDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (MethodDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (MethodDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (MethodDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, MethodDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (MethodDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       MethodDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is MethodDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
+               }
+
+               public MethodDefinition [] GetMethod (string name)
+               {
+                       ArrayList ret = new ArrayList ();
+                       foreach (MethodDefinition meth in this)
+                               if (meth.Name == name)
+                                       ret.Add (meth);
+
+                       return ret.ToArray (typeof (MethodDefinition)) as MethodDefinition [];
+               }
+
+               internal MethodDefinition GetMethodInternal (string name, IList parameters)
+               {
+                       foreach (MethodDefinition meth in this) {
+                               if (meth.Name != name || meth.Parameters.Count != parameters.Count)
+                                       continue;
+
+                               bool match = true;
+                               for (int i = 0; i < parameters.Count; i++) {
+                                       string pname;
+                                       object param = parameters [i];
+                                       if (param is Type)
+                                               pname = ReflectionHelper.GetTypeSignature (param as Type);
+                                       else if (param is TypeReference)
+                                               pname = (param as TypeReference).FullName;
+                                       else if (param is ParameterDefinition)
+                                               pname = (param as ParameterDefinition).ParameterType.FullName;
+                                       else
+                                               throw new NotSupportedException ();
+
+                                       if (meth.Parameters [i].ParameterType.FullName != pname) {
+                                               match = false;
+                                               break;
+                                       }
+                               }
+
+                               if (match)
+                                       return meth;
+                       }
+
+                       return null;
+               }
+
+               public MethodDefinition GetMethod (string name, Type [] parameters)
+               {
+                       return GetMethodInternal (name, parameters);
+               }
+
+               public MethodDefinition GetMethod (string name, TypeReference [] parameters)
+               {
+                       return GetMethodInternal (name, parameters);
+               }
+
+               public MethodDefinition GetMethod (string name, ParameterDefinitionCollection parameters)
+               {
+                       return GetMethodInternal (name, parameters);
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitMethodDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs
new file mode 100644 (file)
index 0000000..7e43d4e
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// MethodImplAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum MethodImplAttributes : ushort {
+               CodeTypeMask            = 0x0003,
+               IL                                      = 0x0000,       // Method impl is CIL
+               Native                          = 0x0001,       // Method impl is native
+               OPTIL                           = 0x0002,       // Reserved: shall be zero in conforming implementations
+               Runtime                         = 0x0003,       // Method impl is provided by the runtime
+
+               ManagedMask                     = 0x0004,       // Flags specifying whether the code is managed or unmanaged
+               Unmanaged                       = 0x0004,       // Method impl is unmanaged, otherwise managed
+               Managed                         = 0x0000,       // Method impl is managed
+
+               // Implementation info and interop
+               ForwardRef                      = 0x0010,       // Indicates method is defined; used primarily in merge scenarios
+               PreserveSig                     = 0x0080,       // Reserved: conforming implementations may ignore
+               InternalCall            = 0x1000,       // Reserved: shall be zero in conforming implementations
+               Synchronized            = 0x0020,       // Method is single threaded through the body
+               NoInlining                      = 0x0008,       // Method may not be inlined
+               MaxMethodImplVal        = 0xffff         // Range check value
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs
new file mode 100644 (file)
index 0000000..84984ac
--- /dev/null
@@ -0,0 +1,158 @@
+//
+// MethodReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Text;
+
+       internal class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider {
+
+               ParameterDefinitionCollection m_parameters;
+               MethodReturnType m_returnType;
+
+               bool m_hasThis;
+               bool m_explicitThis;
+               MethodCallingConvention m_callConv;
+               GenericParameterCollection m_genparams;
+
+               public virtual bool HasThis {
+                       get { return m_hasThis; }
+                       set { m_hasThis = value; }
+               }
+
+               public virtual bool ExplicitThis {
+                       get { return m_explicitThis; }
+                       set { m_explicitThis = value; }
+               }
+
+               public virtual MethodCallingConvention CallingConvention {
+                       get { return m_callConv; }
+                       set { m_callConv = value; }
+               }
+
+               public virtual bool HasParameters {
+                       get { return (m_parameters == null) ? false : (m_parameters.Count > 0); }
+               }
+
+               public virtual ParameterDefinitionCollection Parameters {
+                       get {
+                               if (m_parameters == null)
+                                       m_parameters = new ParameterDefinitionCollection (this);
+                               return m_parameters;
+                       }
+               }
+
+               public bool HasGenericParameters {
+                       get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+               }
+
+               public GenericParameterCollection GenericParameters {
+                       get {
+                               if (m_genparams == null)
+                                       m_genparams = new GenericParameterCollection (this);
+                               return m_genparams;
+                       }
+               }
+
+               public virtual MethodReturnType ReturnType {
+                       get { return m_returnType;}
+                       set { m_returnType = value; }
+               }
+
+               internal MethodReference (string name, bool hasThis,
+                       bool explicitThis, MethodCallingConvention callConv) : this (name)
+               {
+                       m_parameters = new ParameterDefinitionCollection (this);
+                       m_hasThis = hasThis;
+                       m_explicitThis = explicitThis;
+                       m_callConv = callConv;
+               }
+
+               internal MethodReference (string name) : base (name)
+               {
+                       m_returnType = new MethodReturnType (null);
+               }
+
+               public MethodReference (string name,
+                       TypeReference declaringType, TypeReference returnType,
+                       bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
+                       this (name, hasThis, explicitThis, callConv)
+               {
+                       this.DeclaringType = declaringType;
+                       this.ReturnType.ReturnType = returnType;
+               }
+
+               public virtual MethodDefinition Resolve ()
+               {
+                       TypeReference declaringType = DeclaringType;
+                       if (declaringType == null)
+                               return null;
+
+                       return declaringType.Module.Resolver.Resolve (this);
+               }
+
+               public virtual MethodReference GetOriginalMethod ()
+               {
+                       return this;
+               }
+
+               public int GetSentinel ()
+               {
+                       if (HasParameters) {
+                               for (int i = 0; i < Parameters.Count; i++)
+                                       if (Parameters [i].ParameterType is SentinelType)
+                                               return i;
+                       }
+                       return -1;
+               }
+
+               public override string ToString ()
+               {
+                       int sentinel = GetSentinel ();
+
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (m_returnType.ReturnType.FullName);
+                       sb.Append (" ");
+                       sb.Append (base.ToString ());
+                       sb.Append ("(");
+                       if (this.HasParameters) {
+                               for (int i = 0; i < this.Parameters.Count; i++) {
+                                       if (i > 0)
+                                               sb.Append (",");
+
+                                       if (i == sentinel)
+                                               sb.Append ("...,");
+
+                                       sb.Append (this.Parameters [i].ParameterType.FullName);
+                               }
+                       }
+                       sb.Append (")");
+                       return sb.ToString ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs
new file mode 100644 (file)
index 0000000..d39b859
--- /dev/null
@@ -0,0 +1,101 @@
+//
+// MethodReturnType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+       internal sealed class MethodReturnType : ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+
+               MethodReference m_method;
+               ParameterDefinition m_param;
+
+               TypeReference m_returnType;
+
+               public MethodReference Method {
+                       get { return m_method; }
+                       set { m_method = value; }
+               }
+
+               public TypeReference ReturnType {
+                       get { return m_returnType; }
+                       set { m_returnType = value; }
+               }
+
+               internal ParameterDefinition Parameter {
+                       get {
+                               if (m_param == null) {
+                                       m_param = new ParameterDefinition (m_returnType);
+                                       m_param.Method = m_method;
+                               }
+
+                               return m_param;
+                       }
+                       set { m_param = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return Parameter.MetadataToken; }
+                       set { Parameter.MetadataToken = value; }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return m_param != null && m_param.HasCustomAttributes; }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get { return Parameter.CustomAttributes; }
+               }
+
+               public bool HasConstant {
+                       get { return m_param != null && m_param.HasConstant; }
+               }
+
+               public object Constant {
+                       get { return Parameter.Constant; }
+                       set { Parameter.Constant = value; }
+               }
+
+               public MarshalSpec MarshalSpec {
+                       get { return Parameter.MarshalSpec; }
+                       set { Parameter.MarshalSpec = value; }
+               }
+
+               public MethodReturnType (TypeReference retType)
+               {
+                       m_returnType = retType;
+               }
+
+               public override string ToString ()
+               {
+                       return String.Format ("[return: {0}]", m_returnType);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs
new file mode 100644 (file)
index 0000000..232b27a
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// MethodSemanticsAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum MethodSemanticsAttributes : ushort {
+               Setter          = 0x0001,       // Setter for property
+               Getter          = 0x0002,       // Getter for property
+               Other           = 0x0004,       // Other method for property or event
+               AddOn           = 0x0008,       // AddOn method for event
+               RemoveOn        = 0x0010,       // RemoveOn method for event
+               Fire            = 0x0020         // Fire method for event
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs
new file mode 100644 (file)
index 0000000..97e2679
--- /dev/null
@@ -0,0 +1,90 @@
+//
+// MethodSpecification.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal abstract class MethodSpecification : MethodReference {
+
+               MethodReference m_elementMethod;
+
+               public MethodReference ElementMethod {
+                       get { return m_elementMethod; }
+                       set { m_elementMethod = value; }
+               }
+
+               public override string Name {
+                       get { return m_elementMethod.Name; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override MethodCallingConvention CallingConvention {
+                       get { return m_elementMethod.CallingConvention; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool HasThis {
+                       get { return m_elementMethod.HasThis; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool ExplicitThis {
+                       get { return m_elementMethod.ExplicitThis; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override MethodReturnType ReturnType {
+                       get { return m_elementMethod.ReturnType; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override TypeReference DeclaringType {
+                       get { return m_elementMethod.DeclaringType; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override bool HasParameters {
+                       get { return m_elementMethod.HasParameters; }
+               }
+
+               public override ParameterDefinitionCollection Parameters {
+                       get { return m_elementMethod.Parameters; }
+               }
+
+               internal MethodSpecification (MethodReference elemMethod) : base (string.Empty)
+               {
+                       m_elementMethod = elemMethod;
+               }
+
+               public override MethodReference GetOriginalMethod()
+               {
+                       return m_elementMethod.GetOriginalMethod ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs b/mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs
new file mode 100644 (file)
index 0000000..3bab6af
--- /dev/null
@@ -0,0 +1,87 @@
+//
+// Modifiers.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal abstract class ModType : TypeSpecification {
+
+               TypeReference m_modifierType;
+
+               public TypeReference ModifierType {
+                       get { return m_modifierType; }
+                       set { m_modifierType = value; }
+               }
+
+               public override string Name
+               {
+                       get { return string.Concat (base.Name, Suffix ()); }
+               }
+
+               public override string FullName
+               {
+                       get { return string.Concat (base.FullName, Suffix ()); }
+               }
+
+               string Suffix ()
+               {
+                       return string.Concat (" ", ModifierName, "(", this.ModifierType.FullName, ")");
+               }
+
+               protected abstract string ModifierName {
+                       get;
+               }
+
+               public ModType (TypeReference elemType, TypeReference modType) : base (elemType)
+               {
+                       m_modifierType = modType;
+               }
+       }
+
+       internal sealed class ModifierOptional : ModType {
+
+               protected override string ModifierName {
+                       get { return "modopt"; }
+               }
+
+               public ModifierOptional (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+               {
+               }
+
+       }
+
+       internal sealed class ModifierRequired : ModType {
+
+               protected override string ModifierName {
+                       get { return "modreq"; }
+               }
+
+               public ModifierRequired (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs
new file mode 100644 (file)
index 0000000..c7f4a0b
--- /dev/null
@@ -0,0 +1,601 @@
+//
+// ModuleDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using SR = System.Reflection;
+       using SS = System.Security;
+       using SSP = System.Security.Permissions;
+       using System.Text;
+
+       using Mono.Cecil.Cil;
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider, IMetadataScope,
+               IReflectionStructureVisitable, IReflectionVisitable {
+
+               Guid m_mvid;
+               bool m_main;
+               bool m_manifestOnly;
+
+               AssemblyNameReferenceCollection m_asmRefs;
+               ModuleReferenceCollection m_modRefs;
+               ResourceCollection m_res;
+               TypeDefinitionCollection m_types;
+               TypeReferenceCollection m_refs;
+               ExternTypeCollection m_externs;
+               MemberReferenceCollection m_members;
+               CustomAttributeCollection m_customAttrs;
+
+               AssemblyDefinition m_asm;
+               Image m_image;
+
+               ImageReader m_imgReader;
+               ReflectionController m_controller;
+               MetadataResolver m_resolver;
+               SecurityDeclarationReader m_secReader;
+
+               public Guid Mvid {
+                       get { return m_mvid; }
+                       set { m_mvid = value; }
+               }
+
+               public bool Main {
+                       get { return m_main; }
+                       set { m_main = value; }
+               }
+
+               public AssemblyNameReferenceCollection AssemblyReferences {
+                       get { return m_asmRefs; }
+               }
+
+               public ModuleReferenceCollection ModuleReferences {
+                       get { return m_modRefs; }
+               }
+
+               public ResourceCollection Resources {
+                       get { return m_res; }
+               }
+
+               public TypeDefinitionCollection Types {
+                       get { return m_types; }
+               }
+
+               public TypeReferenceCollection TypeReferences {
+                       get { return m_refs; }
+               }
+
+               public MemberReferenceCollection MemberReferences {
+                       get { return m_members; }
+               }
+
+               public ExternTypeCollection ExternTypes {
+                       get {
+                               if (m_externs == null)
+                                       m_externs = new ExternTypeCollection (this);
+
+                               return m_externs;
+                       }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public AssemblyDefinition Assembly {
+                       get { return m_asm; }
+               }
+
+               internal ReflectionController Controller {
+                       get { return m_controller; }
+               }
+
+               internal MetadataResolver Resolver {
+                       get { return m_resolver; }
+               }
+
+               internal ImageReader ImageReader {
+                       get { return m_imgReader; }
+               }
+
+               public Image Image {
+                       get { return m_image; }
+                       set {
+                               m_image = value;
+                               m_secReader = null;
+                       }
+               }
+
+               public ModuleDefinition (string name, AssemblyDefinition asm) :
+                       this (name, asm, null, false)
+               {
+               }
+
+               public ModuleDefinition (string name, AssemblyDefinition asm, bool main) :
+                       this (name, asm, null, main)
+               {
+               }
+
+               internal ModuleDefinition (string name, AssemblyDefinition asm, StructureReader reader, bool main) : base (name)
+               {
+                       if (asm == null)
+                               throw new ArgumentNullException ("asm");
+                       if (name == null || name.Length == 0)
+                               throw new ArgumentNullException ("name");
+
+                       m_asm = asm;
+                       m_main = main;
+#if !CF_1_0
+                       m_mvid = Guid.NewGuid ();
+#endif
+                       if (reader != null) {
+                               m_image = reader.Image;
+                               m_imgReader = reader.ImageReader;
+                               m_manifestOnly = reader.ManifestOnly;
+                       } else
+                               m_image = Image.CreateImage ();
+
+                       m_modRefs = new ModuleReferenceCollection (this);
+                       m_asmRefs = new AssemblyNameReferenceCollection (this);
+                       m_res = new ResourceCollection (this);
+                       m_types = new TypeDefinitionCollection (this);
+                       m_refs = new TypeReferenceCollection (this);
+                       m_members = new MemberReferenceCollection (this);
+
+                       m_controller = new ReflectionController (this);
+                       m_resolver = new MetadataResolver (asm);
+               }
+
+               public IMetadataTokenProvider LookupByToken (MetadataToken token)
+               {
+                       return m_controller.Reader.LookupByToken (token);
+               }
+
+               public IMetadataTokenProvider LookupByToken (TokenType table, int rid)
+               {
+                       return LookupByToken (new MetadataToken (table, (uint) rid));
+               }
+
+               void CheckContext (TypeDefinition context)
+               {
+                       if (context.Module != this)
+                               throw new ArgumentException ("The context parameter does not belongs to this module");
+
+                       CheckGenericParameterProvider (context);
+               }
+
+               void CheckContext (MethodDefinition context)
+               {
+                       CheckGenericParameterProvider (context);
+               }
+
+               static void CheckGenericParameterProvider (IGenericParameterProvider context)
+               {
+                       if (context == null)
+                               throw new ArgumentNullException ("context");
+                       if (context.GenericParameters.Count == 0)
+                               throw new ArgumentException ("The context parameter is not a generic type");
+               }
+
+               ImportContext GetContext ()
+               {
+                       return new ImportContext (m_controller.Importer);
+               }
+
+               static ImportContext GetContext (IImporter importer)
+               {
+                       return new ImportContext (importer);
+               }
+
+               ImportContext GetContext (TypeDefinition context)
+               {
+                       return new ImportContext (m_controller.Importer, context);
+               }
+
+               ImportContext GetContext (MethodDefinition context)
+               {
+                       return new ImportContext (m_controller.Importer, context);
+               }
+
+               static ImportContext GetContext (IImporter importer, TypeDefinition context)
+               {
+                       return new ImportContext (importer, context);
+               }
+
+               public TypeReference Import (Type type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return m_controller.Helper.ImportSystemType (type, GetContext ());
+               }
+
+               public TypeReference Import (Type type, TypeDefinition context)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       CheckContext (context);
+
+                       return m_controller.Helper.ImportSystemType (type, GetContext (context));
+               }
+
+               public TypeReference Import (Type type, MethodDefinition context)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       CheckContext (context);
+
+                       return m_controller.Helper.ImportSystemType (type, GetContext (context));
+               }
+
+               public MethodReference Import (SR.MethodBase meth)
+               {
+                       if (meth == null)
+                               throw new ArgumentNullException ("meth");
+
+                       if (meth is SR.ConstructorInfo)
+                               return m_controller.Helper.ImportConstructorInfo (
+                                       meth as SR.ConstructorInfo, GetContext ());
+                       else
+                               return m_controller.Helper.ImportMethodInfo (
+                                       meth as SR.MethodInfo, GetContext ());
+               }
+
+               public MethodReference Import (SR.MethodBase meth, TypeDefinition context)
+               {
+                       if (meth == null)
+                               throw new ArgumentNullException ("meth");
+                       CheckContext (context);
+
+                       ImportContext import_context = GetContext (context);
+
+                       if (meth is SR.ConstructorInfo)
+                               return m_controller.Helper.ImportConstructorInfo (
+                                       meth as SR.ConstructorInfo, import_context);
+                       else
+                               return m_controller.Helper.ImportMethodInfo (
+                                       meth as SR.MethodInfo, import_context);
+               }
+
+               public FieldReference Import (SR.FieldInfo field)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+
+                       return m_controller.Helper.ImportFieldInfo (field, GetContext ());
+               }
+
+               public FieldReference Import (SR.FieldInfo field, TypeDefinition context)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       CheckContext (context);
+
+                       return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+               }
+
+               public FieldReference Import (SR.FieldInfo field, MethodDefinition context)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       CheckContext (context);
+
+                       return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+               }
+
+               public TypeReference Import (TypeReference type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return m_controller.Importer.ImportTypeReference (type, GetContext ());
+               }
+
+               public TypeReference Import (TypeReference type, TypeDefinition context)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+               }
+
+               public TypeReference Import (TypeReference type, MethodDefinition context)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+               }
+
+               public MethodReference Import (MethodReference meth)
+               {
+                       if (meth == null)
+                               throw new ArgumentNullException ("meth");
+
+                       return m_controller.Importer.ImportMethodReference (meth, GetContext ());
+               }
+
+               public MethodReference Import (MethodReference meth, TypeDefinition context)
+               {
+                       if (meth == null)
+                               throw new ArgumentNullException ("meth");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+               }
+
+               public MethodReference Import (MethodReference meth, MethodDefinition context)
+               {
+                       if (meth == null)
+                               throw new ArgumentNullException ("meth");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+               }
+
+               public FieldReference Import (FieldReference field)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+
+                       return m_controller.Importer.ImportFieldReference (field, GetContext ());
+               }
+
+               public FieldReference Import (FieldReference field, TypeDefinition context)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+               }
+
+               public FieldReference Import (FieldReference field, MethodDefinition context)
+               {
+                       if (field == null)
+                               throw new ArgumentNullException ("field");
+                       CheckContext (context);
+
+                       return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+               }
+
+               static FieldDefinition ImportFieldDefinition (FieldDefinition field, ImportContext context)
+               {
+                       return FieldDefinition.Clone (field, context);
+               }
+
+               static MethodDefinition ImportMethodDefinition (MethodDefinition meth, ImportContext context)
+               {
+                       return MethodDefinition.Clone (meth, context);
+               }
+
+               static TypeDefinition ImportTypeDefinition (TypeDefinition type, ImportContext context)
+               {
+                       return TypeDefinition.Clone (type, context);
+               }
+
+               public TypeDefinition Inject (TypeDefinition type)
+               {
+                       return Inject (type, m_controller.Importer);
+               }
+
+               public TypeDefinition Inject (TypeDefinition type, IImporter importer)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+                       if (importer == null)
+                               throw new ArgumentNullException ("importer");
+
+                       TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer));
+                       this.Types.Add (definition);
+                       return definition;
+               }
+
+               public TypeDefinition Inject (TypeDefinition type, TypeDefinition context)
+               {
+                       return Inject (type, context, m_controller.Importer);
+               }
+
+               public TypeDefinition Inject (TypeDefinition type, TypeDefinition context, IImporter importer)
+               {
+                       Check (type, context, importer);
+
+                       TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer, context));
+                       context.NestedTypes.Add (definition);
+                       return definition;
+               }
+
+               public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context)
+               {
+                       return Inject (meth, context, m_controller.Importer);
+               }
+
+               void Check (IMemberDefinition definition, TypeDefinition context, IImporter importer)
+               {
+                       if (definition == null)
+                               throw new ArgumentNullException ("definition");
+                       if (context == null)
+                               throw new ArgumentNullException ("context");
+                       if (importer == null)
+                               throw new ArgumentNullException ("importer");
+                       if (context.Module != this)
+                               throw new ArgumentException ("The context parameter does not belongs to this module");
+               }
+
+               public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context, IImporter importer)
+               {
+                       Check (meth, context, importer);
+
+                       MethodDefinition definition = ImportMethodDefinition (meth, GetContext (importer, context));
+                       context.Methods.Add (definition);
+                       return definition;
+               }
+
+               public FieldDefinition Inject (FieldDefinition field, TypeDefinition context)
+               {
+                       return Inject (field, context, m_controller.Importer);
+               }
+
+               public FieldDefinition Inject (FieldDefinition field, TypeDefinition context, IImporter importer)
+               {
+                       Check (field, context, importer);
+
+                       FieldDefinition definition = ImportFieldDefinition (field, GetContext (importer, context));
+                       context.Fields.Add (definition);
+                       return definition;
+               }
+
+               public void FullLoad ()
+               {
+                       if (m_manifestOnly)
+                               m_controller.Reader.VisitModuleDefinition (this);
+
+                       foreach (TypeDefinition type in this.Types) {
+                               foreach (MethodDefinition meth in type.Methods)
+                                       meth.LoadBody ();
+                               foreach (MethodDefinition ctor in type.Constructors)
+                                       ctor.LoadBody ();
+                       }
+
+                       if (m_controller.Reader.SymbolReader == null)
+                               return;
+
+                       m_controller.Reader.SymbolReader.Dispose ();
+                       m_controller.Reader.SymbolReader = null;
+               }
+
+               public void LoadSymbols ()
+               {
+                       m_controller.Reader.SymbolReader = SymbolStoreHelper.GetReader (this);
+               }
+
+               public void LoadSymbols (ISymbolReader reader)
+               {
+                       m_controller.Reader.SymbolReader = reader;
+               }
+
+               public void SaveSymbols ()
+               {
+                       m_controller.Writer.SaveSymbols = true;
+               }
+
+               public void SaveSymbols (ISymbolWriter writer)
+               {
+                       SaveSymbols ();
+                       m_controller.Writer.SymbolWriter = writer;
+               }
+
+               public void SaveSymbols (string outputDirectory)
+               {
+                       SaveSymbols ();
+                       m_controller.Writer.OutputFile = outputDirectory;
+               }
+
+               public void SaveSymbols (string outputDirectory, ISymbolWriter writer)
+               {
+                       SaveSymbols (outputDirectory);
+                       m_controller.Writer.SymbolWriter = writer;
+               }
+
+               public byte [] GetAsByteArray (CustomAttribute ca)
+               {
+                       CustomAttribute customAttr = ca;
+                       if (!ca.Resolved)
+                               if (customAttr.Blob != null)
+                                       return customAttr.Blob;
+                               else
+                                       return new byte [0];
+
+                       return m_controller.Writer.SignatureWriter.CompressCustomAttribute (
+                               ReflectionWriter.GetCustomAttributeSig (ca), ca.Constructor);
+               }
+
+               public byte [] GetAsByteArray (SecurityDeclaration dec)
+               {
+                       // TODO - add support for 2.0 format
+                       // note: the 1.x format is still supported in 2.0 so this isn't an immediate problem
+                       if (!dec.Resolved)
+                               return dec.Blob;
+
+#if !CF_1_0 && !CF_2_0
+                       if (dec.PermissionSet != null)
+                               return Encoding.Unicode.GetBytes (dec.PermissionSet.ToXml ().ToString ());
+#endif
+
+                       return new byte [0];
+               }
+
+               public CustomAttribute FromByteArray (MethodReference ctor, byte [] data)
+               {
+                       return m_controller.Reader.GetCustomAttribute (ctor, data);
+               }
+
+               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
+               {
+                       if (m_secReader == null)
+                               m_secReader = new SecurityDeclarationReader (Image.MetadataRoot, m_controller.Reader);
+                       return m_secReader.FromByteArray (action, declaration);
+               }
+
+               public override void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitModuleDefinition (this);
+
+                       this.AssemblyReferences.Accept (visitor);
+                       this.ModuleReferences.Accept (visitor);
+                       this.Resources.Accept (visitor);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitModuleDefinition (this);
+
+                       this.Types.Accept (visitor);
+                       this.TypeReferences.Accept (visitor);
+               }
+
+               public override string ToString ()
+               {
+                       string s = (m_main ? "(main), Mvid=" : "Mvid=");
+                       return s + m_mvid;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..2676126
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ModuleDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ModuleDefinitionCollection : CollectionBase, IReflectionStructureVisitable {
+
+               AssemblyDefinition m_container;
+
+               public ModuleDefinition this [int index] {
+                       get { return List [index] as ModuleDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public AssemblyDefinition Container {
+                       get { return m_container; }
+               }
+
+               public ModuleDefinitionCollection (AssemblyDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (ModuleDefinition value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (ModuleDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (ModuleDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, ModuleDefinition value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (ModuleDefinition value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is ModuleDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (ModuleDefinition).FullName);
+               }
+
+               public void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitModuleDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs
new file mode 100644 (file)
index 0000000..520cd7a
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// ModuleReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       using Mono.Cecil;
+       using Mono.Cecil.Metadata;
+
+       internal class ModuleReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+
+               string m_name;
+               MetadataToken m_token;
+               IDictionary m_annotations;
+
+               public string Name {
+                       get { return m_name; }
+                       set { m_name = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return m_token; }
+                       set { m_token = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public ModuleReference (string name)
+               {
+                       m_name = name;
+               }
+
+               public virtual void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitModuleReference (this);
+               }
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs
new file mode 100644 (file)
index 0000000..a6b3048
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ModuleReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ModuleReferenceCollection : CollectionBase, IReflectionStructureVisitable {
+
+               ModuleDefinition m_container;
+
+               public ModuleReference this [int index] {
+                       get { return List [index] as ModuleReference; }
+                       set { List [index] = value; }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public ModuleReferenceCollection (ModuleDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (ModuleReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (ModuleReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (ModuleReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, ModuleReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (ModuleReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is ModuleReference))
+                               throw new ArgumentException ("Must be of type " + typeof (ModuleReference).FullName);
+               }
+
+               public void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitModuleReferenceCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NameObjectCollectionBase.cs b/mcs/tools/cil-strip/Mono.Cecil/NameObjectCollectionBase.cs
new file mode 100644 (file)
index 0000000..d517978
--- /dev/null
@@ -0,0 +1,650 @@
+using System;
+using System.Collections;
+using System.Runtime.Serialization;
+
+#if NO_SYSTEM_DLL
+namespace System.Collections.Specialized
+{
+       [Serializable]
+       internal abstract class NameObjectCollectionBase : ICollection, IEnumerable, ISerializable, IDeserializationCallback
+       {
+               private Hashtable m_ItemsContainer;
+               /// <summary>
+               /// Extends Hashtable based Items container to support storing null-key pairs
+               /// </summary>
+               private _Item m_NullKeyItem;
+               private ArrayList m_ItemsArray;
+               private IHashCodeProvider m_hashprovider;
+               private IComparer m_comparer;
+               private int m_defCapacity;
+               private bool m_readonly;
+               SerializationInfo infoCopy;
+               private KeysCollection keyscoll;
+#if NET_2_0
+               private IEqualityComparer equality_comparer;
+
+               internal IEqualityComparer EqualityComparer {
+                       get { return equality_comparer; }
+               }
+#endif
+               internal IComparer Comparer
+               {
+                       get { return m_comparer; }
+               }
+
+               internal IHashCodeProvider HashCodeProvider
+               {
+                       get { return m_hashprovider; }
+               }
+
+               internal class _Item
+               {
+                       public string key;
+                       public object value;
+                       public _Item(string key, object value)
+                       {
+                               this.key = key;
+                               this.value = value;
+                       }
+               }
+               /// <summary>
+               /// Implements IEnumerable interface for KeysCollection
+               /// </summary>
+               [Serializable]
+               internal class _KeysEnumerator : IEnumerator
+               {
+                       private NameObjectCollectionBase m_collection;
+                       private int m_position;
+
+                       internal _KeysEnumerator(NameObjectCollectionBase collection)
+                       {
+                               m_collection = collection;
+                               Reset();
+                       }
+                       public object Current
+                       {
+
+                               get
+                               {
+                                       if ((m_position < m_collection.Count) || (m_position < 0))
+                                               return m_collection.BaseGetKey(m_position);
+                                       else
+                                               throw new InvalidOperationException();
+                               }
+
+                       }
+                       public bool MoveNext()
+                       {
+                               return ((++m_position) < m_collection.Count);
+                       }
+                       public void Reset()
+                       {
+                               m_position = -1;
+                       }
+               }
+
+               /// <summary>
+               /// SDK: Represents a collection of the String keys of a collection.
+               /// </summary>
+               [Serializable]
+               internal class KeysCollection : ICollection, IEnumerable
+               {
+                       private NameObjectCollectionBase m_collection;
+
+                       internal KeysCollection(NameObjectCollectionBase collection)
+                       {
+                               this.m_collection = collection;
+                       }
+
+                       public virtual string Get(int index)
+                       {
+                               return m_collection.BaseGetKey(index);
+                       }
+
+                       // ICollection methods -----------------------------------
+                       void ICollection.CopyTo(Array array, int arrayIndex)
+                       {
+                               ArrayList items = m_collection.m_ItemsArray;
+#if NET_2_0
+                               if (null == array)
+                                       throw new ArgumentNullException ("array");
+
+                               if (arrayIndex < 0)
+                                       throw new ArgumentOutOfRangeException ("arrayIndex");
+
+                               if ((array.Length > 0) && (arrayIndex >= array.Length))
+                                       throw new ArgumentException ("arrayIndex is equal to or greater than array.Length");
+
+                               if (arrayIndex + items.Count > array.Length)
+                                       throw new ArgumentException ("Not enough room from arrayIndex to end of array for this KeysCollection");
+#endif
+
+                               if (array != null && array.Rank > 1)
+                                       throw new ArgumentException("array is multidimensional");
+
+                               object[] objArray = (object[])array;
+                               for (int i = 0; i < items.Count; i++, arrayIndex++)
+                                       objArray[arrayIndex] = ((_Item)items[i]).key;
+                       }
+
+                       bool ICollection.IsSynchronized
+                       {
+                               get
+                               {
+                                       return false;
+                               }
+                       }
+                       object ICollection.SyncRoot
+                       {
+                               get
+                               {
+                                       return m_collection;
+                               }
+                       }
+                       /// <summary>
+                       /// Gets the number of keys in the NameObjectCollectionBase.KeysCollection
+                       /// </summary>
+                       public int Count
+                       {
+                               get
+                               {
+                                       return m_collection.Count;
+                               }
+                       }
+
+                       public string this[int index]
+                       {
+                               get { return Get(index); }
+                       }
+
+                       // IEnumerable methods --------------------------------
+                       /// <summary>
+                       /// SDK: Returns an enumerator that can iterate through the NameObjectCollectionBase.KeysCollection.
+                       /// </summary>
+                       /// <returns></returns>
+                       public IEnumerator GetEnumerator()
+                       {
+                               return new _KeysEnumerator(m_collection);
+                       }
+               }
+
+               //--------------- Protected Instance Constructors --------------
+
+               /// <summary>
+               /// SDK: Initializes a new instance of the NameObjectCollectionBase class that is empty.
+               /// </summary>
+               protected NameObjectCollectionBase()
+               {
+                       m_readonly = false;
+#if NET_1_0
+                       m_hashprovider = CaseInsensitiveHashCodeProvider.Default;
+                       m_comparer = CaseInsensitiveComparer.Default;
+#else
+                       m_hashprovider = CaseInsensitiveHashCodeProvider.DefaultInvariant;
+                       m_comparer = CaseInsensitiveComparer.DefaultInvariant;
+#endif
+                       m_defCapacity = 0;
+                       Init();
+               }
+
+               protected NameObjectCollectionBase(int capacity)
+               {
+                       m_readonly = false;
+#if NET_1_0
+                       m_hashprovider = CaseInsensitiveHashCodeProvider.Default;
+                       m_comparer = CaseInsensitiveComparer.Default;
+#else
+                       m_hashprovider = CaseInsensitiveHashCodeProvider.DefaultInvariant;
+                       m_comparer = CaseInsensitiveComparer.DefaultInvariant;
+#endif
+                       m_defCapacity = capacity;
+                       Init();
+               }
+
+#if NET_2_0
+
+               internal NameObjectCollectionBase (IEqualityComparer equalityComparer, IComparer comparer, IHashCodeProvider hcp)
+               {
+                       equality_comparer = equalityComparer;
+                       m_comparer = comparer;
+                       m_hashprovider = hcp;
+                       m_readonly = false;
+                       m_defCapacity = 0;
+                       Init ();
+               }
+
+               protected NameObjectCollectionBase (IEqualityComparer equalityComparer) : this( (equalityComparer == null ? StringComparer.InvariantCultureIgnoreCase : equalityComparer), null, null)
+               {
+               }
+
+               [Obsolete ("Use NameObjectCollectionBase(IEqualityComparer)")]
+#endif
+               protected NameObjectCollectionBase(IHashCodeProvider hashProvider, IComparer comparer)
+               {
+                       m_comparer = comparer;
+                       m_hashprovider = hashProvider;
+                       m_readonly = false;
+                       m_defCapacity = 0;
+                       Init();
+               }
+
+               protected NameObjectCollectionBase(SerializationInfo info, StreamingContext context)
+               {
+                       infoCopy = info;
+               }
+
+#if NET_2_0
+               protected NameObjectCollectionBase (int capacity, IEqualityComparer equalityComparer)
+               {
+                       m_readonly = false;
+                       equality_comparer = (equalityComparer == null ? StringComparer.InvariantCultureIgnoreCase : equalityComparer);
+                       m_defCapacity = capacity;
+                       Init();
+               }
+
+               [Obsolete ("Use NameObjectCollectionBase(int,IEqualityComparer)")]
+#endif
+               protected NameObjectCollectionBase(int capacity, IHashCodeProvider hashProvider, IComparer comparer)
+               {
+                       m_readonly = false;
+
+                       m_hashprovider = hashProvider;
+                       m_comparer = comparer;
+                       m_defCapacity = capacity;
+                       Init();
+               }
+
+               private void Init()
+               {
+#if NET_2_0
+                       if (equality_comparer != null)
+                               m_ItemsContainer = new Hashtable (m_defCapacity, equality_comparer);
+                       else
+                               m_ItemsContainer = new Hashtable (m_defCapacity, m_hashprovider, m_comparer);
+#else
+                       m_ItemsContainer = new Hashtable(m_defCapacity, m_hashprovider, m_comparer);
+#endif
+                       m_ItemsArray = new ArrayList();
+                       m_NullKeyItem = null;
+               }
+
+               //--------------- Public Instance Properties -------------------
+
+               public virtual NameObjectCollectionBase.KeysCollection Keys
+               {
+                       get
+                       {
+                               if (keyscoll == null)
+                                       keyscoll = new KeysCollection(this);
+                               return keyscoll;
+                       }
+               }
+
+               //--------------- Public Instance Methods ----------------------
+               //
+               /// <summary>
+               /// SDK: Returns an enumerator that can iterate through the NameObjectCollectionBase.
+               ///
+               /// <remark>This enumerator returns the keys of the collection as strings.</remark>
+               /// </summary>
+               /// <returns></returns>
+               public
+#if NET_2_0
+               virtual
+#endif
+ IEnumerator GetEnumerator()
+               {
+                       return new _KeysEnumerator(this);
+               }
+
+               // ISerializable
+               public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
+               {
+                       if (info == null)
+                               throw new ArgumentNullException("info");
+
+                       int count = Count;
+                       string[] keys = new string[count];
+                       object[] values = new object[count];
+                       int i = 0;
+                       foreach (_Item item in m_ItemsArray)
+                       {
+                               keys[i] = item.key;
+                               values[i] = item.value;
+                               i++;
+                       }
+
+#if NET_2_0
+                       if (equality_comparer != null) {
+                               info.AddValue ("KeyComparer", equality_comparer, typeof (IEqualityComparer));
+                               info.AddValue ("Version", 4, typeof (int));
+                       } else {
+                               info.AddValue ("HashProvider", m_hashprovider, typeof (IHashCodeProvider));
+                               info.AddValue ("Comparer", m_comparer, typeof (IComparer));
+                               info.AddValue ("Version", 2, typeof (int));
+                       }
+#else
+                       info.AddValue("HashProvider", m_hashprovider, typeof(IHashCodeProvider));
+                       info.AddValue("Comparer", m_comparer, typeof(IComparer));
+#endif
+                       info.AddValue("ReadOnly", m_readonly);
+                       info.AddValue("Count", count);
+                       info.AddValue("Keys", keys, typeof(string[]));
+                       info.AddValue("Values", values, typeof(object[]));
+               }
+
+               // ICollection
+               public virtual int Count
+               {
+                       get
+                       {
+                               return m_ItemsArray.Count;
+                       }
+               }
+
+               bool ICollection.IsSynchronized
+               {
+                       get { return false; }
+               }
+
+               object ICollection.SyncRoot
+               {
+                       get { return this; }
+               }
+
+               void ICollection.CopyTo(Array array, int index)
+               {
+                       ((ICollection)Keys).CopyTo(array, index);
+               }
+
+               // IDeserializationCallback
+               public virtual void OnDeserialization(object sender)
+               {
+                       SerializationInfo info = infoCopy;
+
+                       // If a subclass overrides the serialization constructor
+                       // and inplements its own serialization process, infoCopy will
+                       // be null and we can ignore this callback.
+                       if (info == null)
+                               return;
+
+                       infoCopy = null;
+                       m_hashprovider = (IHashCodeProvider)info.GetValue("HashProvider",
+                                                                               typeof(IHashCodeProvider));
+#if NET_2_0
+                       if (m_hashprovider == null) {
+                               equality_comparer = (IEqualityComparer) info.GetValue ("KeyComparer", typeof (IEqualityComparer));
+                       } else {
+                               m_comparer = (IComparer) info.GetValue ("Comparer", typeof (IComparer));
+                               if (m_comparer == null)
+                                       throw new SerializationException ("The comparer is null");
+                       }
+#else
+                       if (m_hashprovider == null)
+                               throw new SerializationException("The hash provider is null");
+
+                       m_comparer = (IComparer)info.GetValue("Comparer", typeof(IComparer));
+                       if (m_comparer == null)
+                               throw new SerializationException("The comparer is null");
+#endif
+                       m_readonly = info.GetBoolean("ReadOnly");
+                       string[] keys = (string[])info.GetValue("Keys", typeof(string[]));
+                       if (keys == null)
+                               throw new SerializationException("keys is null");
+
+                       object[] values = (object[])info.GetValue("Values", typeof(object[]));
+                       if (values == null)
+                               throw new SerializationException("values is null");
+
+                       Init();
+                       int count = keys.Length;
+                       for (int i = 0; i < count; i++)
+                               BaseAdd(keys[i], values[i]);
+               }
+
+               //--------------- Protected Instance Properties ----------------
+               /// <summary>
+               /// SDK: Gets or sets a value indicating whether the NameObjectCollectionBase instance is read-only.
+               /// </summary>
+               protected bool IsReadOnly
+               {
+                       get
+                       {
+                               return m_readonly;
+                       }
+                       set
+                       {
+                               m_readonly = value;
+                       }
+               }
+
+               //--------------- Protected Instance Methods -------------------
+               /// <summary>
+               /// Adds an Item with the specified key and value into the <see cref="NameObjectCollectionBase"/>NameObjectCollectionBase instance.
+               /// </summary>
+               /// <param name="name"></param>
+               /// <param name="value"></param>
+               protected void BaseAdd(string name, object value)
+               {
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+
+                       _Item newitem = new _Item(name, value);
+
+                       if (name == null)
+                       {
+                               //todo: consider nullkey entry
+                               if (m_NullKeyItem == null)
+                                       m_NullKeyItem = newitem;
+                       }
+                       else
+                               if (m_ItemsContainer[name] == null)
+                               {
+                                       m_ItemsContainer.Add(name, newitem);
+                               }
+                       m_ItemsArray.Add(newitem);
+               }
+
+               protected void BaseClear()
+               {
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+                       Init();
+               }
+
+               /// <summary>
+               /// SDK: Gets the value of the entry at the specified index of the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <param name="index"></param>
+               /// <returns></returns>
+               protected object BaseGet(int index)
+               {
+                       return ((_Item)m_ItemsArray[index]).value;
+               }
+
+               /// <summary>
+               /// SDK: Gets the value of the first entry with the specified key from the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <remark>CAUTION: The BaseGet method does not distinguish between a null reference which is returned because the specified key is not found and a null reference which is returned because the value associated with the key is a null reference.</remark>
+               /// <param name="name"></param>
+               /// <returns></returns>
+               protected object BaseGet(string name)
+               {
+                       _Item item = FindFirstMatchedItem(name);
+                       /// CAUTION: The BaseGet method does not distinguish between a null reference which is returned because the specified key is not found and a null reference which is returned because the value associated with the key is a null reference.
+                       if (item == null)
+                               return null;
+                       else
+                               return item.value;
+               }
+
+               /// <summary>
+               /// SDK:Returns a String array that contains all the keys in the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <returns>A String array that contains all the keys in the NameObjectCollectionBase instance.</returns>
+               protected string[] BaseGetAllKeys()
+               {
+                       int cnt = m_ItemsArray.Count;
+                       string[] allKeys = new string[cnt];
+                       for (int i = 0; i < cnt; i++)
+                               allKeys[i] = BaseGetKey(i);//((_Item)m_ItemsArray[i]).key;
+
+                       return allKeys;
+               }
+
+               /// <summary>
+               /// SDK: Returns an Object array that contains all the values in the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <returns>An Object array that contains all the values in the NameObjectCollectionBase instance.</returns>
+               protected object[] BaseGetAllValues()
+               {
+                       int cnt = m_ItemsArray.Count;
+                       object[] allValues = new object[cnt];
+                       for (int i = 0; i < cnt; i++)
+                               allValues[i] = BaseGet(i);
+
+                       return allValues;
+               }
+
+               protected object[] BaseGetAllValues(Type type)
+               {
+                       if (type == null)
+                               throw new ArgumentNullException("'type' argument can't be null");
+                       int cnt = m_ItemsArray.Count;
+                       object[] allValues = (object[])Array.CreateInstance(type, cnt);
+                       for (int i = 0; i < cnt; i++)
+                               allValues[i] = BaseGet(i);
+
+                       return allValues;
+               }
+
+               protected string BaseGetKey(int index)
+               {
+                       return ((_Item)m_ItemsArray[index]).key;
+               }
+
+               /// <summary>
+               /// Gets a value indicating whether the NameObjectCollectionBase instance contains entries whose keys are not a null reference
+               /// </summary>
+               /// <returns>true if the NameObjectCollectionBase instance contains entries whose keys are not a null reference otherwise, false.</returns>
+               protected bool BaseHasKeys()
+               {
+                       return (m_ItemsContainer.Count > 0);
+               }
+
+               protected void BaseRemove(string name)
+               {
+                       int cnt = 0;
+                       String key;
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+                       if (name != null)
+                       {
+                               m_ItemsContainer.Remove(name);
+                       }
+                       else
+                       {
+                               m_NullKeyItem = null;
+                       }
+
+                       cnt = m_ItemsArray.Count;
+                       for (int i = 0; i < cnt; )
+                       {
+                               key = BaseGetKey(i);
+                               if (Equals(key, name))
+                               {
+                                       m_ItemsArray.RemoveAt(i);
+                                       cnt--;
+                               }
+                               else
+                                       i++;
+                       }
+               }
+
+               /// <summary>
+               ///
+               /// </summary>
+               /// <param name="index"></param>
+               /// <LAME>This function implemented the way Microsoft implemented it -
+               /// item is removed from hashtable and array without considering the case when there are two items with the same key but different values in array.
+               /// E.g. if
+               /// hashtable is [("Key1","value1")] and array contains [("Key1","value1")("Key1","value2")] then
+               /// after RemoveAt(1) the collection will be in following state:
+               /// hashtable:[]
+               /// array: [("Key1","value1")]
+               /// It's ok only then the key is uniquely assosiated with the value
+               /// To fix it a comparsion of objects stored under the same key in the hashtable and in the arraylist should be added
+               /// </LAME>>
+               protected void BaseRemoveAt(int index)
+               {
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+                       string key = BaseGetKey(index);
+                       if (key != null)
+                       {
+                               // TODO: see LAME description above
+                               m_ItemsContainer.Remove(key);
+                       }
+                       else
+                               m_NullKeyItem = null;
+                       m_ItemsArray.RemoveAt(index);
+               }
+
+               /// <summary>
+               /// SDK: Sets the value of the entry at the specified index of the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <param name="index"></param>
+               /// <param name="value"></param>
+               protected void BaseSet(int index, object value)
+               {
+#if NET_2_0
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+#endif
+                       _Item item = (_Item)m_ItemsArray[index];
+                       item.value = value;
+               }
+
+               /// <summary>
+               /// Sets the value of the first entry with the specified key in the NameObjectCollectionBase instance, if found; otherwise, adds an entry with the specified key and value into the NameObjectCollectionBase instance.
+               /// </summary>
+               /// <param name="name">The String key of the entry to set. The key can be a null reference </param>
+               /// <param name="value">The Object that represents the new value of the entry to set. The value can be a null reference</param>
+               protected void BaseSet(string name, object value)
+               {
+#if NET_2_0
+                       if (this.IsReadOnly)
+                               throw new NotSupportedException("Collection is read-only");
+#endif
+                       _Item item = FindFirstMatchedItem(name);
+                       if (item != null)
+                               item.value = value;
+                       else
+                               BaseAdd(name, value);
+               }
+
+               private _Item FindFirstMatchedItem(string name)
+               {
+                       if (name != null)
+                               return (_Item)m_ItemsContainer[name];
+                       else
+                       {
+                               //TODO: consider null key case
+                               return m_NullKeyItem;
+                       }
+               }
+
+               internal bool Equals(string s1, string s2)
+               {
+#if NET_2_0
+                       if (m_comparer != null)
+                               return (m_comparer.Compare (s1, s2) == 0);
+                       else
+                               return equality_comparer.Equals (s1, s2);
+#else
+                       return (m_comparer.Compare(s1, s2) == 0);
+#endif
+               }
+       }
+}
+#endif
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NativeType.cs b/mcs/tools/cil-strip/Mono.Cecil/NativeType.cs
new file mode 100644 (file)
index 0000000..84b0c37
--- /dev/null
@@ -0,0 +1,73 @@
+//
+// NativeType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum NativeType {
+               NONE = 0x66,
+
+               BOOLEAN = 0x02,
+               I1 = 0x03,
+               U1 = 0x04,
+               I2 = 0x05,
+               U2 = 0x06,
+               I4 = 0x07,
+               U4 = 0x08,
+               I8 = 0x09,
+               U8 = 0x0a,
+               R4 = 0x0b,
+               R8 = 0x0c,
+               LPSTR = 0x14,
+               INT = 0x1f,
+               UINT = 0x20,
+               FUNC = 0x26,
+               ARRAY = 0x2a,
+
+               // Msft specific
+               CURRENCY = 0x0f,
+               BSTR = 0x13,
+               LPWSTR = 0x15,
+               LPTSTR = 0x16,
+               FIXEDSYSSTRING = 0x17,
+               IUNKNOWN = 0x19,
+               IDISPATCH = 0x1a,
+               STRUCT = 0x1b,
+               INTF = 0x1c,
+               SAFEARRAY = 0x1d,
+               FIXEDARRAY = 0x1e,
+               BYVALSTR = 0x22,
+               ANSIBSTR = 0x23,
+               TBSTR = 0x24,
+               VARIANTBOOL = 0x25,
+               ASANY = 0x28,
+               LPSTRUCT = 0x2b,
+               CUSTOMMARSHALER = 0x2c,
+               ERROR = 0x2d,
+               MAX = 0x50
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs
new file mode 100644 (file)
index 0000000..9e6fc9f
--- /dev/null
@@ -0,0 +1,128 @@
+//
+// NestedTypeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class NestedTypeCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public TypeDefinition this [int index] {
+                       get { return List [index] as TypeDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public NestedTypeCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (TypeDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (TypeDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (TypeDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, TypeDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (TypeDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       TypeDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is TypeDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (TypeDefinition).FullName);
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitNestedTypeCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NullReferenceImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/NullReferenceImporter.cs
new file mode 100644 (file)
index 0000000..7ebb7c4
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// NullReferenceImporter.cs
+//
+// Author:
+//   Jb Evain (jbevain@novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       sealed class NullReferenceImporter : IImporter {
+
+               public static readonly NullReferenceImporter Instance = new NullReferenceImporter ();
+
+               public TypeReference ImportTypeReference (TypeReference type, ImportContext context)
+               {
+                       return type;
+               }
+
+               public FieldReference ImportFieldReference (FieldReference field, ImportContext context)
+               {
+                       return field;
+               }
+
+               public MethodReference ImportMethodReference (MethodReference method, ImportContext context)
+               {
+                       return method;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs
new file mode 100644 (file)
index 0000000..e99e8a6
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// OverrideCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class OverrideCollection : CollectionBase, IReflectionVisitable {
+
+               MethodDefinition m_container;
+
+               public MethodReference this [int index] {
+                       get { return List [index] as MethodReference; }
+                       set { List [index] = value; }
+               }
+
+               public MethodDefinition Container {
+                       get { return m_container; }
+               }
+
+               public OverrideCollection (MethodDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (MethodReference value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (MethodReference value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (MethodReference value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, MethodReference value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (MethodReference value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is MethodReference))
+                               throw new ArgumentException ("Must be of type " + typeof (MethodReference).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitOverrideCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs
new file mode 100644 (file)
index 0000000..b586f0b
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// PInvokeAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum PInvokeAttributes : ushort {
+               NoMangle                        = 0x0001,       // PInvoke is to use the member name as specified
+
+               // Character set
+               CharSetMask                     = 0x0006,
+               CharSetNotSpec          = 0x0000,
+               CharSetAnsi                     = 0x0002,
+               CharSetUnicode          = 0x0004,
+               CharSetAuto                     = 0x0006,
+               SupportsLastError       = 0x0040,       // Information about target function. Not relevant for fields
+
+               // Calling convetion
+               CallConvMask            = 0x0700,
+               CallConvWinapi          = 0x0100,
+               CallConvCdecl           = 0x0200,
+               CallConvStdCall         = 0x0300,
+               CallConvThiscall        = 0x0400,
+               CallConvFastcall        = 0x0500
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs b/mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs
new file mode 100644 (file)
index 0000000..e4d2406
--- /dev/null
@@ -0,0 +1,200 @@
+//
+// PInvokeInfo.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class PInvokeInfo : IReflectionVisitable {
+
+               MethodDefinition m_meth;
+
+               PInvokeAttributes m_attributes;
+               string m_entryPoint;
+               ModuleReference m_module;
+
+               public MethodDefinition Method {
+                       get { return m_meth; }
+               }
+
+               public PInvokeAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public string EntryPoint {
+                       get { return m_entryPoint; }
+                       set { m_entryPoint = value; }
+               }
+
+               public ModuleReference Module {
+                       get { return m_module; }
+                       set { m_module = value; }
+               }
+
+               #region PInvokeAttributes
+
+               public bool IsNoMangle {
+                       get { return (m_attributes & PInvokeAttributes.NoMangle) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= PInvokeAttributes.NoMangle;
+                               else
+                                       m_attributes &= ~PInvokeAttributes.NoMangle;
+                       }
+               }
+
+               public bool IsCharSetNotSpec {
+                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetNotSpec; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
+                                       m_attributes |= PInvokeAttributes.CharSetNotSpec;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetNotSpec);
+                       }
+               }
+
+               public bool IsCharSetAnsi {
+                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAnsi; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
+                                       m_attributes |= PInvokeAttributes.CharSetAnsi;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAnsi);
+                       }
+               }
+
+               public bool IsCharSetUnicode {
+                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetUnicode; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
+                                       m_attributes |= PInvokeAttributes.CharSetUnicode;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetUnicode);
+                       }
+               }
+
+               public bool IsCharSetAuto {
+                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAuto; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
+                                       m_attributes |= PInvokeAttributes.CharSetAuto;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAuto);
+                       }
+               }
+
+               public bool SupportsLastError {
+                       get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.SupportsLastError; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CharSetMask;
+                                       m_attributes |= PInvokeAttributes.SupportsLastError;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.SupportsLastError);
+                       }
+               }
+
+               public bool IsCallConvWinapi {
+                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvWinapi; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
+                                       m_attributes |= PInvokeAttributes.CallConvWinapi;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvWinapi);
+                       }
+               }
+
+               public bool IsCallConvCdecl {
+                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvCdecl; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
+                                       m_attributes |= PInvokeAttributes.CallConvCdecl;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvCdecl);
+                       }
+               }
+
+               public bool IsCallConvStdCall {
+                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvStdCall; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
+                                       m_attributes |= PInvokeAttributes.CallConvStdCall;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvStdCall);
+                       }
+               }
+
+               public bool IsCallConvThiscall {
+                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvThiscall; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
+                                       m_attributes |= PInvokeAttributes.CallConvThiscall;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvThiscall);
+                       }
+               }
+
+               public bool IsCallConvFastcall {
+                       get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvFastcall; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~PInvokeAttributes.CallConvMask;
+                                       m_attributes |= PInvokeAttributes.CallConvFastcall;
+                               } else
+                                       m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvFastcall);
+                       }
+               }
+
+               #endregion
+
+               public PInvokeInfo (MethodDefinition meth)
+               {
+                       m_meth = meth;
+               }
+
+               public PInvokeInfo (MethodDefinition meth, PInvokeAttributes attrs,
+                       string entryPoint, ModuleReference mod) : this (meth)
+               {
+                       m_attributes = attrs;
+                       m_entryPoint = entryPoint;
+                       m_module = mod;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitPInvokeInfo (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs
new file mode 100644 (file)
index 0000000..1e0f932
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// ParameterAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum ParameterAttributes : ushort {
+               None                            = 0x0000,
+               In                                      = 0x0001,       // Param is [In]
+               Out                                     = 0x0002,       // Param is [Out]
+               Lcid                            = 0x0004,
+               Retval                          = 0x0008,
+               Optional                        = 0x0010,       // Param is optional
+               HasDefault                      = 0x1000,       // Param has default value
+               HasFieldMarshal         = 0x2000,       // Param has field marshal
+               Unused                          = 0xcfe0         // Reserved: shall be zero in a conforming implementation
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs
new file mode 100644 (file)
index 0000000..2310b15
--- /dev/null
@@ -0,0 +1,204 @@
+//
+// ParameterDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class ParameterDefinition : ParameterReference, IHasMarshalSpec,
+               IMetadataTokenProvider, ICustomAttributeProvider, IHasConstant {
+
+               ParameterAttributes m_attributes;
+
+               bool m_hasConstant;
+               object m_const;
+
+               MethodReference m_method;
+               CustomAttributeCollection m_customAttrs;
+
+               MarshalSpec m_marshalDesc;
+
+               public ParameterAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public bool HasConstant {
+                       get { return m_hasConstant; }
+               }
+
+               public object Constant {
+                       get { return m_const; }
+                       set {
+                               m_hasConstant = true;
+                               m_const = value;
+                       }
+               }
+
+               public MethodReference Method {
+                       get { return m_method; }
+                       set { m_method = value; }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public MarshalSpec MarshalSpec {
+                       get { return m_marshalDesc; }
+                       set {
+                               m_marshalDesc = value;
+                               if (value != null)
+                                       m_attributes |= ParameterAttributes.HasFieldMarshal;
+                               else
+                                       m_attributes &= ~ParameterAttributes.HasFieldMarshal;
+                       }
+               }
+
+               #region ParameterAttributes
+
+               public bool IsIn {
+                       get { return (m_attributes & ParameterAttributes.In) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.In;
+                               else
+                                       m_attributes &= ~ParameterAttributes.In;
+                       }
+               }
+
+               public bool IsOut {
+                       get { return (m_attributes & ParameterAttributes.Out) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.Out;
+                               else
+                                       m_attributes &= ~ParameterAttributes.Out;
+                       }
+               }
+
+               public bool IsRetval {
+                       get { return (m_attributes & ParameterAttributes.Retval) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.Retval;
+                               else
+                                       m_attributes &= ~ParameterAttributes.Retval;
+                       }
+               }
+
+               public bool IsLcid {
+                       get { return (m_attributes & ParameterAttributes.Lcid) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.Lcid;
+                               else
+                                       m_attributes &= ~ParameterAttributes.Lcid;
+                       }
+               }
+
+               public bool IsOptional {
+                       get { return (m_attributes & ParameterAttributes.Optional) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.Optional;
+                               else
+                                       m_attributes &= ~ParameterAttributes.Optional;
+                       }
+               }
+
+               public bool HasDefault {
+                       get { return (m_attributes & ParameterAttributes.HasDefault) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= ParameterAttributes.HasDefault;
+                               else
+                                       m_attributes &= ~ParameterAttributes.HasDefault;
+                       }
+               }
+
+               #endregion
+
+               public ParameterDefinition (TypeReference paramType) :
+                       this (string.Empty, -1, (ParameterAttributes) 0, paramType)
+               {
+               }
+
+               public override ParameterDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public ParameterDefinition (string name, int seq, ParameterAttributes attrs, TypeReference paramType) : base (name, seq, paramType)
+               {
+                       m_attributes = attrs;
+               }
+
+               public ParameterDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, m_method));
+               }
+
+               internal static ParameterDefinition Clone (ParameterDefinition param, ImportContext context)
+               {
+                       ParameterDefinition np = new ParameterDefinition (
+                               param.Name,
+                               param.Sequence,
+                               param.Attributes,
+                               context.Import (param.ParameterType));
+
+                       if (param.HasConstant)
+                               np.Constant = param.Constant;
+
+                       if (param.MarshalSpec != null)
+                               np.MarshalSpec = param.MarshalSpec.CloneInto (np);
+
+                       foreach (CustomAttribute ca in param.CustomAttributes)
+                               np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+                       return np;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitParameterDefinition (this);
+
+                       if (this.MarshalSpec != null)
+                               this.MarshalSpec.Accept (visitor);
+
+                       this.CustomAttributes.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..37a8041
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ParameterDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ParameterDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+               IMemberReference m_container;
+
+               public ParameterDefinition this [int index] {
+                       get { return List [index] as ParameterDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public IMemberReference Container {
+                       get { return m_container; }
+               }
+
+               public ParameterDefinitionCollection (IMemberReference container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (ParameterDefinition value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (ParameterDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (ParameterDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, ParameterDefinition value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (ParameterDefinition value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is ParameterDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (ParameterDefinition).FullName);
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitParameterDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs
new file mode 100644 (file)
index 0000000..04aff64
--- /dev/null
@@ -0,0 +1,90 @@
+//
+// ParameterReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       using Mono.Cecil.Metadata;
+
+       internal abstract class ParameterReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+
+               string m_name;
+               int m_sequence;
+               TypeReference m_paramType;
+               MetadataToken m_token;
+               IDictionary m_annotations;
+
+               public string Name {
+                       get { return m_name; }
+                       set { m_name = value; }
+               }
+
+               public int Sequence {
+                       get { return m_sequence; }
+                       set { m_sequence = value; }
+               }
+
+               public TypeReference ParameterType {
+                       get { return m_paramType; }
+                       set { m_paramType = value; }
+               }
+
+               public MetadataToken MetadataToken {
+                       get { return m_token; }
+                       set { m_token = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public ParameterReference (string name, int sequence, TypeReference parameterType)
+               {
+                       m_name = name;
+                       m_sequence = sequence;
+                       m_paramType = parameterType;
+               }
+
+               public abstract ParameterDefinition Resolve ();
+
+               public override string ToString ()
+               {
+                       if (m_name != null && m_name.Length > 0)
+                               return m_name;
+
+                       return string.Concat ("A_", m_sequence);
+               }
+
+               public abstract void Accept (IReflectionVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs b/mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs
new file mode 100644 (file)
index 0000000..95d05c1
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// PinnedType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class PinnedType : TypeSpecification {
+
+               public PinnedType (TypeReference pType) : base (pType)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PointerType.cs b/mcs/tools/cil-strip/Mono.Cecil/PointerType.cs
new file mode 100644 (file)
index 0000000..7707b30
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// PointerType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class PointerType : TypeSpecification {
+
+               public override string Name {
+                       get { return string.Concat (base.Name, "*"); }
+               }
+
+               public override string FullName {
+                       get { return string.Concat (base.FullName, "*"); }
+               }
+
+               public PointerType (TypeReference pType) : base (pType)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs
new file mode 100644 (file)
index 0000000..8ebd872
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// PropertyAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum PropertyAttributes : ushort {
+               SpecialName             = 0x0200,       // Property is special
+               RTSpecialName   = 0x0400,       // Runtime(metadata internal APIs) should check name encoding
+               HasDefault              = 0x1000,       // Property has default
+               Unused                  = 0xe9ff         // Reserved: shall be zero in a conforming implementation
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs
new file mode 100644 (file)
index 0000000..4357274
--- /dev/null
@@ -0,0 +1,252 @@
+//
+// PropertyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Text;
+
+       internal sealed class PropertyDefinition : PropertyReference,
+               IMemberDefinition, ICustomAttributeProvider, IHasConstant {
+
+               PropertyAttributes m_attributes;
+
+               CustomAttributeCollection m_customAttrs;
+
+               MethodDefinition m_getMeth;
+               MethodDefinition m_setMeth;
+
+               bool m_hasConstant;
+               object m_const;
+
+               public PropertyAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public override bool HasParameters {
+                       get {
+                               if (m_getMeth != null)
+                                       return m_getMeth.HasParameters;
+                               else if (m_setMeth != null)
+                                       return m_setMeth.HasParameters;
+                               else if (m_parameters == null)
+                                       return false;
+                               else
+                                       return m_parameters.Count > 0;
+                       }
+               }
+
+               public override ParameterDefinitionCollection Parameters {
+                       get {
+                               if (this.GetMethod != null)
+                                       return CloneParameterCollection (this.GetMethod.Parameters);
+                               else if (this.SetMethod != null) {
+                                       ParameterDefinitionCollection parameters =
+                                               CloneParameterCollection (this.SetMethod.Parameters);
+                                       if (parameters.Count > 0)
+                                               parameters.RemoveAt (parameters.Count - 1);
+                                       return parameters;
+                               }
+
+                               if (m_parameters == null)
+                                       m_parameters = new ParameterDefinitionCollection (this);
+
+                               return m_parameters;
+                       }
+               }
+
+               public MethodDefinition GetMethod {
+                       get { return m_getMeth; }
+                       set { m_getMeth = value; }
+               }
+
+               public MethodDefinition SetMethod {
+                       get { return m_setMeth; }
+                       set { m_setMeth = value; }
+               }
+
+               ParameterDefinitionCollection CloneParameterCollection (ParameterDefinitionCollection original)
+               {
+                       ParameterDefinitionCollection clone = new ParameterDefinitionCollection (
+                               original.Container);
+                       foreach (ParameterDefinition param in original)
+                               clone.Add (param);
+                       return clone;
+               }
+
+               public bool HasConstant {
+                       get { return m_hasConstant; }
+               }
+
+               public object Constant {
+                       get { return m_const; }
+                       set {
+                               m_hasConstant = true;
+                               m_const = value;
+                       }
+               }
+
+               #region PropertyAttributes
+
+               public bool IsSpecialName {
+                       get { return (m_attributes & PropertyAttributes.SpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= PropertyAttributes.SpecialName;
+                               else
+                                       m_attributes &= ~PropertyAttributes.SpecialName;
+                       }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return (m_attributes & PropertyAttributes.RTSpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= PropertyAttributes.RTSpecialName;
+                               else
+                                       m_attributes &= ~PropertyAttributes.RTSpecialName;
+                       }
+               }
+
+               public bool HasDefault {
+                       get { return (m_attributes & PropertyAttributes.HasDefault) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= PropertyAttributes.HasDefault;
+                               else
+                                       m_attributes &= ~PropertyAttributes.HasDefault;
+                       }
+               }
+
+               #endregion
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
+               }
+
+               public PropertyDefinition (string name, TypeReference propertyType, PropertyAttributes attrs) : base (name, propertyType)
+               {
+                       m_attributes = attrs;
+               }
+
+               public override PropertyDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public static MethodDefinition CreateGetMethod (PropertyDefinition prop)
+               {
+                       MethodDefinition get = new MethodDefinition (
+                               string.Concat ("get_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
+                       prop.GetMethod = get;
+                       return get;
+               }
+
+               public static MethodDefinition CreateSetMethod (PropertyDefinition prop)
+               {
+                       MethodDefinition set = new MethodDefinition (
+                               string.Concat ("set_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
+                       prop.SetMethod = set;
+                       return set;
+               }
+
+               public PropertyDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+               }
+
+               internal static PropertyDefinition Clone (PropertyDefinition prop, ImportContext context)
+               {
+                       PropertyDefinition np = new PropertyDefinition (
+                               prop.Name,
+                               context.Import (prop.PropertyType),
+                               prop.Attributes);
+
+                       if (prop.HasConstant)
+                               np.Constant = prop.Constant;
+
+                       if (context.GenericContext.Type is TypeDefinition) {
+                               TypeDefinition type = context.GenericContext.Type as TypeDefinition;
+                               if (prop.SetMethod != null)
+                                       np.SetMethod = type.Methods.GetMethod (prop.SetMethod.Name, prop.SetMethod.Parameters);
+                               if (prop.GetMethod != null)
+                                       np.GetMethod = type.Methods.GetMethod (prop.GetMethod.Name, prop.GetMethod.Parameters);
+                       }
+
+                       foreach (CustomAttribute ca in prop.CustomAttributes)
+                               np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+                       return np;
+               }
+
+               public override string ToString ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (PropertyType.ToString ());
+                       sb.Append (' ');
+
+                       if (this.DeclaringType != null) {
+                               sb.Append (this.DeclaringType.ToString ());
+                               sb.Append ("::");
+                       }
+
+                       sb.Append (this.Name);
+                       sb.Append ('(');
+                       ParameterDefinitionCollection parameters = this.Parameters;
+                       for (int i = 0; i < parameters.Count; i++) {
+                               if (i > 0)
+                                       sb.Append (',');
+                               sb.Append (parameters [i].ParameterType.ToString ());
+                       }
+                       sb.Append (')');
+                       return sb.ToString ();
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitPropertyDefinition (this);
+
+                       this.CustomAttributes.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..b437647
--- /dev/null
@@ -0,0 +1,138 @@
+//
+// PropertyDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class PropertyDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+               TypeDefinition m_container;
+
+               public PropertyDefinition this [int index] {
+                       get { return List [index] as PropertyDefinition; }
+                       set { List [index] = value; }
+               }
+
+               public TypeDefinition Container {
+                       get { return m_container; }
+               }
+
+               public PropertyDefinitionCollection (TypeDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (PropertyDefinition value)
+               {
+                       Attach (value);
+
+                       List.Add (value);
+               }
+
+
+               public new void Clear ()
+               {
+                       foreach (PropertyDefinition item in this)
+                               Detach (item);
+
+                       base.Clear ();
+               }
+
+               public bool Contains (PropertyDefinition value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (PropertyDefinition value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, PropertyDefinition value)
+               {
+                       Attach (value);
+
+                       List.Insert (index, value);
+               }
+
+               public void Remove (PropertyDefinition value)
+               {
+                       List.Remove (value);
+
+                       Detach (value);
+               }
+
+
+               public new void RemoveAt (int index)
+               {
+                       PropertyDefinition item = this [index];
+                       Remove (item);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is PropertyDefinition))
+                               throw new ArgumentException ("Must be of type " + typeof (PropertyDefinition).FullName);
+               }
+
+               public PropertyDefinition [] GetProperties (string name)
+               {
+                       ArrayList ret = new ArrayList ();
+                       foreach (PropertyDefinition prop in this)
+                               if (prop.Name == name)
+                                       ret.Add (prop);
+
+                       return ret.ToArray (typeof (PropertyDefinition)) as PropertyDefinition [];
+               }
+
+               void Attach (MemberReference member)
+               {
+                       if (member.DeclaringType != null)
+                               throw new ReflectionException ("Member already attached, clone it instead");
+
+                       member.DeclaringType = m_container;
+               }
+
+               void Detach (MemberReference member)
+               {
+                       member.DeclaringType = null;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitPropertyDefinitionCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs
new file mode 100644 (file)
index 0000000..6daaee5
--- /dev/null
@@ -0,0 +1,56 @@
+//
+// PropertyReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal abstract class PropertyReference : MemberReference {
+
+               TypeReference m_propertyType;
+               protected ParameterDefinitionCollection m_parameters;
+
+               public TypeReference PropertyType {
+                       get { return m_propertyType; }
+                       set { m_propertyType = value; }
+               }
+
+               public abstract bool HasParameters {
+                       get;
+               }
+
+               public abstract ParameterDefinitionCollection Parameters {
+                       get;
+               }
+
+               public PropertyReference (string name, TypeReference propertyType) : base (name)
+               {
+                       m_propertyType = propertyType;
+               }
+
+               public abstract PropertyDefinition Resolve ();
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs b/mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs
new file mode 100644 (file)
index 0000000..1c7a97e
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// ReferenceType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class ReferenceType : TypeSpecification {
+
+               public override string Name {
+                       get { return string.Concat (base.Name, "&"); }
+               }
+
+               public override string FullName {
+                       get { return string.Concat (base.FullName, "&"); }
+               }
+
+               public ReferenceType (TypeReference type) : base (type)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionController.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionController.cs
new file mode 100644 (file)
index 0000000..22fdab1
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// ReflectionController.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class ReflectionController {
+
+               ReflectionReader m_reader;
+               ReflectionWriter m_writer;
+               ReflectionHelper m_helper;
+               DefaultImporter m_importer;
+
+               public ReflectionReader Reader {
+                       get { return m_reader; }
+               }
+
+               public ReflectionWriter Writer {
+                       get { return m_writer; }
+               }
+
+               public ReflectionHelper Helper {
+                       get { return m_helper; }
+               }
+
+               public IImporter Importer {
+                       get { return m_importer; }
+               }
+
+               public ReflectionController (ModuleDefinition module)
+               {
+                       m_reader = new AggressiveReflectionReader (module);
+                       m_writer = new ReflectionWriter (module);
+                       m_helper = new ReflectionHelper (module);
+                       m_importer = new DefaultImporter (module);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs
new file mode 100644 (file)
index 0000000..b0c7215
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// ReflectionException.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       using Mono.Cecil.Metadata;
+
+       internal sealed class ReflectionException : MetadataFormatException {
+
+               internal ReflectionException () : base ()
+               {
+               }
+
+               internal ReflectionException (string message) : base (message)
+               {
+               }
+
+               internal ReflectionException (string message, params string [] parameters) :
+                       base (string.Format (message, parameters))
+               {
+               }
+
+               internal ReflectionException (string message, Exception inner) :
+                       base (message, inner)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionHelper.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionHelper.cs
new file mode 100644 (file)
index 0000000..d5e4c1d
--- /dev/null
@@ -0,0 +1,431 @@
+//
+// ReflectionHelper.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+// (C) 2006 Evaluant RC S.A.
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using SR = System.Reflection;
+       using System.Text;
+
+       internal sealed class ReflectionHelper {
+
+               ModuleDefinition m_module;
+
+               public ReflectionHelper (ModuleDefinition module)
+               {
+                       m_module = module;
+               }
+
+               public AssemblyNameReference ImportAssembly (SR.Assembly asm)
+               {
+                       AssemblyNameReference asmRef = GetAssemblyNameReference (asm.GetName ());
+                       if (asmRef != null)
+                               return asmRef;
+
+                       SR.AssemblyName asmName = asm.GetName ();
+                       asmRef = new AssemblyNameReference (
+                               asmName.Name, asmName.CultureInfo.Name, asmName.Version);
+                       asmRef.PublicKeyToken = asmName.GetPublicKeyToken ();
+                       asmRef.HashAlgorithm = (AssemblyHashAlgorithm) asmName.HashAlgorithm;
+                       asmRef.Culture = asmName.CultureInfo.ToString ();
+                       m_module.AssemblyReferences.Add (asmRef);
+                       return asmRef;
+               }
+
+               AssemblyNameReference GetAssemblyNameReference (SR.AssemblyName name)
+               {
+                       foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
+                               if (reference.FullName == name.FullName)
+                                       return reference;
+
+                       return null;
+               }
+
+               public static string GetTypeSignature (Type t)
+               {
+                       if (t.HasElementType) {
+                               if (t.IsPointer)
+                                       return string.Concat (GetTypeSignature (t.GetElementType ()), "*");
+                               else if (t.IsArray) {
+                                       int rank = t.GetArrayRank ();
+                                       if (rank == 1)
+                                               return string.Concat (GetTypeSignature (t.GetElementType ()), "[]");
+
+                                       StringBuilder sb = new StringBuilder ();
+                                       sb.Append ('[');
+                                       for (int i = 1; i < rank; i++)
+                                               sb.Append (',');
+                                       sb.Append (']');
+
+                                       return string.Concat (GetTypeSignature (t.GetElementType ()), sb.ToString ());
+                               } else if (t.IsByRef)
+                                       return string.Concat(GetTypeSignature(t.GetElementType()), "&");
+                       }
+
+                       if (IsGenericTypeSpec (t)) {
+                               StringBuilder sb = new StringBuilder ();
+                               sb.Append (GetTypeSignature (GetGenericTypeDefinition (t)));
+                               sb.Append ("<");
+                               Type [] genArgs = GetGenericArguments (t);
+                               for (int i = 0; i < genArgs.Length; i++) {
+                                       if (i > 0)
+                                               sb.Append (",");
+                                       sb.Append (GetTypeSignature (genArgs [i]));
+                               }
+                               sb.Append (">");
+                               return sb.ToString ();
+                       }
+
+                       if (IsGenericParameter (t))
+                               return t.Name;
+
+                       if (t.DeclaringType != null)
+                               return string.Concat (t.DeclaringType.FullName, "/", t.Name);
+
+                       if (t.Namespace == null || t.Namespace.Length == 0)
+                               return t.Name;
+
+                       return string.Concat (t.Namespace, ".", t.Name);
+               }
+
+               static bool GetProperty (object o, string prop)
+               {
+                       SR.PropertyInfo pi = o.GetType ().GetProperty (prop);
+                       if (pi == null)
+                               return false;
+
+                       return (bool) pi.GetValue (o, null);
+               }
+
+               public static bool IsGenericType (Type t)
+               {
+                       return GetProperty (t, "IsGenericType");
+               }
+
+               static bool IsGenericParameter (Type t)
+               {
+                       return GetProperty (t, "IsGenericParameter");
+               }
+
+               static bool IsGenericTypeDefinition (Type t)
+               {
+                       return GetProperty (t, "IsGenericTypeDefinition");
+               }
+
+               static bool IsGenericTypeSpec (Type t)
+               {
+                       return IsGenericType (t) && !IsGenericTypeDefinition (t);
+               }
+
+               static Type GetGenericTypeDefinition (Type t)
+               {
+                       return (Type) t.GetType ().GetMethod ("GetGenericTypeDefinition").Invoke (t, null);
+               }
+
+               static Type [] GetGenericArguments (Type t)
+               {
+                       return (Type []) t.GetType ().GetMethod ("GetGenericArguments").Invoke (t, null);
+               }
+
+               GenericInstanceType GetGenericType (Type t, TypeReference element, ImportContext context)
+               {
+                       GenericInstanceType git = new GenericInstanceType (element);
+                       foreach (Type genArg in GetGenericArguments (t))
+                               git.GenericArguments.Add (ImportSystemType (genArg, context));
+
+                       return git;
+               }
+
+               static bool GenericParameterOfMethod (Type t)
+               {
+                       return t.GetType ().GetProperty ("DeclaringMethod").GetValue (t, null) != null;
+               }
+
+               static GenericParameter GetGenericParameter (Type t, ImportContext context)
+               {
+                       int pos = (int) t.GetType ().GetProperty ("GenericParameterPosition").GetValue (t, null);
+                       IGenericParameterProvider provider;
+                       if (GenericParameterOfMethod (t))
+                               provider = context.GenericContext.Method;
+                       else
+                               provider = context.GenericContext.Type;
+
+                       if (provider == null)
+                               throw new InvalidOperationException ("Invalid context");
+
+                       return provider.GenericParameters [pos];
+               }
+
+               TypeReference GetTypeSpec (Type t, ImportContext context)
+               {
+                       Stack s = new Stack ();
+                       while (t.HasElementType || IsGenericTypeSpec (t)) {
+                               s.Push (t);
+                               if (t.HasElementType)
+                                       t = t.GetElementType ();
+                               else if (IsGenericTypeSpec (t)) {
+                                       t = (Type) t.GetType ().GetMethod ("GetGenericTypeDefinition").Invoke (t, null);
+                                       break;
+                               }
+                       }
+
+                       TypeReference elementType = ImportSystemType (t, context);
+                       while (s.Count > 0) {
+                               t = (Type) s.Pop ();
+                               if (t.IsPointer)
+                                       elementType = new PointerType (elementType);
+                               else if (t.IsArray)
+                                       elementType = new ArrayType (elementType, t.GetArrayRank ());
+                               else if (t.IsByRef)
+                                       elementType = new ReferenceType (elementType);
+                               else if (IsGenericTypeSpec (t))
+                                       elementType = GetGenericType (t, elementType, context);
+                               else
+                                       throw new ReflectionException ("Unknown element type");
+                       }
+
+                       return elementType;
+               }
+
+               TypeReference AdjustReference (Type type, TypeReference reference)
+               {
+                       if (type.IsValueType && !reference.IsValueType)
+                               reference.IsValueType = true;
+
+                       if (IsGenericTypeDefinition (type)) {
+                               Type [] parameters = GetGenericArguments (type);
+                               for (int i = reference.GenericParameters.Count; i < parameters.Length; i++)
+                                       reference.GenericParameters.Add (new GenericParameter (i, reference));
+                       }
+
+                       return reference;
+               }
+
+               public TypeReference ImportSystemType (Type t, ImportContext context)
+               {
+                       if (t.HasElementType || IsGenericTypeSpec (t))
+                               return GetTypeSpec (t, context);
+
+                       if (IsGenericParameter (t))
+                               return GetGenericParameter (t, context);
+
+                       TypeReference type = m_module.TypeReferences [GetTypeSignature (t)];
+                       if (type != null)
+                               return AdjustReference (t, type);
+
+                       AssemblyNameReference asm = ImportAssembly (t.Assembly);
+                       if (t.DeclaringType != null) {
+                               type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
+                               type.DeclaringType = ImportSystemType (t.DeclaringType, context);
+                       } else
+                               type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
+
+                       if (IsGenericTypeDefinition (t))
+                               foreach (Type genParam in GetGenericArguments (t))
+                                       type.GenericParameters.Add (new GenericParameter (genParam.Name, type));
+
+                       context.GenericContext.Type = type;
+
+                       m_module.TypeReferences.Add (type);
+                       return type;
+               }
+
+               static string GetMethodBaseSignature (SR.MethodBase meth, Type declaringType, Type retType)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (GetTypeSignature (retType));
+                       sb.Append (' ');
+                       sb.Append (GetTypeSignature (declaringType));
+                       sb.Append ("::");
+                       sb.Append (meth.Name);
+                       if (IsGenericMethodSpec (meth)) {
+                               sb.Append ("<");
+                               Type [] genArgs = GetGenericArguments (meth as SR.MethodInfo);
+                               for (int i = 0; i < genArgs.Length; i++) {
+                                       if (i > 0)
+                                               sb.Append (",");
+                                       sb.Append (GetTypeSignature (genArgs [i]));
+                               }
+                               sb.Append (">");
+                       }
+                       sb.Append ("(");
+                       SR.ParameterInfo [] parameters = meth.GetParameters ();
+                       for (int i = 0; i < parameters.Length; i++) {
+                               if (i > 0)
+                                       sb.Append (",");
+                               sb.Append (GetTypeSignature (parameters [i].ParameterType));
+                       }
+                       sb.Append (")");
+                       return sb.ToString ();
+               }
+
+               static bool IsGenericMethod (SR.MethodBase mb)
+               {
+                       return GetProperty (mb, "IsGenericMethod");
+               }
+
+               static bool IsGenericMethodDefinition (SR.MethodBase mb)
+               {
+                       return GetProperty (mb, "IsGenericMethodDefinition");
+               }
+
+               static bool IsGenericMethodSpec (SR.MethodBase mb)
+               {
+                       return IsGenericMethod (mb) && !IsGenericMethodDefinition (mb);
+               }
+
+               static Type [] GetGenericArguments (SR.MethodInfo mi)
+               {
+                       return (Type []) mi.GetType ().GetMethod ("GetGenericArguments").Invoke (mi, null);
+               }
+
+               static int GetMetadataToken (SR.MethodInfo mi)
+               {
+                       return (int) mi.GetType ().GetProperty ("MetadataToken").GetValue (mi, null);
+               }
+
+               MethodReference ImportGenericInstanceMethod (SR.MethodInfo mi, ImportContext context)
+               {
+                       SR.MethodInfo gmd = (SR.MethodInfo) mi.GetType ().GetMethod ("GetGenericMethodDefinition").Invoke (mi, null);
+                       GenericInstanceMethod gim = new GenericInstanceMethod (
+                               ImportMethodBase (gmd, gmd.ReturnType, context));
+
+                       foreach (Type genArg in GetGenericArguments (mi))
+                               gim.GenericArguments.Add (ImportSystemType (genArg, context));
+
+                       return gim;
+               }
+
+               MethodReference ImportMethodBase (SR.MethodBase mb, Type retType, ImportContext context)
+               {
+                       if (IsGenericMethod (mb) && !IsGenericMethodDefinition (mb))
+                               return ImportGenericInstanceMethod ((SR.MethodInfo) mb, context);
+
+                       Type originalDecType = mb.DeclaringType;
+                       Type declaringTypeDef = originalDecType;
+                       while (IsGenericTypeSpec (declaringTypeDef))
+                               declaringTypeDef = GetGenericTypeDefinition (declaringTypeDef);
+
+                       if (mb.DeclaringType != declaringTypeDef && mb is SR.MethodInfo) {
+                               int mt = GetMetadataToken (mb as SR.MethodInfo);
+                               // hack to get the generic method definition from the constructed method
+                               foreach (SR.MethodInfo mi in declaringTypeDef.GetMethods ()) {
+                                       if (GetMetadataToken (mi) == mt) {
+                                               mb = mi;
+                                               retType = mi.ReturnType;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       string sig = GetMethodBaseSignature (mb, originalDecType, retType);
+                       MethodReference meth = (MethodReference) GetMemberReference (sig);
+                       if (meth != null)
+                               return meth;
+
+                       meth = new MethodReference (
+                               mb.Name,
+                               (mb.CallingConvention & SR.CallingConventions.HasThis) > 0,
+                               (mb.CallingConvention & SR.CallingConventions.ExplicitThis) > 0,
+                               MethodCallingConvention.Default); // TODO: get the real callconv
+                       meth.DeclaringType = ImportSystemType (originalDecType, context);
+
+                       if (IsGenericMethod (mb))
+                               foreach (Type genParam in GetGenericArguments (mb as SR.MethodInfo))
+                                       meth.GenericParameters.Add (new GenericParameter (genParam.Name, meth));
+
+                       TypeReference contextType = context.GenericContext.Type;
+                       MethodReference contextMethod = context.GenericContext.Method;
+
+                       context.GenericContext.Method = meth;
+                       context.GenericContext.Type = ImportSystemType (declaringTypeDef, context);
+
+                       meth.ReturnType.ReturnType = ImportSystemType (retType, context);
+
+                       SR.ParameterInfo [] parameters = mb.GetParameters ();
+                       for (int i = 0; i < parameters.Length; i++)
+                               meth.Parameters.Add (new ParameterDefinition (
+                                       ImportSystemType (parameters [i].ParameterType, context)));
+
+                       context.GenericContext.Type = contextType;
+                       context.GenericContext.Method = contextMethod;
+
+                       m_module.MemberReferences.Add (meth);
+                       return meth;
+               }
+
+               public MethodReference ImportConstructorInfo (SR.ConstructorInfo ci, ImportContext context)
+               {
+                       return ImportMethodBase (ci, typeof (void), context);
+               }
+
+               public MethodReference ImportMethodInfo (SR.MethodInfo mi, ImportContext context)
+               {
+                       return ImportMethodBase (mi, mi.ReturnType, context);
+               }
+
+               static string GetFieldSignature (SR.FieldInfo field)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       sb.Append (GetTypeSignature (field.FieldType));
+                       sb.Append (' ');
+                       sb.Append (GetTypeSignature (field.DeclaringType));
+                       sb.Append ("::");
+                       sb.Append (field.Name);
+                       return sb.ToString ();
+               }
+
+               public FieldReference ImportFieldInfo (SR.FieldInfo fi, ImportContext context)
+               {
+                       string sig = GetFieldSignature (fi);
+                       FieldReference f = (FieldReference) GetMemberReference (sig);
+                       if (f != null)
+                               return f;
+
+                       f = new FieldReference (
+                               fi.Name,
+                               ImportSystemType (fi.DeclaringType, context),
+                               ImportSystemType (fi.FieldType, context));
+
+                       m_module.MemberReferences.Add (f);
+                       return f;
+               }
+
+               MemberReference GetMemberReference (string signature)
+               {
+                       foreach (MemberReference reference in m_module.MemberReferences)
+                               if (reference.ToString () == signature)
+                                       return reference;
+
+                       return null;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionReader.cs
new file mode 100644 (file)
index 0000000..07dd338
--- /dev/null
@@ -0,0 +1,1304 @@
+//
+// ReflectionReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.IO;
+       using System.Text;
+
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Cil;
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+
+       internal abstract class ReflectionReader : BaseReflectionReader {
+
+               ModuleDefinition m_module;
+               ImageReader m_reader;
+               SecurityDeclarationReader m_secReader;
+               protected MetadataTableReader m_tableReader;
+               protected MetadataRoot m_root;
+               protected TablesHeap m_tHeap;
+               protected bool m_checkDeleted;
+
+               protected TypeDefinition [] m_typeDefs;
+               protected TypeReference [] m_typeRefs;
+               protected TypeReference [] m_typeSpecs;
+               protected MethodDefinition [] m_meths;
+               protected FieldDefinition [] m_fields;
+               protected EventDefinition [] m_events;
+               protected PropertyDefinition [] m_properties;
+               protected MemberReference [] m_memberRefs;
+               protected ParameterDefinition [] m_parameters;
+               protected GenericParameter [] m_genericParameters;
+               protected GenericInstanceMethod [] m_methodSpecs;
+
+               bool m_isCorlib;
+               AssemblyNameReference m_corlib;
+
+               protected SignatureReader m_sigReader;
+               protected CodeReader m_codeReader;
+               protected ISymbolReader m_symbolReader;
+
+               internal AssemblyNameReference Corlib {
+                       get {
+                               if (m_corlib != null)
+                                       return m_corlib;
+
+                               foreach (AssemblyNameReference ar in m_module.AssemblyReferences) {
+                                       if (ar.Name == Constants.Corlib) {
+                                               m_corlib = ar;
+                                               return m_corlib;
+                                       }
+                               }
+
+                               return null;
+                       }
+               }
+
+               public ModuleDefinition Module {
+                       get { return m_module; }
+               }
+
+               public SignatureReader SigReader {
+                       get { return m_sigReader; }
+               }
+
+               public MetadataTableReader TableReader {
+                       get { return m_tableReader; }
+               }
+
+               public CodeReader Code {
+                       get { return m_codeReader; }
+               }
+
+               public ISymbolReader SymbolReader {
+                       get { return m_symbolReader; }
+                       set { m_symbolReader = value; }
+               }
+
+               public MetadataRoot MetadataRoot {
+                       get { return m_root; }
+               }
+
+               public ReflectionReader (ModuleDefinition module)
+               {
+                       m_module = module;
+                       m_reader = m_module.ImageReader;
+                       m_root = m_module.Image.MetadataRoot;
+                       m_tHeap = m_root.Streams.TablesHeap;
+                       m_checkDeleted = (m_tHeap.HeapSizes & 0x80) != 0;
+                       if (m_reader != null)
+                               m_tableReader = m_reader.MetadataReader.TableReader;
+                       m_codeReader = new CodeReader (this);
+                       m_sigReader = new SignatureReader (m_root, this);
+                       m_isCorlib = module.Assembly.Name.Name == Constants.Corlib;
+               }
+
+               public TypeDefinition GetTypeDefAt (uint rid)
+               {
+                       if (rid > m_typeDefs.Length)
+                               return null;
+
+                       return m_typeDefs [rid - 1];
+               }
+
+               public TypeReference GetTypeRefAt (uint rid)
+               {
+                       if (rid > m_typeRefs.Length)
+                               return null;
+
+                       return m_typeRefs [rid - 1];
+               }
+
+               public TypeReference GetTypeSpecAt (uint rid, GenericContext context)
+               {
+                       if (rid > m_typeSpecs.Length)
+                               return null;
+
+                       int index = (int) rid - 1;
+
+                       TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable ();
+                       TypeSpecRow tsRow = tsTable [index];
+                       TypeSpec ts = m_sigReader.GetTypeSpec (tsRow.Signature);
+
+                       // don't cache context dependent generic stuff
+                       if (IsGenericTypeSpec (ts.Type.ElementType))
+                               return CreateTypeSpecFromSig (ts, index, context);
+
+                       TypeReference tspec = m_typeSpecs [index];
+                       if (tspec != null)
+                               return tspec;
+
+                       tspec = CreateTypeSpecFromSig (ts, index, context);
+                       m_typeSpecs [index] = tspec;
+
+                       return tspec;
+               }
+
+               static bool IsGenericTypeSpec (ElementType etype)
+               {
+                       return etype == ElementType.GenericInst
+                               || etype == ElementType.Var
+                               || etype == ElementType.MVar;
+               }
+
+               TypeReference CreateTypeSpecFromSig (TypeSpec ts, int index, GenericContext context)
+               {
+                       TypeReference tspec = GetTypeRefFromSig (ts.Type, context);
+                       tspec = GetModifierType (ts.CustomMods, tspec);
+                       tspec.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeSpec, index);
+                       return tspec;
+               }
+
+               public FieldDefinition GetFieldDefAt (uint rid)
+               {
+                       if (rid > m_fields.Length)
+                               return null;
+
+                       return m_fields [rid - 1];
+               }
+
+               public MethodDefinition GetMethodDefAt (uint rid)
+               {
+                       if (rid > m_meths.Length)
+                               return null;
+
+                       return m_meths [rid - 1];
+               }
+
+               protected bool IsDeleted (IMemberDefinition member)
+               {
+                       if (!m_checkDeleted)
+                               return false;
+
+                       if (!member.IsSpecialName || !member.IsRuntimeSpecialName)
+                               return false;
+
+                       return member.Name.StartsWith (Constants.Deleted);
+               }
+
+               public MemberReference GetMemberRefAt (uint rid, GenericContext context)
+               {
+                       if (rid > m_memberRefs.Length)
+                               return null;
+
+                       int index = (int) rid - 1;
+                       MemberReference member = m_memberRefs [index];
+                       if (member != null)
+                               return member;
+
+                       MemberRefTable mrTable = m_tableReader.GetMemberRefTable ();
+                       MemberRefRow mrefRow = mrTable [index];
+
+                       Signature sig = m_sigReader.GetMemberRefSig (mrefRow.Class.TokenType, mrefRow.Signature);
+                       switch (mrefRow.Class.TokenType) {
+                       case TokenType.TypeDef :
+                       case TokenType.TypeRef :
+                       case TokenType.TypeSpec :
+                               TypeReference declaringType = GetTypeDefOrRef (mrefRow.Class, context);
+                               GenericContext nc = context.Clone ();
+
+                               if (declaringType is GenericInstanceType) {
+                                       TypeReference ct = declaringType;
+                                       while (ct is GenericInstanceType)
+                                               ct = (ct as GenericInstanceType).ElementType;
+
+                                       nc.Type = ct;
+                               }
+
+                               if (sig is FieldSig) {
+                                       FieldSig fs = sig as FieldSig;
+                                       TypeReference fieldType = GetTypeRefFromSig (fs.Type, nc);
+                                       fieldType = GetModifierType (fs.CustomMods, fieldType);
+
+                                       member = new FieldReference (
+                                               m_root.Streams.StringsHeap [mrefRow.Name],
+                                               declaringType,
+                                               fieldType);
+                               } else {
+                                       string name = m_root.Streams.StringsHeap [mrefRow.Name];
+                                       MethodSig ms = (MethodSig) sig;
+
+                                       member = CreateMethodReferenceFromSig (ms, name, declaringType, nc);
+                               }
+                               break;
+                       case TokenType.Method :
+                               // really not sure about this
+                               MethodDefinition methdef = GetMethodDefAt (mrefRow.Class.RID);
+
+                               member = CreateMethodReferenceFromSig ((MethodSig) sig, methdef.Name, methdef.DeclaringType, new GenericContext ());
+                               break;
+                       case TokenType.ModuleRef :
+                               break; // TODO, implement that, or not
+                       }
+
+                       member.MetadataToken = MetadataToken.FromMetadataRow (TokenType.MemberRef, index);
+                       m_module.MemberReferences.Add (member);
+                       m_memberRefs [index] = member;
+
+                       return member;
+               }
+
+               MethodReference CreateMethodReferenceFromSig (MethodSig ms, string name, TypeReference declaringType, GenericContext context)
+               {
+                       MethodReference methref = new MethodReference (
+                               name, ms.HasThis, ms.ExplicitThis, ms.MethCallConv);
+                       methref.DeclaringType = declaringType;
+
+                       if (ms is MethodDefSig) {
+                               int arity = (ms as MethodDefSig).GenericParameterCount;
+                               for (int i = 0; i < arity; i++)
+                                       methref.GenericParameters.Add (new GenericParameter (i, methref));
+                       }
+
+                       if (methref.GenericParameters.Count > 0)
+                               context.Method = methref;
+
+                       methref.ReturnType = GetMethodReturnType (ms, context);
+
+                       methref.ReturnType.Method = methref;
+                       for (int j = 0; j < ms.ParamCount; j++) {
+                               Param p = ms.Parameters [j];
+                               ParameterDefinition pdef = BuildParameterDefinition (j, p, context);
+                               pdef.Method = methref;
+                               methref.Parameters.Add (pdef);
+                       }
+
+                       CreateSentinelIfNeeded (methref, ms);
+
+                       return methref;
+               }
+
+               public static void CreateSentinelIfNeeded (IMethodSignature meth, MethodSig signature)
+               {
+                       MethodDefSig sig = signature as MethodDefSig;
+                       if (sig == null)
+                               return;
+
+                       int sentinel = sig.Sentinel;
+
+                       if (sig.Sentinel < 0 || sig.Sentinel >= meth.Parameters.Count)
+                               return;
+
+                       ParameterDefinition param = meth.Parameters [sentinel];
+                       param.ParameterType = new SentinelType (param.ParameterType);
+               }
+
+               public PropertyDefinition GetPropertyDefAt (uint rid)
+               {
+                       if (rid > m_properties.Length)
+                               return null;
+
+                       return m_properties [rid - 1];
+               }
+
+               public EventDefinition GetEventDefAt (uint rid)
+               {
+                       if (rid > m_events.Length)
+                               return null;
+
+                       return m_events [rid - 1];
+               }
+
+               public ParameterDefinition GetParamDefAt (uint rid)
+               {
+                       if (rid > m_parameters.Length)
+                               return null;
+
+                       return m_parameters [rid - 1];
+               }
+
+               public GenericParameter GetGenericParameterAt (uint rid)
+               {
+                       if (rid > m_genericParameters.Length)
+                               return null;
+
+                       return m_genericParameters [rid - 1];
+               }
+
+               public GenericInstanceMethod GetMethodSpecAt (uint rid, GenericContext context)
+               {
+                       if (rid > m_methodSpecs.Length)
+                               return null;
+
+                       int index = (int) rid - 1;
+                       GenericInstanceMethod gim = m_methodSpecs [index];
+                       if (gim != null)
+                               return gim;
+
+                       MethodSpecTable msTable = m_tableReader.GetMethodSpecTable ();
+                       MethodSpecRow msRow = msTable [index];
+
+                       MethodSpec sig = m_sigReader.GetMethodSpec (msRow.Instantiation);
+
+                       MethodReference meth;
+                       if (msRow.Method.TokenType == TokenType.Method)
+                               meth = GetMethodDefAt (msRow.Method.RID);
+                       else if (msRow.Method.TokenType == TokenType.MemberRef)
+                               meth = (MethodReference) GetMemberRefAt (msRow.Method.RID, context);
+                       else
+                               throw new ReflectionException ("Unknown method type for method spec");
+
+                       gim = new GenericInstanceMethod (meth);
+                       context.CheckProvider (meth, sig.Signature.Arity);
+                       foreach (GenericArg arg in sig.Signature.Types)
+                               gim.GenericArguments.Add (GetGenericArg (arg, context));
+
+                       m_methodSpecs [index] = gim;
+
+                       return gim;
+               }
+
+               public TypeReference GetTypeDefOrRef (MetadataToken token, GenericContext context)
+               {
+                       if (token.RID == 0)
+                               return null;
+
+                       switch (token.TokenType) {
+                       case TokenType.TypeDef :
+                               return GetTypeDefAt (token.RID);
+                       case TokenType.TypeRef :
+                               return GetTypeRefAt (token.RID);
+                       case TokenType.TypeSpec :
+                               return GetTypeSpecAt (token.RID, context);
+                       default :
+                               return null;
+                       }
+               }
+
+               public TypeReference SearchCoreType (string fullName)
+               {
+                       if (m_isCorlib)
+                               return m_module.Types [fullName];
+
+                       TypeReference coreType =  m_module.TypeReferences [fullName];
+                       if (coreType == null) {
+                               string [] parts = fullName.Split ('.');
+                               if (parts.Length != 2)
+                                       throw new ReflectionException ("Unvalid core type name");
+                               coreType = new TypeReference (parts [1], parts [0], Corlib);
+                               m_module.TypeReferences.Add (coreType);
+                       }
+                       if (!coreType.IsValueType) {
+                               switch (coreType.FullName) {
+                               case Constants.Boolean :
+                               case Constants.Char :
+                               case Constants.Single :
+                               case Constants.Double :
+                               case Constants.SByte :
+                               case Constants.Byte :
+                               case Constants.Int16 :
+                               case Constants.UInt16 :
+                               case Constants.Int32 :
+                               case Constants.UInt32 :
+                               case Constants.Int64 :
+                               case Constants.UInt64 :
+                               case Constants.IntPtr :
+                               case Constants.UIntPtr :
+                                       coreType.IsValueType = true;
+                                       break;
+                               }
+                       }
+                       return coreType;
+               }
+
+               public IMetadataTokenProvider LookupByToken (MetadataToken token)
+               {
+                       switch (token.TokenType) {
+                       case TokenType.TypeDef :
+                               return GetTypeDefAt (token.RID);
+                       case TokenType.TypeRef :
+                               return GetTypeRefAt (token.RID);
+                       case TokenType.Method :
+                               return GetMethodDefAt (token.RID);
+                       case TokenType.Field :
+                               return GetFieldDefAt (token.RID);
+                       case TokenType.Event :
+                               return GetEventDefAt (token.RID);
+                       case TokenType.Property :
+                               return GetPropertyDefAt (token.RID);
+                       case TokenType.Param :
+                               return GetParamDefAt (token.RID);
+                       default :
+                               throw new NotSupportedException ("Lookup is not allowed on this kind of token");
+                       }
+               }
+
+               public CustomAttribute GetCustomAttribute (MethodReference ctor, byte [] data, bool resolve)
+               {
+                       CustomAttrib sig = m_sigReader.GetCustomAttrib (data, ctor, resolve);
+                       return BuildCustomAttribute (ctor, data, sig);
+               }
+
+               public CustomAttribute GetCustomAttribute (MethodReference ctor, byte [] data)
+               {
+                       return GetCustomAttribute (ctor, data, false);
+               }
+
+               public override void VisitModuleDefinition (ModuleDefinition mod)
+               {
+                       VisitTypeDefinitionCollection (mod.Types);
+               }
+
+               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
+               {
+                       // type def reading
+                       TypeDefTable typesTable = m_tableReader.GetTypeDefTable ();
+                       m_typeDefs = new TypeDefinition [typesTable.Rows.Count];
+                       for (int i = 0; i < typesTable.Rows.Count; i++) {
+                               TypeDefRow type = typesTable [i];
+                               TypeDefinition t = new TypeDefinition (
+                                       m_root.Streams.StringsHeap [type.Name],
+                                       m_root.Streams.StringsHeap [type.Namespace],
+                                       type.Flags);
+                               t.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeDef, i);
+
+                               m_typeDefs [i] = t;
+                       }
+
+                       // nested types
+                       if (m_tHeap.HasTable (NestedClassTable.RId)) {
+                               NestedClassTable nested = m_tableReader.GetNestedClassTable ();
+                               for (int i = 0; i < nested.Rows.Count; i++) {
+                                       NestedClassRow row = nested [i];
+
+                                       TypeDefinition parent = GetTypeDefAt (row.EnclosingClass);
+                                       TypeDefinition child = GetTypeDefAt (row.NestedClass);
+
+                                       if (!IsDeleted (child))
+                                               parent.NestedTypes.Add (child);
+                               }
+                       }
+
+                       foreach (TypeDefinition type in m_typeDefs)
+                               if (!IsDeleted (type))
+                                       types.Add (type);
+
+                       // type ref reading
+                       if (m_tHeap.HasTable (TypeRefTable.RId)) {
+                               TypeRefTable typesRef = m_tableReader.GetTypeRefTable ();
+
+                               m_typeRefs = new TypeReference [typesRef.Rows.Count];
+
+                               for (int i = 0; i < typesRef.Rows.Count; i++)
+                                       AddTypeRef (typesRef, i);
+                       } else
+                               m_typeRefs = new TypeReference [0];
+
+                       ReadTypeSpecs ();
+                       ReadMethodSpecs ();
+
+                       ReadMethods ();
+                       ReadGenericParameters ();
+
+                       // set base types
+                       for (int i = 0; i < typesTable.Rows.Count; i++) {
+                               TypeDefRow type = typesTable [i];
+                               TypeDefinition child = m_typeDefs [i];
+                               child.BaseType = GetTypeDefOrRef (type.Extends, new GenericContext (child));
+                       }
+
+                       CompleteMethods ();
+                       ReadAllFields ();
+                       ReadMemberReferences ();
+               }
+
+               void AddTypeRef (TypeRefTable typesRef, int i)
+               {
+                       if (i >= typesRef.Rows.Count)
+                               return;
+
+                       // Check if index has been already added.
+                       if (m_typeRefs [i] != null)
+                               return;
+
+                       TypeRefRow type = typesRef [i];
+                       IMetadataScope scope = null;
+                       TypeReference parent = null;
+
+                       if (type.ResolutionScope.RID != 0) {
+                               int rid = (int) type.ResolutionScope.RID - 1;
+                               switch (type.ResolutionScope.TokenType) {
+                               case TokenType.AssemblyRef:
+                                       scope = m_module.AssemblyReferences [rid];
+                                       break;
+                               case TokenType.ModuleRef:
+                                       scope = m_module.ModuleReferences [rid];
+                                       break;
+                               case TokenType.Module:
+                                       scope = m_module.Assembly.Modules [rid];
+                                       break;
+                               case TokenType.TypeRef:
+                                       AddTypeRef (typesRef, rid);
+                                       parent = GetTypeRefAt (type.ResolutionScope.RID);
+                                       if (parent != null)
+                                               scope = parent.Scope;
+                                       break;
+                               }
+                       }
+
+                       TypeReference t = new TypeReference (
+                               m_root.Streams.StringsHeap [type.Name],
+                               m_root.Streams.StringsHeap [type.Namespace],
+                               scope);
+                       t.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeRef, i);
+
+                       if (parent != null)
+                               t.DeclaringType = parent;
+
+                       m_typeRefs [i] = t;
+                       m_module.TypeReferences.Add (t);
+               }
+
+               void ReadTypeSpecs ()
+               {
+                       if (!m_tHeap.HasTable (TypeSpecTable.RId))
+                               return;
+
+                       TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable ();
+                       m_typeSpecs = new TypeReference [tsTable.Rows.Count];
+               }
+
+               void ReadMethodSpecs ()
+               {
+                       if (!m_tHeap.HasTable (MethodSpecTable.RId))
+                               return;
+
+                       MethodSpecTable msTable = m_tableReader.GetMethodSpecTable ();
+                       m_methodSpecs = new GenericInstanceMethod [msTable.Rows.Count];
+               }
+
+               void ReadGenericParameters ()
+               {
+                       if (!m_tHeap.HasTable (GenericParamTable.RId))
+                               return;
+
+                       GenericParamTable gpTable = m_tableReader.GetGenericParamTable ();
+                       m_genericParameters = new GenericParameter [gpTable.Rows.Count];
+                       for (int i = 0; i < gpTable.Rows.Count; i++) {
+                               GenericParamRow gpRow = gpTable [i];
+                               IGenericParameterProvider owner;
+                               if (gpRow.Owner.TokenType == TokenType.Method)
+                                       owner = GetMethodDefAt (gpRow.Owner.RID);
+                               else if (gpRow.Owner.TokenType == TokenType.TypeDef)
+                                       owner = GetTypeDefAt (gpRow.Owner.RID);
+                               else
+                                       throw new ReflectionException ("Unknown owner type for generic parameter");
+
+                               GenericParameter gp = new GenericParameter (gpRow.Number, owner);
+                               gp.Attributes = gpRow.Flags;
+                               gp.Name = MetadataRoot.Streams.StringsHeap [gpRow.Name];
+                               gp.MetadataToken = MetadataToken.FromMetadataRow (TokenType.GenericParam, i);
+
+                               owner.GenericParameters.Add (gp);
+                               m_genericParameters [i] = gp;
+                       }
+               }
+
+               void ReadAllFields ()
+               {
+                       TypeDefTable tdefTable = m_tableReader.GetTypeDefTable ();
+
+                       if (!m_tHeap.HasTable (FieldTable.RId)) {
+                               m_fields = new FieldDefinition [0];
+                               return;
+                       }
+
+                       FieldTable fldTable = m_tableReader.GetFieldTable ();
+                       m_fields = new FieldDefinition [fldTable.Rows.Count];
+
+                       for (int i = 0; i < m_typeDefs.Length; i++) {
+                               TypeDefinition dec = m_typeDefs [i];
+                               GenericContext context = new GenericContext (dec);
+
+                               int index = i, next;
+
+                               if (index == tdefTable.Rows.Count - 1)
+                                       next = fldTable.Rows.Count + 1;
+                               else
+                                       next = (int) (tdefTable [index + 1]).FieldList;
+
+                               for (int j = (int) tdefTable [index].FieldList; j < next; j++) {
+                                       FieldRow frow = fldTable [j - 1];
+                                       FieldSig fsig = m_sigReader.GetFieldSig (frow.Signature);
+
+                                       FieldDefinition fdef = new FieldDefinition (
+                                               m_root.Streams.StringsHeap [frow.Name],
+                                               GetTypeRefFromSig (fsig.Type, context), frow.Flags);
+                                       fdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Field, j - 1);
+
+                                       if (fsig.CustomMods.Length > 0)
+                                               fdef.FieldType = GetModifierType (fsig.CustomMods, fdef.FieldType);
+
+                                       if (!IsDeleted (fdef))
+                                               dec.Fields.Add (fdef);
+
+                                       m_fields [j - 1] = fdef;
+                               }
+                       }
+               }
+
+               void ReadMethods ()
+               {
+                       if (!m_tHeap.HasTable (MethodTable.RId)) {
+                               m_meths = new MethodDefinition [0];
+                               return;
+                       }
+
+                       MethodTable mTable = m_tableReader.GetMethodTable ();
+                       m_meths = new MethodDefinition [mTable.Rows.Count];
+                       for (int i = 0; i < mTable.Rows.Count; i++) {
+                               MethodRow mRow = mTable [i];
+                               MethodDefinition meth = new MethodDefinition (
+                                       m_root.Streams.StringsHeap [mRow.Name],
+                                       mRow.Flags);
+                               meth.RVA = mRow.RVA;
+                               meth.ImplAttributes = mRow.ImplFlags;
+
+                               meth.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
+
+                               m_meths [i] = meth;
+                       }
+               }
+
+               void CompleteMethods ()
+               {
+                       TypeDefTable tdefTable = m_tableReader.GetTypeDefTable ();
+
+                       if (!m_tHeap.HasTable (MethodTable.RId)) {
+                               m_meths = new MethodDefinition [0];
+                               return;
+                       }
+
+                       MethodTable methTable = m_tableReader.GetMethodTable ();
+                       ParamTable paramTable = m_tableReader.GetParamTable ();
+                       if (!m_tHeap.HasTable (ParamTable.RId))
+                               m_parameters = new ParameterDefinition [0];
+                       else
+                               m_parameters = new ParameterDefinition [paramTable.Rows.Count];
+
+                       for (int i = 0; i < m_typeDefs.Length; i++) {
+                               TypeDefinition dec = m_typeDefs [i];
+
+                               int index = i, next;
+
+                               if (index == tdefTable.Rows.Count - 1)
+                                       next = methTable.Rows.Count + 1;
+                               else
+                                       next = (int) (tdefTable [index + 1]).MethodList;
+
+                               for (int j = (int) tdefTable [index].MethodList; j < next; j++) {
+                                       MethodRow methRow = methTable [j - 1];
+                                       MethodDefinition mdef = m_meths [j - 1];
+
+                                       if (!IsDeleted (mdef)) {
+                                               if (mdef.IsConstructor)
+                                                       dec.Constructors.Add (mdef);
+                                               else
+                                                       dec.Methods.Add (mdef);
+                                       }
+
+                                       GenericContext context = new GenericContext (mdef);
+
+                                       MethodDefSig msig = m_sigReader.GetMethodDefSig (methRow.Signature);
+                                       mdef.HasThis = msig.HasThis;
+                                       mdef.ExplicitThis = msig.ExplicitThis;
+                                       mdef.CallingConvention = msig.MethCallConv;
+
+                                       int prms;
+                                       if (j == methTable.Rows.Count)
+                                               prms = m_parameters.Length + 1;
+                                       else
+                                               prms = (int) (methTable [j]).ParamList;
+
+                                       ParameterDefinition retparam = null;
+
+                                       //TODO: optimize this
+                                       int start = (int) methRow.ParamList - 1;
+
+                                       if (paramTable != null && start < prms - 1) {
+
+                                               ParamRow pRetRow = paramTable [start];
+
+                                               if (pRetRow != null && pRetRow.Sequence == 0) { // ret type
+
+                                                       retparam = new ParameterDefinition (
+                                                               m_root.Streams.StringsHeap [pRetRow.Name],
+                                                               0,
+                                                               pRetRow.Flags,
+                                                               null);
+
+                                                       retparam.Method = mdef;
+                                                       m_parameters [start] = retparam;
+                                                       start++;
+                                               }
+                                       }
+
+                                       for (int k = 0; k < msig.ParamCount; k++) {
+
+                                               int pointer = start + k;
+
+                                               ParamRow pRow = null;
+
+                                               if (paramTable != null && pointer < prms - 1)
+                                                       pRow = paramTable [pointer];
+
+                                               Param psig = msig.Parameters [k];
+
+                                               ParameterDefinition pdef;
+                                               if (pRow != null) {
+                                                       pdef = BuildParameterDefinition (
+                                                               m_root.Streams.StringsHeap [pRow.Name],
+                                                               pRow.Sequence, pRow.Flags, psig, context);
+                                                       pdef.MetadataToken = MetadataToken.FromMetadataRow (TokenType.Param, pointer);
+                                                       m_parameters [pointer] = pdef;
+                                               } else
+                                                       pdef = BuildParameterDefinition (k + 1, psig, context);
+
+                                               pdef.Method = mdef;
+                                               mdef.Parameters.Add (pdef);
+                                       }
+
+                                       mdef.ReturnType = GetMethodReturnType (msig, context);
+                                       MethodReturnType mrt = mdef.ReturnType;
+                                       mrt.Method = mdef;
+                                       if (retparam != null) {
+                                               mrt.Parameter = retparam;
+                                               mrt.Parameter.ParameterType = mrt.ReturnType;
+                                       }
+                               }
+                       }
+
+                       uint eprid = CodeReader.GetRid ((int) m_reader.Image.CLIHeader.EntryPointToken);
+                       if (eprid > 0 && eprid <= m_meths.Length)
+                               m_module.Assembly.EntryPoint = GetMethodDefAt (eprid);
+               }
+
+               void ReadMemberReferences ()
+               {
+                       if (!m_tHeap.HasTable (MemberRefTable.RId))
+                               return;
+
+                       MemberRefTable mrefTable = m_tableReader.GetMemberRefTable ();
+                       m_memberRefs = new MemberReference [mrefTable.Rows.Count];
+               }
+
+               public override void VisitExternTypeCollection (ExternTypeCollection externs)
+               {
+                       ExternTypeCollection ext = externs;
+
+                       if (!m_tHeap.HasTable (ExportedTypeTable.RId))
+                               return;
+
+                       ExportedTypeTable etTable = m_tableReader.GetExportedTypeTable ();
+                       TypeReference [] buffer = new TypeReference [etTable.Rows.Count];
+
+                       for (int i = 0; i < etTable.Rows.Count; i++) {
+                               ExportedTypeRow etRow = etTable [i];
+
+                               buffer [i] = new TypeDefinition (
+                                       m_root.Streams.StringsHeap [etRow.TypeName],
+                                       m_root.Streams.StringsHeap [etRow.TypeNamespace],
+                                       etRow.Flags);
+                               buffer [i].AttachToScope (GetExportedTypeScope (etRow.Implementation));
+                       }
+
+                       for (int i = 0; i < etTable.Rows.Count; i++) {
+                               ExportedTypeRow etRow = etTable [i];
+                               if (etRow.Implementation.TokenType != TokenType.ExportedType)
+                                       continue;
+
+                               TypeReference exported = buffer [i];
+                               TypeReference owner = buffer [etRow.Implementation.RID - 1];
+                               exported.DeclaringType = owner;
+                               exported.AttachToScope (owner.Scope);
+                       }
+
+                       for (int i = 0; i < buffer.Length; i++) {
+                               TypeReference curs = buffer [i];
+                               if (curs != null)
+                                       ext.Add (curs);
+                       }
+               }
+
+               IMetadataScope GetExportedTypeScope (MetadataToken scope)
+               {
+                       int index = (int) scope.RID - 1;
+                       switch (scope.TokenType) {
+                       case TokenType.AssemblyRef:
+                               return Module.AssemblyReferences [index];
+                       case TokenType.File:
+                               return Module.ModuleReferences [index];
+                       case TokenType.ExportedType:
+                               return null; // resolved later
+                       default:
+                               throw new NotSupportedException ();
+                       }
+               }
+
+               static object GetFixedArgValue (CustomAttrib.FixedArg fa)
+               {
+                       if (fa.SzArray) {
+                               object [] vals = new object [fa.NumElem];
+                               for (int j = 0; j < vals.Length; j++)
+                                       vals [j] = fa.Elems [j].Value;
+                               return vals;
+                       } else
+                               return fa.Elems [0].Value;
+               }
+
+               TypeReference GetFixedArgType (CustomAttrib.FixedArg fa)
+               {
+                       if (fa.SzArray) {
+                               if (fa.NumElem == 0)
+                                       return new ArrayType (SearchCoreType (Constants.Object));
+                               else
+                                       return new ArrayType (fa.Elems [0].ElemType);
+                       } else
+                               return fa.Elems [0].ElemType;
+               }
+
+               TypeReference GetNamedArgType (CustomAttrib.NamedArg na)
+               {
+                       if (na.FieldOrPropType == ElementType.Boxed)
+                               return SearchCoreType (Constants.Object);
+
+                       return GetFixedArgType (na.FixedArg);
+               }
+
+               protected CustomAttribute BuildCustomAttribute (MethodReference ctor, byte [] data, CustomAttrib sig)
+               {
+                       CustomAttribute cattr = new CustomAttribute (ctor);
+                       if (!sig.Read) {
+                               cattr.Resolved = false;
+                               cattr.Blob = data;
+                               return cattr;
+                       }
+
+                       foreach (CustomAttrib.FixedArg fa in sig.FixedArgs)
+                               cattr.ConstructorParameters.Add (GetFixedArgValue (fa));
+
+                       foreach (CustomAttrib.NamedArg na in sig.NamedArgs) {
+                               object value = GetFixedArgValue (na.FixedArg);
+                               if (na.Field) {
+                                       cattr.Fields [na.FieldOrPropName] = value;
+                                       cattr.SetFieldType (na.FieldOrPropName, GetNamedArgType (na));
+                               } else if (na.Property) {
+                                       cattr.Properties [na.FieldOrPropName] = value;
+                                       cattr.SetPropertyType (na.FieldOrPropName, GetNamedArgType (na));
+                               } else
+                                       throw new ReflectionException ("Non valid named arg");
+                       }
+
+                       return cattr;
+               }
+
+               void CompleteParameter (ParameterDefinition parameter, Param signature, GenericContext context)
+               {
+                       TypeReference paramType;
+
+                       if (signature.TypedByRef)
+                               paramType = SearchCoreType (Constants.TypedReference);
+                       else
+                               paramType = GetTypeRefFromSig (signature.Type, context);
+
+                       paramType = GetModifierType (signature.CustomMods, paramType);
+
+                       if (signature.ByRef)
+                               paramType = new ReferenceType (paramType);
+
+                       parameter.ParameterType = paramType;
+               }
+
+               public ParameterDefinition BuildParameterDefinition (int sequence, Param psig, GenericContext context)
+               {
+                       ParameterDefinition parameter = new ParameterDefinition (null);
+                       parameter.Sequence = sequence;
+
+                       CompleteParameter (parameter, psig, context);
+
+                       return parameter;
+               }
+
+               public ParameterDefinition BuildParameterDefinition (string name, int sequence, ParameterAttributes attrs, Param psig, GenericContext context)
+               {
+                       ParameterDefinition parameter = new ParameterDefinition (name, sequence, attrs, null);
+
+                       CompleteParameter (parameter, psig, context);
+
+                       return parameter;
+               }
+
+               protected SecurityDeclaration BuildSecurityDeclaration (DeclSecurityRow dsRow)
+               {
+                       return BuildSecurityDeclaration (dsRow.Action, m_root.Streams.BlobHeap.Read (dsRow.PermissionSet));
+               }
+
+               public SecurityDeclaration BuildSecurityDeclaration (SecurityAction action, byte [] permset)
+               {
+                       if (m_secReader == null)
+                               m_secReader = new SecurityDeclarationReader (m_root, this);
+
+                       return m_secReader.FromByteArray (action, permset);
+               }
+
+               protected MarshalSpec BuildMarshalDesc (MarshalSig ms, IHasMarshalSpec container)
+               {
+                       if (ms.Spec is MarshalSig.Array) {
+                               ArrayMarshalSpec amd = new ArrayMarshalSpec (container);
+                               MarshalSig.Array ar = (MarshalSig.Array) ms.Spec;
+                               amd.ElemType = ar.ArrayElemType;
+                               amd.NumElem = ar.NumElem;
+                               amd.ParamNum = ar.ParamNum;
+                               amd.ElemMult = ar.ElemMult;
+                               return amd;
+                       } else if (ms.Spec is MarshalSig.CustomMarshaler) {
+                               CustomMarshalerSpec cmd = new CustomMarshalerSpec (container);
+                               MarshalSig.CustomMarshaler cmsig = (MarshalSig.CustomMarshaler) ms.Spec;
+                               cmd.Guid = cmsig.Guid.Length > 0 ? new Guid (cmsig.Guid) : new Guid ();
+                               cmd.UnmanagedType = cmsig.UnmanagedType;
+                               cmd.ManagedType = cmsig.ManagedType;
+                               cmd.Cookie = cmsig.Cookie;
+                               return cmd;
+                       } else if (ms.Spec is MarshalSig.FixedArray) {
+                               FixedArraySpec fad = new FixedArraySpec (container);
+                               MarshalSig.FixedArray fasig = (MarshalSig.FixedArray) ms.Spec;
+                               fad.ElemType = fasig.ArrayElemType;
+                               fad.NumElem = fasig.NumElem;
+                               return fad;
+                       } else if (ms.Spec is MarshalSig.FixedSysString) {
+                               FixedSysStringSpec fssc = new FixedSysStringSpec (container);
+                               fssc.Size = ((MarshalSig.FixedSysString) ms.Spec).Size;
+                               return fssc;
+                       } else if (ms.Spec is MarshalSig.SafeArray) {
+                               SafeArraySpec sad = new SafeArraySpec (container);
+                               sad.ElemType = ((MarshalSig.SafeArray) ms.Spec).ArrayElemType;
+                               return sad;
+                       } else {
+                               return new MarshalSpec (ms.NativeInstrinsic, container);
+                       }
+               }
+
+               public TypeReference GetModifierType (CustomMod [] cmods, TypeReference type)
+               {
+                       if (cmods == null || cmods.Length == 0)
+                               return type;
+
+                       TypeReference ret = type;
+                       for (int i = cmods.Length - 1; i >= 0; i--) {
+                               CustomMod cmod = cmods [i];
+                               TypeReference modType;
+
+                               if (cmod.TypeDefOrRef.RID == 0)
+                                       continue;
+
+                               if (cmod.TypeDefOrRef.TokenType == TokenType.TypeDef)
+                                       modType = GetTypeDefAt (cmod.TypeDefOrRef.RID);
+                               else
+                                       modType = GetTypeRefAt (cmod.TypeDefOrRef.RID);
+
+                               if (cmod.CMOD == CustomMod.CMODType.OPT)
+                                       ret = new ModifierOptional (ret, modType);
+                               else if (cmod.CMOD == CustomMod.CMODType.REQD)
+                                       ret = new ModifierRequired (ret, modType);
+                       }
+                       return ret;
+               }
+
+               public MethodReturnType GetMethodReturnType (MethodSig msig, GenericContext context)
+               {
+                       TypeReference retType;
+                       if (msig.RetType.Void)
+                               retType = SearchCoreType (Constants.Void);
+                       else if (msig.RetType.TypedByRef)
+                               retType = SearchCoreType (Constants.TypedReference);
+                       else
+                               retType = GetTypeRefFromSig (msig.RetType.Type, context);
+
+                       retType = GetModifierType (msig.RetType.CustomMods, retType);
+
+                       if (msig.RetType.ByRef)
+                               retType = new ReferenceType (retType);
+
+                       return new MethodReturnType (retType);
+               }
+
+               public TypeReference GetTypeRefFromSig (SigType t, GenericContext context)
+               {
+                       switch (t.ElementType) {
+                       case ElementType.Class :
+                               CLASS c = t as CLASS;
+                               return GetTypeDefOrRef (c.Type, context);
+                       case ElementType.ValueType :
+                               VALUETYPE vt = t as VALUETYPE;
+                               TypeReference vtr = GetTypeDefOrRef (vt.Type, context);
+                               vtr.IsValueType = true;
+                               return vtr;
+                       case ElementType.String :
+                               return SearchCoreType (Constants.String);
+                       case ElementType.Object :
+                               return SearchCoreType (Constants.Object);
+                       case ElementType.Void :
+                               return SearchCoreType (Constants.Void);
+                       case ElementType.Boolean :
+                               return SearchCoreType (Constants.Boolean);
+                       case ElementType.Char :
+                               return SearchCoreType (Constants.Char);
+                       case ElementType.I1 :
+                               return SearchCoreType (Constants.SByte);
+                       case ElementType.U1 :
+                               return SearchCoreType (Constants.Byte);
+                       case ElementType.I2 :
+                               return SearchCoreType (Constants.Int16);
+                       case ElementType.U2 :
+                               return SearchCoreType (Constants.UInt16);
+                       case ElementType.I4 :
+                               return SearchCoreType (Constants.Int32);
+                       case ElementType.U4 :
+                               return SearchCoreType (Constants.UInt32);
+                       case ElementType.I8 :
+                               return SearchCoreType (Constants.Int64);
+                       case ElementType.U8 :
+                               return SearchCoreType (Constants.UInt64);
+                       case ElementType.R4 :
+                               return SearchCoreType (Constants.Single);
+                       case ElementType.R8 :
+                               return SearchCoreType (Constants.Double);
+                       case ElementType.I :
+                               return SearchCoreType (Constants.IntPtr);
+                       case ElementType.U :
+                               return SearchCoreType (Constants.UIntPtr);
+                       case ElementType.TypedByRef :
+                               return SearchCoreType (Constants.TypedReference);
+                       case ElementType.Array :
+                               ARRAY ary = t as ARRAY;
+                               return new ArrayType (GetTypeRefFromSig (ary.Type, context), ary.Shape);
+                       case ElementType.SzArray :
+                               SZARRAY szary = t as SZARRAY;
+                               ArrayType at = new ArrayType (GetTypeRefFromSig (szary.Type, context));
+                               return at;
+                       case ElementType.Ptr :
+                               PTR pointer = t as PTR;
+                               if (pointer.Void)
+                                       return new PointerType (SearchCoreType (Constants.Void));
+                               return new PointerType (GetTypeRefFromSig (pointer.PtrType, context));
+                       case ElementType.FnPtr :
+                               FNPTR funcptr = t as FNPTR;
+                               FunctionPointerType fnptr = new FunctionPointerType (funcptr.Method.HasThis, funcptr.Method.ExplicitThis,
+                                       funcptr.Method.MethCallConv, GetMethodReturnType (funcptr.Method, context));
+
+                               for (int i = 0; i < funcptr.Method.ParamCount; i++) {
+                                       Param p = funcptr.Method.Parameters [i];
+                                       fnptr.Parameters.Add (BuildParameterDefinition (i, p, context));
+                               }
+
+                               CreateSentinelIfNeeded (fnptr, funcptr.Method);
+
+                               return fnptr;
+                       case ElementType.Var:
+                               VAR var = t as VAR;
+                               context.CheckProvider (context.Type, var.Index + 1);
+
+                               if (context.Type is GenericInstanceType)
+                                       return (context.Type as GenericInstanceType).GenericArguments [var.Index];
+                               else
+                                       return context.Type.GenericParameters [var.Index];
+                       case ElementType.MVar:
+                               MVAR mvar = t as MVAR;
+                               context.CheckProvider (context.Method, mvar.Index + 1);
+
+                               if (context.Method is GenericInstanceMethod)
+                                       return (context.Method as GenericInstanceMethod).GenericArguments [mvar.Index];
+                               else
+                                       return context.Method.GenericParameters [mvar.Index];
+                       case ElementType.GenericInst:
+                               GENERICINST ginst = t as GENERICINST;
+                               GenericInstanceType instance = new GenericInstanceType (GetTypeDefOrRef (ginst.Type, context));
+                               instance.IsValueType = ginst.ValueType;
+                               context.CheckProvider (instance.GetOriginalType (), ginst.Signature.Arity);
+
+                               for (int i = 0; i < ginst.Signature.Arity; i++)
+                                       instance.GenericArguments.Add (GetGenericArg (
+                                               ginst.Signature.Types [i], context));
+
+                               return instance;
+                       default:
+                               break;
+                       }
+                       return null;
+               }
+
+               TypeReference GetGenericArg (GenericArg arg, GenericContext context)
+               {
+                       TypeReference type = GetTypeRefFromSig (arg.Type, context);
+                       type = GetModifierType (arg.CustomMods, type);
+                       return type;
+               }
+
+               static bool IsOdd (int i)
+               {
+                       return (i & 1) == 1;
+               }
+
+               protected object GetConstant (uint pos, ElementType elemType)
+               {
+                       if (elemType == ElementType.Class)
+                               return null;
+
+                       byte [] constant = m_root.Streams.BlobHeap.Read (pos);
+
+                       if (elemType == ElementType.String) {
+                               int length = constant.Length;
+                               if (IsOdd (length))
+                                       length--;
+
+                               return Encoding.Unicode.GetString (constant, 0, length);
+                       }
+
+                       // One byte types can always be read using BitConverter. However it can't be used
+                       // elsewhere since it behaves differently in Mono compared to CF on BE architectures
+                       switch (elemType) {
+                       case ElementType.Boolean :
+                               return BitConverter.ToBoolean (constant, 0);
+                       case ElementType.I1 :
+                               return (sbyte) constant [0];
+                       case ElementType.U1 :
+                               return (byte) constant [0];
+                       case ElementType.Object: // illegal, but foundable
+                               return null;
+                       default :
+                               if (BitConverter.IsLittleEndian)
+                                       return GetConstantLittleEndian (elemType, constant);
+                               else
+                                       return GetConstantBigEndian (elemType, constant);
+                       }
+               }
+
+               static object GetConstantLittleEndian (ElementType elemType, byte [] constant)
+               {
+                       switch (elemType) {
+                       case ElementType.Char :
+                               return BitConverter.ToChar (constant, 0);
+                       case ElementType.I2 :
+                               return BitConverter.ToInt16 (constant, 0);
+                       case ElementType.I4 :
+                               return BitConverter.ToInt32 (constant, 0);
+                       case ElementType.I8 :
+                               return BitConverter.ToInt64 (constant, 0);
+                       case ElementType.U2 :
+                               return BitConverter.ToUInt16 (constant, 0);
+                       case ElementType.U4 :
+                               return BitConverter.ToUInt32 (constant, 0);
+                       case ElementType.U8 :
+                               return BitConverter.ToUInt64 (constant, 0);
+                       case ElementType.R4 :
+                               return BitConverter.ToSingle (constant, 0);
+                       case ElementType.R8 :
+                               return BitConverter.ToDouble (constant, 0);
+                       default:
+                               throw new ReflectionException ("Non valid element in constant table");
+                       }
+               }
+
+               static object GetConstantBigEndian (ElementType elemType, byte [] constant)
+               {
+                       // BinaryReader always read it's data in LE format
+                       // note: this could be further optimized (even without unsafe code)
+                       BinaryReader br = new BinaryReader (new MemoryStream (constant));
+                       switch (elemType) {
+                       case ElementType.Char :
+                               return (char) br.ReadUInt16 ();
+                       case ElementType.I2 :
+                               return br.ReadInt16 ();
+                       case ElementType.I4 :
+                               return br.ReadInt32 ();
+                       case ElementType.I8 :
+                               return br.ReadInt64 ();
+                       case ElementType.U2 :
+                               return br.ReadUInt16 ();
+                       case ElementType.U4 :
+                               return br.ReadUInt32 ();
+                       case ElementType.U8 :
+                               return br.ReadUInt64 ();
+                       case ElementType.R4 :
+                               return br.ReadSingle ();
+                       case ElementType.R8 :
+                               return br.ReadDouble ();
+                       default:
+                               throw new ReflectionException ("Non valid element in constant table");
+                       }
+               }
+
+               protected void SetInitialValue (FieldDefinition field)
+               {
+                       int size = 0;
+                       TypeReference fieldType = field.FieldType;
+                       switch (fieldType.FullName) {
+                       case Constants.Boolean:
+                       case Constants.Byte:
+                       case Constants.SByte:
+                               size = 1;
+                               break;
+                       case Constants.Int16:
+                       case Constants.UInt16:
+                       case Constants.Char:
+                               size = 2;
+                               break;
+                       case Constants.Int32:
+                       case Constants.UInt32:
+                       case Constants.Single:
+                               size = 4;
+                               break;
+                       case Constants.Int64:
+                       case Constants.UInt64:
+                       case Constants.Double:
+                               size = 8;
+                               break;
+                       default:
+                               fieldType = fieldType.GetOriginalType ();
+
+                               TypeDefinition fieldTypeDef = fieldType as TypeDefinition;
+
+                               if (fieldTypeDef != null)
+                                       size = (int) fieldTypeDef.ClassSize;
+                               break;
+                       }
+
+                       if (size > 0 && field.RVA != RVA.Zero) {
+                               byte [] data = new byte [size];
+                               Section sect = m_reader.Image.GetSectionAtVirtualAddress (field.RVA);
+                               if (sect != null)
+                                       Buffer.BlockCopy (sect.Data, (int) (long) (field.RVA - sect.VirtualAddress), data, 0, size);
+                               field.InitialValue = data;
+                       } else
+                               field.InitialValue = new byte [0];
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionWriter.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionWriter.cs
new file mode 100644 (file)
index 0000000..418b894
--- /dev/null
@@ -0,0 +1,1564 @@
+//
+// ReflectionWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Globalization;
+       using System.Text;
+
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Cil;
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+
+       internal sealed class ReflectionWriter : BaseReflectionVisitor {
+
+               StructureWriter m_structureWriter;
+               ModuleDefinition m_mod;
+               SignatureWriter m_sigWriter;
+               CodeWriter m_codeWriter;
+               MetadataWriter m_mdWriter;
+               MetadataTableWriter m_tableWriter;
+               MetadataRowWriter m_rowWriter;
+
+               bool m_saveSymbols;
+               string m_asmOutput;
+               ISymbolWriter m_symbolWriter;
+
+               ArrayList m_typeDefStack;
+               ArrayList m_methodStack;
+               ArrayList m_fieldStack;
+               ArrayList m_genericParamStack;
+               IDictionary m_typeSpecTokenCache;
+               IDictionary m_memberRefTokenCache;
+
+               uint m_methodIndex;
+               uint m_fieldIndex;
+               uint m_paramIndex;
+               uint m_eventIndex;
+               uint m_propertyIndex;
+
+               MemoryBinaryWriter m_constWriter;
+
+               public StructureWriter StructureWriter {
+                       get { return m_structureWriter; }
+                       set {
+                                m_structureWriter = value;
+
+                               Initialize ();
+                       }
+               }
+
+               public CodeWriter CodeWriter {
+                       get { return m_codeWriter; }
+               }
+
+               public bool SaveSymbols {
+                       get { return m_saveSymbols; }
+                       set { m_saveSymbols = value; }
+               }
+
+               public string OutputFile
+               {
+                       get { return m_asmOutput; }
+                       set { m_asmOutput = value; }
+               }
+
+               public ISymbolWriter SymbolWriter {
+                       get { return m_symbolWriter; }
+                       set { m_symbolWriter = value; }
+               }
+
+               public SignatureWriter SignatureWriter {
+                       get { return m_sigWriter; }
+               }
+
+               public MetadataWriter MetadataWriter {
+                       get { return m_mdWriter; }
+               }
+
+               public MetadataTableWriter MetadataTableWriter {
+                       get { return m_tableWriter; }
+               }
+
+               public MetadataRowWriter MetadataRowWriter {
+                       get { return m_rowWriter; }
+               }
+
+               public ReflectionWriter (ModuleDefinition mod)
+               {
+                       m_mod = mod;
+               }
+
+               void Initialize ()
+               {
+                       m_mdWriter = new MetadataWriter (
+                               m_mod.Assembly,
+                               m_mod.Image.MetadataRoot,
+                               m_structureWriter.Assembly.Kind,
+                               m_mod.Assembly.Runtime,
+                               m_structureWriter.GetWriter ());
+                       m_tableWriter = m_mdWriter.GetTableVisitor ();
+                       m_rowWriter = m_tableWriter.GetRowVisitor () as MetadataRowWriter;
+                       m_sigWriter = new SignatureWriter (m_mdWriter);
+                       m_codeWriter = new CodeWriter (this, m_mdWriter.CilWriter);
+
+                       m_typeDefStack = new ArrayList ();
+                       m_methodStack = new ArrayList ();
+                       m_fieldStack = new ArrayList ();
+                       m_genericParamStack = new ArrayList ();
+                       m_typeSpecTokenCache = new Hashtable ();
+                       m_memberRefTokenCache = new Hashtable ();
+
+                       m_methodIndex = 1;
+                       m_fieldIndex = 1;
+                       m_paramIndex = 1;
+                       m_eventIndex = 1;
+                       m_propertyIndex = 1;
+
+                       m_constWriter = new MemoryBinaryWriter ();
+               }
+
+               public TypeReference GetCoreType (string name)
+               {
+                       return m_mod.Controller.Reader.SearchCoreType (name);
+               }
+
+               public static uint GetRidFor (IMetadataTokenProvider tp)
+               {
+                       return tp.MetadataToken.RID;
+               }
+
+               public uint GetRidFor (AssemblyNameReference asmName)
+               {
+                       return (uint) m_mod.AssemblyReferences.IndexOf (asmName) + 1;
+               }
+
+               public uint GetRidFor (ModuleDefinition mod)
+               {
+                       return (uint) m_mod.Assembly.Modules.IndexOf (mod) + 1;
+               }
+
+               public uint GetRidFor (ModuleReference modRef)
+               {
+                       return (uint) m_mod.ModuleReferences.IndexOf (modRef) + 1;
+               }
+
+               static bool IsTypeSpec (TypeReference type)
+               {
+                       return type is TypeSpecification || type is GenericParameter;
+               }
+
+               public MetadataToken GetTypeDefOrRefToken (TypeReference type)
+               {
+                       if (IsTypeSpec (type)) {
+                               uint sig = m_sigWriter.AddTypeSpec (GetTypeSpecSig (type));
+                               if (m_typeSpecTokenCache.Contains (sig))
+                                       return (MetadataToken) m_typeSpecTokenCache [sig];
+
+                               TypeSpecTable tsTable = m_tableWriter.GetTypeSpecTable ();
+                               TypeSpecRow tsRow = m_rowWriter.CreateTypeSpecRow (sig);
+                               tsTable.Rows.Add (tsRow);
+
+                               MetadataToken token = new MetadataToken (TokenType.TypeSpec, (uint) tsTable.Rows.Count);
+                               if (! (type is GenericParameter))
+                                       type.MetadataToken = token;
+
+                               m_typeSpecTokenCache [sig] = token;
+                               return token;
+                       } else if (type != null)
+                               return type.MetadataToken;
+                       else // <Module> and interfaces
+                               return new MetadataToken (TokenType.TypeRef, 0);
+               }
+
+               public MetadataToken GetMemberRefToken (MemberReference member)
+               {
+                       if (member is MethodSpecification)
+                               return GetMemberRefToken (((MethodSpecification) member).ElementMethod);
+                       if (member is IMemberDefinition)
+                               return member.MetadataToken;
+                       if (m_memberRefTokenCache.Contains (member))
+                               return (MetadataToken) m_memberRefTokenCache [member];
+
+                       MemberRefTable mrTable = m_tableWriter.GetMemberRefTable ();
+
+                       uint sig = 0;
+                       if (member is FieldReference)
+                               sig = m_sigWriter.AddFieldSig (GetFieldSig ((FieldReference) member));
+                       else if (member is MethodReference)
+                               sig = m_sigWriter.AddMethodRefSig (GetMethodRefSig ((MethodReference) member));
+
+                       MetadataToken declaringType = GetTypeDefOrRefToken (member.DeclaringType);
+                       uint name = m_mdWriter.AddString (member.Name);
+
+                       for (int i = 0; i < mrTable.Rows.Count; i++) {
+                               MemberRefRow row = mrTable [i];
+                               if (row.Class == declaringType && row.Name == name && row.Signature == sig)
+                                       return MetadataToken.FromMetadataRow (TokenType.MemberRef, i);
+                       }
+
+                       MemberRefRow mrRow = m_rowWriter.CreateMemberRefRow (
+                               declaringType,
+                               name,
+                               sig);
+
+                       mrTable.Rows.Add (mrRow);
+                       member.MetadataToken = new MetadataToken (
+                               TokenType.MemberRef, (uint) mrTable.Rows.Count);
+                       m_memberRefTokenCache [member] = member.MetadataToken;
+                       return member.MetadataToken;
+               }
+
+               public MetadataToken GetMethodSpecToken (GenericInstanceMethod gim)
+               {
+                       uint sig = m_sigWriter.AddMethodSpec (GetMethodSpecSig (gim));
+                       MethodSpecTable msTable = m_tableWriter.GetMethodSpecTable ();
+
+                       MetadataToken meth = GetMemberRefToken (gim.ElementMethod);
+
+                       for (int i = 0; i < msTable.Rows.Count; i++) {
+                               MethodSpecRow row = msTable [i];
+                               if (row.Method == meth && row.Instantiation == sig)
+                                       return MetadataToken.FromMetadataRow (TokenType.MethodSpec, i);
+                       }
+
+                       MethodSpecRow msRow = m_rowWriter.CreateMethodSpecRow (
+                               meth,
+                               sig);
+                       msTable.Rows.Add (msRow);
+                       gim.MetadataToken = new MetadataToken (TokenType.MethodSpec, (uint) msTable.Rows.Count);
+                       return gim.MetadataToken;
+               }
+
+               public override void VisitModuleDefinition (ModuleDefinition mod)
+               {
+                       mod.FullLoad ();
+               }
+
+               public override void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
+               {
+                       TypeDefTable tdTable = m_tableWriter.GetTypeDefTable ();
+
+                       if (types [Constants.ModuleType] == null)
+                               types.Add (new TypeDefinition (
+                                               Constants.ModuleType, string.Empty, TypeAttributes.NotPublic));
+
+                       foreach (TypeDefinition t in types)
+                               m_typeDefStack.Add (t);
+
+                       m_typeDefStack.Sort (TableComparers.TypeDef.Instance);
+
+                       for (int i = 0; i < m_typeDefStack.Count; i++) {
+                               TypeDefinition t = (TypeDefinition) m_typeDefStack [i];
+                               if (t.Module.Assembly != m_mod.Assembly)
+                                       throw new ReflectionException ("A type as not been correctly imported");
+
+                               t.MetadataToken = new MetadataToken (TokenType.TypeDef, (uint) (i + 1));
+                       }
+
+                       foreach (TypeDefinition t in m_typeDefStack) {
+                               TypeDefRow tdRow = m_rowWriter.CreateTypeDefRow (
+                                       t.Attributes,
+                                       m_mdWriter.AddString (t.Name),
+                                       m_mdWriter.AddString (t.Namespace),
+                                       GetTypeDefOrRefToken (t.BaseType),
+                                       0,
+                                       0);
+
+                               tdTable.Rows.Add (tdRow);
+                       }
+               }
+
+               public void CompleteTypeDefinitions ()
+               {
+                       TypeDefTable tdTable = m_tableWriter.GetTypeDefTable ();
+
+                       for (int i = 0; i < m_typeDefStack.Count; i++) {
+                               TypeDefRow tdRow = tdTable [i];
+                               TypeDefinition t = (TypeDefinition) m_typeDefStack [i];
+                               tdRow.FieldList = m_fieldIndex;
+                               tdRow.MethodList = m_methodIndex;
+                               if (t.HasFields) {
+                                       foreach (FieldDefinition field in t.Fields)
+                                               VisitFieldDefinition (field);
+                               }
+                               if (t.HasConstructors) {
+                                       foreach (MethodDefinition ctor in t.Constructors)
+                                               VisitMethodDefinition (ctor);
+                               }
+                               if (t.HasMethods) {
+                                       foreach (MethodDefinition meth in t.Methods)
+                                               VisitMethodDefinition (meth);
+                               }
+
+                               if (t.HasLayoutInfo)
+                                       WriteLayout (t);
+                       }
+
+                       foreach (FieldDefinition field in m_fieldStack) {
+                               if (field.HasCustomAttributes)
+                                       VisitCustomAttributeCollection (field.CustomAttributes);
+                               if (field.MarshalSpec != null)
+                                       VisitMarshalSpec (field.MarshalSpec);
+                       }
+
+                       foreach (MethodDefinition meth in m_methodStack) {
+                               if (meth.ReturnType.HasCustomAttributes)
+                                       VisitCustomAttributeCollection (meth.ReturnType.CustomAttributes);
+                               if (meth.HasParameters) {
+                                       foreach (ParameterDefinition param in meth.Parameters) {
+                                               if (param.HasCustomAttributes)
+                                                       VisitCustomAttributeCollection (param.CustomAttributes);
+                                       }
+                               }
+                               if (meth.HasGenericParameters)
+                                       VisitGenericParameterCollection (meth.GenericParameters);
+                               if (meth.HasOverrides)
+                                       VisitOverrideCollection (meth.Overrides);
+                               if (meth.HasCustomAttributes)
+                                       VisitCustomAttributeCollection (meth.CustomAttributes);
+                               if (meth.HasSecurityDeclarations)
+                                       VisitSecurityDeclarationCollection (meth.SecurityDeclarations);
+                               if (meth.PInvokeInfo != null) {
+                                       meth.Attributes |= MethodAttributes.PInvokeImpl;
+                                       VisitPInvokeInfo (meth.PInvokeInfo);
+                               }
+                       }
+
+                       foreach (TypeDefinition t in m_typeDefStack)
+                               t.Accept (this);
+               }
+
+               public override void VisitTypeReferenceCollection (TypeReferenceCollection refs)
+               {
+                       ArrayList orderedTypeRefs = new ArrayList (refs.Count);
+                       foreach (TypeReference tr in refs)
+                               orderedTypeRefs.Add (tr);
+
+                       orderedTypeRefs.Sort (TableComparers.TypeRef.Instance);
+
+                       TypeRefTable trTable = m_tableWriter.GetTypeRefTable ();
+                       foreach (TypeReference t in orderedTypeRefs) {
+                               MetadataToken scope;
+
+                               if (t.Module.Assembly != m_mod.Assembly)
+                                       throw new ReflectionException ("A type as not been correctly imported");
+
+                               if (t.Scope == null)
+                                       continue;
+
+                               if (t.DeclaringType != null)
+                                       scope = new MetadataToken (TokenType.TypeRef, GetRidFor (t.DeclaringType));
+                               else if (t.Scope is AssemblyNameReference)
+                                       scope = new MetadataToken (TokenType.AssemblyRef,
+                                               GetRidFor ((AssemblyNameReference) t.Scope));
+                               else if (t.Scope is ModuleDefinition)
+                                       scope = new MetadataToken (TokenType.Module,
+                                               GetRidFor ((ModuleDefinition) t.Scope));
+                               else if (t.Scope is ModuleReference)
+                                       scope = new MetadataToken (TokenType.ModuleRef,
+                                               GetRidFor ((ModuleReference) t.Scope));
+                               else
+                                       scope = new MetadataToken (TokenType.ExportedType, 0);
+
+                               TypeRefRow trRow = m_rowWriter.CreateTypeRefRow (
+                                       scope,
+                                       m_mdWriter.AddString (t.Name),
+                                       m_mdWriter.AddString (t.Namespace));
+
+                               trTable.Rows.Add (trRow);
+                               t.MetadataToken = new MetadataToken (TokenType.TypeRef, (uint) trTable.Rows.Count);
+                       }
+               }
+
+               public override void VisitGenericParameterCollection (GenericParameterCollection parameters)
+               {
+                       if (parameters.Count == 0)
+                               return;
+
+                       foreach (GenericParameter gp in parameters)
+                               m_genericParamStack.Add (gp);
+               }
+
+               public override void VisitInterfaceCollection (InterfaceCollection interfaces)
+               {
+                       if (interfaces.Count == 0)
+                               return;
+
+                       InterfaceImplTable iiTable = m_tableWriter.GetInterfaceImplTable ();
+                       foreach (TypeReference interf in interfaces) {
+                               InterfaceImplRow iiRow = m_rowWriter.CreateInterfaceImplRow (
+                                       GetRidFor (interfaces.Container),
+                                       GetTypeDefOrRefToken (interf));
+
+                               iiTable.Rows.Add (iiRow);
+                       }
+               }
+
+               public override void VisitExternTypeCollection (ExternTypeCollection externs)
+               {
+                       if (externs.Count == 0)
+                               return;
+
+                       ExportedTypeTable etTable = m_tableWriter.GetExportedTypeTable ();
+                       foreach (TypeReference ext in externs) {
+                               TypeDefinition td = ext.Resolve ();
+                               if (td == null)
+                                       continue;
+
+                               MetadataToken scope = GetExportedTypeScope (td);
+
+                               ExportedTypeRow etRow = m_rowWriter.CreateExportedTypeRow (
+                                       td.Attributes,
+                                       0,
+                                       m_mdWriter.AddString (td.Name),
+                                       m_mdWriter.AddString (td.Namespace),
+                                       scope);
+
+                               etTable.Rows.Add (etRow);
+                               ext.MetadataToken = new MetadataToken (TokenType.ExportedType, (uint) etTable.Rows.Count);
+                       }
+               }
+
+               MetadataToken GetExportedTypeScope (TypeDefinition t)
+               {
+                       if (t.DeclaringType != null)
+                               return t.DeclaringType.MetadataToken;
+
+                       if (t.Scope is AssemblyNameReference)
+                               return new MetadataToken (TokenType.AssemblyRef, GetRidFor ((AssemblyNameReference) t.Scope));
+
+                       if (t.Scope is ModuleDefinition)
+                               return new MetadataToken (TokenType.Module, GetRidFor ((ModuleDefinition) t.Scope));
+
+                       throw new NotImplementedException ();
+               }
+
+               public override void VisitOverrideCollection (OverrideCollection meths)
+               {
+                       if (meths.Count == 0)
+                               return;
+
+                       MethodImplTable miTable = m_tableWriter.GetMethodImplTable ();
+                       foreach (MethodReference ov in meths) {
+                               MethodImplRow miRow = m_rowWriter.CreateMethodImplRow (
+                                       GetRidFor (meths.Container.DeclaringType as TypeDefinition),
+                                       new MetadataToken (TokenType.Method, GetRidFor (meths.Container)),
+                                       GetMemberRefToken (ov));
+
+                               miTable.Rows.Add (miRow);
+                       }
+               }
+
+               public override void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
+               {
+                       if (nestedTypes.Count == 0)
+                               return;
+
+                       NestedClassTable ncTable = m_tableWriter.GetNestedClassTable ();
+                       foreach (TypeDefinition nested in nestedTypes) {
+                               NestedClassRow ncRow = m_rowWriter.CreateNestedClassRow (
+                                       nested.MetadataToken.RID,
+                                       GetRidFor (nestedTypes.Container));
+
+                               ncTable.Rows.Add (ncRow);
+                       }
+               }
+
+               public override void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
+               {
+                       if (parameters.Count == 0)
+                               return;
+
+                       ushort seq = 1;
+                       ParamTable pTable = m_tableWriter.GetParamTable ();
+                       foreach (ParameterDefinition param in parameters)
+                               InsertParameter (pTable, param, seq++);
+               }
+
+               void InsertParameter (ParamTable pTable, ParameterDefinition param, ushort seq)
+               {
+                       ParamRow pRow = m_rowWriter.CreateParamRow (
+                               param.Attributes,
+                               seq,
+                               m_mdWriter.AddString (param.Name));
+
+                       pTable.Rows.Add (pRow);
+                       param.MetadataToken = new MetadataToken (TokenType.Param, (uint) pTable.Rows.Count);
+
+                       if (param.MarshalSpec != null)
+                               param.MarshalSpec.Accept (this);
+
+                       if (param.HasConstant)
+                               WriteConstant (param, param.ParameterType);
+
+                       m_paramIndex++;
+               }
+
+               static bool RequiresParameterRow (MethodReturnType mrt)
+               {
+                       return mrt.HasConstant || mrt.MarshalSpec != null ||
+                               mrt.CustomAttributes.Count > 0 || mrt.Parameter.Attributes != (ParameterAttributes) 0;
+               }
+
+               public override void VisitMethodDefinition (MethodDefinition method)
+               {
+                       MethodTable mTable = m_tableWriter.GetMethodTable ();
+                       MethodRow mRow = m_rowWriter.CreateMethodRow (
+                               RVA.Zero,
+                               method.ImplAttributes,
+                               method.Attributes,
+                               m_mdWriter.AddString (method.Name),
+                               m_sigWriter.AddMethodDefSig (GetMethodDefSig (method)),
+                               m_paramIndex);
+
+                       mTable.Rows.Add (mRow);
+                       m_methodStack.Add (method);
+                       method.MetadataToken = new MetadataToken (TokenType.Method, (uint) mTable.Rows.Count);
+                       m_methodIndex++;
+
+                       if (RequiresParameterRow (method.ReturnType))
+                               InsertParameter (m_tableWriter.GetParamTable (), method.ReturnType.Parameter, 0);
+
+                       VisitParameterDefinitionCollection (method.Parameters);
+               }
+
+               public override void VisitPInvokeInfo (PInvokeInfo pinvk)
+               {
+                       ImplMapTable imTable = m_tableWriter.GetImplMapTable ();
+                       ImplMapRow imRow = m_rowWriter.CreateImplMapRow (
+                               pinvk.Attributes,
+                               new MetadataToken (TokenType.Method, GetRidFor (pinvk.Method)),
+                               m_mdWriter.AddString (pinvk.EntryPoint),
+                               GetRidFor (pinvk.Module));
+
+                       imTable.Rows.Add (imRow);
+               }
+
+               public override void VisitEventDefinitionCollection (EventDefinitionCollection events)
+               {
+                       if (events.Count == 0)
+                               return;
+
+                       EventMapTable emTable = m_tableWriter.GetEventMapTable ();
+                       EventMapRow emRow = m_rowWriter.CreateEventMapRow (
+                               GetRidFor (events.Container),
+                               m_eventIndex);
+
+                       emTable.Rows.Add (emRow);
+                       VisitCollection (events);
+               }
+
+               public override void VisitEventDefinition (EventDefinition evt)
+               {
+                       EventTable eTable = m_tableWriter.GetEventTable ();
+                       EventRow eRow = m_rowWriter.CreateEventRow (
+                               evt.Attributes,
+                               m_mdWriter.AddString (evt.Name),
+                               GetTypeDefOrRefToken (evt.EventType));
+
+                       eTable.Rows.Add (eRow);
+                       evt.MetadataToken = new MetadataToken (TokenType.Event, (uint) eTable.Rows.Count);
+
+                       if (evt.AddMethod != null)
+                               WriteSemantic (MethodSemanticsAttributes.AddOn, evt, evt.AddMethod);
+
+                       if (evt.InvokeMethod != null)
+                               WriteSemantic (MethodSemanticsAttributes.Fire, evt, evt.InvokeMethod);
+
+                       if (evt.RemoveMethod != null)
+                               WriteSemantic (MethodSemanticsAttributes.RemoveOn, evt, evt.RemoveMethod);
+
+                       m_eventIndex++;
+               }
+
+               public override void VisitFieldDefinition (FieldDefinition field)
+               {
+                       FieldTable fTable = m_tableWriter.GetFieldTable ();
+                       FieldRow fRow = m_rowWriter.CreateFieldRow (
+                               field.Attributes,
+                               m_mdWriter.AddString (field.Name),
+                               m_sigWriter.AddFieldSig (GetFieldSig (field)));
+
+                       fTable.Rows.Add (fRow);
+                       field.MetadataToken = new MetadataToken (TokenType.Field, (uint) fTable.Rows.Count);
+                       m_fieldIndex++;
+
+                       if (field.HasConstant)
+                               WriteConstant (field, field.FieldType);
+
+                       if (field.HasLayoutInfo)
+                               WriteLayout (field);
+
+                       m_fieldStack.Add (field);
+               }
+
+               public override void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
+               {
+                       if (properties.Count == 0)
+                               return;
+
+                       PropertyMapTable pmTable = m_tableWriter.GetPropertyMapTable ();
+                       PropertyMapRow pmRow = m_rowWriter.CreatePropertyMapRow (
+                               GetRidFor (properties.Container),
+                               m_propertyIndex);
+
+                       pmTable.Rows.Add (pmRow);
+                       VisitCollection (properties);
+               }
+
+               public override void VisitPropertyDefinition (PropertyDefinition property)
+               {
+                       PropertyTable pTable = m_tableWriter.GetPropertyTable ();
+                       PropertyRow pRow = m_rowWriter.CreatePropertyRow (
+                               property.Attributes,
+                               m_mdWriter.AddString (property.Name),
+                               m_sigWriter.AddPropertySig (GetPropertySig (property)));
+
+                       pTable.Rows.Add (pRow);
+                       property.MetadataToken = new MetadataToken (TokenType.Property, (uint) pTable.Rows.Count);
+
+                       if (property.GetMethod != null)
+                               WriteSemantic (MethodSemanticsAttributes.Getter, property, property.GetMethod);
+
+                       if (property.SetMethod != null)
+                               WriteSemantic (MethodSemanticsAttributes.Setter, property, property.SetMethod);
+
+                       if (property.HasConstant)
+                               WriteConstant (property, property.PropertyType);
+
+                       m_propertyIndex++;
+               }
+
+               public override void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
+               {
+                       if (secDecls.Count == 0)
+                               return;
+
+                       DeclSecurityTable dsTable = m_tableWriter.GetDeclSecurityTable ();
+                       foreach (SecurityDeclaration secDec in secDecls) {
+                               DeclSecurityRow dsRow = m_rowWriter.CreateDeclSecurityRow (
+                                       secDec.Action,
+                                       secDecls.Container.MetadataToken,
+                                       m_mdWriter.AddBlob (secDec.Resolved ?
+                                               m_mod.GetAsByteArray (secDec) : secDec.Blob));
+
+                               dsTable.Rows.Add (dsRow);
+                       }
+               }
+
+               public override void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
+               {
+                       if (customAttrs.Count == 0)
+                               return;
+
+                       CustomAttributeTable caTable = m_tableWriter.GetCustomAttributeTable ();
+                       foreach (CustomAttribute ca in customAttrs) {
+                               MetadataToken parent;
+                               if (customAttrs.Container is AssemblyDefinition)
+                                       parent = new MetadataToken (TokenType.Assembly, 1);
+                               else if (customAttrs.Container is ModuleDefinition)
+                                       parent = new MetadataToken (TokenType.Module, 1);
+                               else if (customAttrs.Container is IMetadataTokenProvider)
+                                       parent = ((IMetadataTokenProvider) customAttrs.Container).MetadataToken;
+                               else
+                                       throw new ReflectionException ("Unknown Custom Attribute parent");
+
+                               uint value = ca.Resolved ?
+                                       m_sigWriter.AddCustomAttribute (GetCustomAttributeSig (ca), ca.Constructor) :
+                                       m_mdWriter.AddBlob (m_mod.GetAsByteArray (ca));
+                               CustomAttributeRow caRow = m_rowWriter.CreateCustomAttributeRow (
+                                       parent,
+                                       GetMemberRefToken (ca.Constructor),
+                                       value);
+
+                               caTable.Rows.Add (caRow);
+                       }
+               }
+
+               public override void VisitMarshalSpec (MarshalSpec marshalSpec)
+               {
+                       FieldMarshalTable fmTable = m_tableWriter.GetFieldMarshalTable ();
+                       FieldMarshalRow fmRow = m_rowWriter.CreateFieldMarshalRow (
+                               marshalSpec.Container.MetadataToken,
+                               m_sigWriter.AddMarshalSig (GetMarshalSig (marshalSpec)));
+
+                       fmTable.Rows.Add (fmRow);
+               }
+
+               void WriteConstant (IHasConstant hc, TypeReference type)
+               {
+                       ConstantTable cTable = m_tableWriter.GetConstantTable ();
+                       ElementType et;
+                       if (type is TypeDefinition && (type as TypeDefinition).IsEnum) {
+                               Type t = hc.Constant.GetType ();
+                               if (t.IsEnum)
+                                       t = Enum.GetUnderlyingType (t);
+
+                               et = GetCorrespondingType (string.Concat (t.Namespace, '.', t.Name));
+                       } else
+                               et = GetCorrespondingType (type.FullName);
+
+                       if (et == ElementType.Object || et == ElementType.Type || et == ElementType.String)
+                               et = hc.Constant == null ?
+                                       ElementType.Class :
+                                       GetCorrespondingType (hc.Constant.GetType ().FullName);
+
+                       ConstantRow cRow = m_rowWriter.CreateConstantRow (
+                               et,
+                               hc.MetadataToken,
+                               m_mdWriter.AddBlob (EncodeConstant (et, hc.Constant)));
+
+                       cTable.Rows.Add (cRow);
+               }
+
+               void WriteLayout (FieldDefinition field)
+               {
+                       FieldLayoutTable flTable = m_tableWriter.GetFieldLayoutTable ();
+                       FieldLayoutRow flRow = m_rowWriter.CreateFieldLayoutRow (
+                               field.Offset,
+                               GetRidFor (field));
+
+                       flTable.Rows.Add (flRow);
+               }
+
+               void WriteLayout (TypeDefinition type)
+               {
+                       ClassLayoutTable clTable = m_tableWriter.GetClassLayoutTable ();
+                       ClassLayoutRow clRow = m_rowWriter.CreateClassLayoutRow (
+                               type.PackingSize,
+                               type.ClassSize,
+                               GetRidFor (type));
+
+                       clTable.Rows.Add (clRow);
+               }
+
+               void WriteSemantic (MethodSemanticsAttributes attrs,
+                       IMetadataTokenProvider member, MethodDefinition meth)
+               {
+                       MethodSemanticsTable msTable = m_tableWriter.GetMethodSemanticsTable ();
+                       MethodSemanticsRow msRow = m_rowWriter.CreateMethodSemanticsRow (
+                               attrs,
+                               GetRidFor (meth),
+                               member.MetadataToken);
+
+                       msTable.Rows.Add (msRow);
+               }
+
+               void SortTables ()
+               {
+                       TablesHeap th = m_mdWriter.GetMetadataRoot ().Streams.TablesHeap;
+                       th.Sorted = 0;
+
+                       if (th.HasTable (NestedClassTable.RId))
+                               m_tableWriter.GetNestedClassTable ().Rows.Sort (
+                                       TableComparers.NestedClass.Instance);
+                       th.Sorted |= ((long) 1 << NestedClassTable.RId);
+
+                       if (th.HasTable (InterfaceImplTable.RId))
+                               m_tableWriter.GetInterfaceImplTable ().Rows.Sort (
+                                       TableComparers.InterfaceImpl.Instance);
+                       th.Sorted |= ((long) 1 << InterfaceImplTable.RId);
+
+                       if (th.HasTable (ConstantTable.RId))
+                               m_tableWriter.GetConstantTable ().Rows.Sort (
+                                       TableComparers.Constant.Instance);
+                       th.Sorted |= ((long) 1 << ConstantTable.RId);
+
+                       if (th.HasTable (MethodSemanticsTable.RId))
+                               m_tableWriter.GetMethodSemanticsTable ().Rows.Sort (
+                                       TableComparers.MethodSem.Instance);
+                       th.Sorted |= ((long) 1 << MethodSemanticsTable.RId);
+
+                       if (th.HasTable (FieldMarshalTable.RId))
+                               m_tableWriter.GetFieldMarshalTable ().Rows.Sort (
+                                       TableComparers.FieldMarshal.Instance);
+                       th.Sorted |= ((long) 1 << FieldMarshalTable.RId);
+
+                       if (th.HasTable (ClassLayoutTable.RId))
+                               m_tableWriter.GetClassLayoutTable ().Rows.Sort (
+                                       TableComparers.TypeLayout.Instance);
+                       th.Sorted |= ((long) 1 << ClassLayoutTable.RId);
+
+                       if (th.HasTable (FieldLayoutTable.RId))
+                               m_tableWriter.GetFieldLayoutTable ().Rows.Sort (
+                                       TableComparers.FieldLayout.Instance);
+                       th.Sorted |= ((long) 1 << FieldLayoutTable.RId);
+
+                       if (th.HasTable (ImplMapTable.RId))
+                               m_tableWriter.GetImplMapTable ().Rows.Sort (
+                                       TableComparers.PInvoke.Instance);
+                       th.Sorted |= ((long) 1 << ImplMapTable.RId);
+
+                       if (th.HasTable (FieldRVATable.RId))
+                               m_tableWriter.GetFieldRVATable ().Rows.Sort (
+                                       TableComparers.FieldRVA.Instance);
+                       th.Sorted |= ((long) 1 << FieldRVATable.RId);
+
+                       if (th.HasTable (MethodImplTable.RId))
+                               m_tableWriter.GetMethodImplTable ().Rows.Sort (
+                                       TableComparers.Override.Instance);
+                       th.Sorted |= ((long) 1 << MethodImplTable.RId);
+
+                       if (th.HasTable (CustomAttributeTable.RId))
+                               m_tableWriter.GetCustomAttributeTable ().Rows.Sort (
+                                       TableComparers.CustomAttribute.Instance);
+                       th.Sorted |= ((long) 1 << CustomAttributeTable.RId);
+
+                       if (th.HasTable (DeclSecurityTable.RId))
+                               m_tableWriter.GetDeclSecurityTable ().Rows.Sort (
+                                       TableComparers.SecurityDeclaration.Instance);
+                       th.Sorted |= ((long) 1 << DeclSecurityTable.RId);
+               }
+
+               void CompleteGenericTables ()
+               {
+                       if (m_genericParamStack.Count == 0)
+                               return;
+
+                       TablesHeap th = m_mdWriter.GetMetadataRoot ().Streams.TablesHeap;
+                       GenericParamTable gpTable = m_tableWriter.GetGenericParamTable ();
+
+                       m_genericParamStack.Sort (TableComparers.GenericParam.Instance);
+
+                       foreach (GenericParameter gp in m_genericParamStack) {
+                               GenericParamRow gpRow = m_rowWriter.CreateGenericParamRow (
+                                       (ushort) gp.Owner.GenericParameters.IndexOf (gp),
+                                       gp.Attributes,
+                                       gp.Owner.MetadataToken,
+                                       m_mdWriter.AddString (gp.Name));
+
+                               gpTable.Rows.Add (gpRow);
+                               gp.MetadataToken = new MetadataToken (TokenType.GenericParam, (uint) gpTable.Rows.Count);
+
+                               if (gp.HasCustomAttributes)
+                                       VisitCustomAttributeCollection (gp.CustomAttributes);
+
+                               if (!gp.HasConstraints)
+                                       continue;
+
+                               GenericParamConstraintTable gpcTable = m_tableWriter.GetGenericParamConstraintTable ();
+
+                               foreach (TypeReference constraint in gp.Constraints) {
+                                       GenericParamConstraintRow gpcRow = m_rowWriter.CreateGenericParamConstraintRow (
+                                               (uint) gpTable.Rows.Count,
+                                               GetTypeDefOrRefToken (constraint));
+
+                                       gpcTable.Rows.Add (gpcRow);
+                               }
+                       }
+
+                       th.Sorted |= ((long) 1 << GenericParamTable.RId);
+                       th.Sorted |= ((long) 1 << GenericParamConstraintTable.RId);
+               }
+
+               public override void TerminateModuleDefinition (ModuleDefinition module)
+               {
+                       if (module.Assembly.HasCustomAttributes)
+                               VisitCustomAttributeCollection (module.Assembly.CustomAttributes);
+                       if (module.Assembly.HasSecurityDeclarations)
+                               VisitSecurityDeclarationCollection (module.Assembly.SecurityDeclarations);
+                       if (module.HasCustomAttributes)
+                               VisitCustomAttributeCollection (module.CustomAttributes);
+
+                       if (module.ExternTypes.Count > 0)
+                               VisitExternTypeCollection (module.ExternTypes);
+
+                       CompleteGenericTables ();
+                       SortTables ();
+
+                       MethodTable mTable = m_tableWriter.GetMethodTable ();
+                       for (int i = 0; i < m_methodStack.Count; i++) {
+                               MethodDefinition meth = (MethodDefinition) m_methodStack [i];
+                               if (meth.HasBody)
+                                       mTable [i].RVA = m_codeWriter.WriteMethodBody (meth);
+                       }
+
+                       if (m_fieldStack.Count > 0) {
+                               FieldRVATable frTable = null;
+                               foreach (FieldDefinition field in m_fieldStack) {
+                                       if (field.InitialValue != null && field.InitialValue.Length > 0) {
+                                               if (frTable == null)
+                                                       frTable = m_tableWriter.GetFieldRVATable ();
+
+                                               FieldRVARow frRow = m_rowWriter.CreateFieldRVARow (
+                                                       m_mdWriter.GetDataCursor (),
+                                                       field.MetadataToken.RID);
+
+                                               m_mdWriter.AddData (field.InitialValue.Length + 3 & (~3));
+                                               m_mdWriter.AddFieldInitData (field.InitialValue);
+
+                                               frTable.Rows.Add (frRow);
+                                       }
+                               }
+                       }
+
+                       if (m_symbolWriter != null)
+                               m_symbolWriter.Dispose ();
+
+                       if (m_mod.Assembly.EntryPoint != null)
+                               m_mdWriter.EntryPointToken =
+                                       ((uint) TokenType.Method) | GetRidFor (m_mod.Assembly.EntryPoint);
+
+                       m_mod.Image.MetadataRoot.Accept (m_mdWriter);
+               }
+
+               public static ElementType GetCorrespondingType (string fullName)
+               {
+                       switch (fullName) {
+                       case Constants.Boolean :
+                               return ElementType.Boolean;
+                       case Constants.Char :
+                               return ElementType.Char;
+                       case Constants.SByte :
+                               return ElementType.I1;
+                       case Constants.Int16 :
+                               return ElementType.I2;
+                       case Constants.Int32 :
+                               return ElementType.I4;
+                       case Constants.Int64 :
+                               return ElementType.I8;
+                       case Constants.Byte :
+                               return ElementType.U1;
+                       case Constants.UInt16 :
+                               return ElementType.U2;
+                       case Constants.UInt32 :
+                               return ElementType.U4;
+                       case Constants.UInt64 :
+                               return ElementType.U8;
+                       case Constants.Single :
+                               return ElementType.R4;
+                       case Constants.Double :
+                               return ElementType.R8;
+                       case Constants.String :
+                               return ElementType.String;
+                       case Constants.Type :
+                               return ElementType.Type;
+                       case Constants.Object :
+                               return ElementType.Object;
+                       default:
+                               return ElementType.Class;
+                       }
+               }
+
+               byte [] EncodeConstant (ElementType et, object value)
+               {
+                       m_constWriter.Empty ();
+
+                       if (value == null)
+                               et = ElementType.Class;
+
+                       IConvertible ic = value as IConvertible;
+                       IFormatProvider fp = CultureInfo.CurrentCulture.NumberFormat;
+
+                       switch (et) {
+                       case ElementType.Boolean :
+                               m_constWriter.Write ((byte) (ic.ToBoolean (fp) ? 1 : 0));
+                               break;
+                       case ElementType.Char :
+                               m_constWriter.Write ((ushort) ic.ToChar (fp));
+                               break;
+                       case ElementType.I1 :
+                               m_constWriter.Write (ic.ToSByte (fp));
+                               break;
+                       case ElementType.I2 :
+                               m_constWriter.Write (ic.ToInt16 (fp));
+                               break;
+                       case ElementType.I4 :
+                               m_constWriter.Write (ic.ToInt32 (fp));
+                               break;
+                       case ElementType.I8 :
+                               m_constWriter.Write (ic.ToInt64 (fp));
+                               break;
+                       case ElementType.U1 :
+                               m_constWriter.Write (ic.ToByte (fp));
+                               break;
+                       case ElementType.U2 :
+                               m_constWriter.Write (ic.ToUInt16 (fp));
+                               break;
+                       case ElementType.U4 :
+                               m_constWriter.Write (ic.ToUInt32 (fp));
+                               break;
+                       case ElementType.U8 :
+                               m_constWriter.Write (ic.ToUInt64 (fp));
+                               break;
+                       case ElementType.R4 :
+                               m_constWriter.Write (ic.ToSingle (fp));
+                               break;
+                       case ElementType.R8 :
+                               m_constWriter.Write (ic.ToDouble (fp));
+                               break;
+                       case ElementType.String :
+                               m_constWriter.Write (Encoding.Unicode.GetBytes ((string) value));
+                               break;
+                       case ElementType.Class :
+                               m_constWriter.Write (new byte [4]);
+                               break;
+                       default :
+                               throw new ArgumentException ("Non valid element for a constant");
+                       }
+
+                       return m_constWriter.ToArray ();
+               }
+
+               public SigType GetSigType (TypeReference type)
+               {
+                       string name = type.FullName;
+
+                       switch (name) {
+                       case Constants.Void :
+                               return new SigType (ElementType.Void);
+                       case Constants.Object :
+                               return new SigType (ElementType.Object);
+                       case Constants.Boolean :
+                               return new SigType (ElementType.Boolean);
+                       case Constants.String :
+                               return new SigType (ElementType.String);
+                       case Constants.Char :
+                               return new SigType (ElementType.Char);
+                       case Constants.SByte :
+                               return new SigType (ElementType.I1);
+                       case Constants.Byte :
+                               return new SigType (ElementType.U1);
+                       case Constants.Int16 :
+                               return new SigType (ElementType.I2);
+                       case Constants.UInt16 :
+                               return new SigType (ElementType.U2);
+                       case Constants.Int32 :
+                               return new SigType (ElementType.I4);
+                       case Constants.UInt32 :
+                               return new SigType (ElementType.U4);
+                       case Constants.Int64 :
+                               return new SigType (ElementType.I8);
+                       case Constants.UInt64 :
+                               return new SigType (ElementType.U8);
+                       case Constants.Single :
+                               return new SigType (ElementType.R4);
+                       case Constants.Double :
+                               return new SigType (ElementType.R8);
+                       case Constants.IntPtr :
+                               return new SigType (ElementType.I);
+                       case Constants.UIntPtr :
+                               return new SigType (ElementType.U);
+                       case Constants.TypedReference :
+                               return new SigType (ElementType.TypedByRef);
+                       }
+
+                       if (type is GenericParameter) {
+                               GenericParameter gp = type as GenericParameter;
+                               int pos = gp.Owner.GenericParameters.IndexOf (gp);
+                               if (gp.Owner is TypeReference)
+                                       return new VAR (pos);
+                               else if (gp.Owner is MethodReference)
+                                       return new MVAR (pos);
+                               else
+                                       throw new ReflectionException ("Unkown generic parameter type");
+                       } else if (type is GenericInstanceType) {
+                               GenericInstanceType git = type as GenericInstanceType;
+                               GENERICINST gi = new GENERICINST ();
+                               gi.ValueType = git.IsValueType;
+                               gi.Type = GetTypeDefOrRefToken (git.ElementType);
+                               gi.Signature = new GenericInstSignature ();
+                               gi.Signature.Arity = git.GenericArguments.Count;
+                               gi.Signature.Types = new GenericArg [gi.Signature.Arity];
+                               for (int i = 0; i < git.GenericArguments.Count; i++)
+                                       gi.Signature.Types [i] = GetGenericArgSig (git.GenericArguments [i]);
+
+                               return gi;
+                       } else if (type is ArrayType) {
+                               ArrayType aryType = type as ArrayType;
+                               if (aryType.IsSizedArray) {
+                                       SZARRAY szary = new SZARRAY ();
+                                       szary.CustomMods = GetCustomMods (aryType.ElementType);
+                                       szary.Type = GetSigType (aryType.ElementType);
+                                       return szary;
+                               }
+
+                               // not optimized
+                               ArrayShape shape = new ArrayShape ();
+                               shape.Rank = aryType.Dimensions.Count;
+                               shape.NumSizes = 0;
+
+                               for (int i = 0; i < shape.Rank; i++) {
+                                       ArrayDimension dim = aryType.Dimensions [i];
+                                       if (dim.UpperBound > 0)
+                                               shape.NumSizes++;
+                               }
+
+                               shape.Sizes = new int [shape.NumSizes];
+                               shape.NumLoBounds = shape.Rank;
+                               shape.LoBounds = new int [shape.NumLoBounds];
+
+                               for (int i = 0; i < shape.Rank; i++) {
+                                       ArrayDimension dim = aryType.Dimensions [i];
+                                       shape.LoBounds [i] = dim.LowerBound;
+                                       if (dim.UpperBound > 0)
+                                               shape.Sizes [i] = dim.UpperBound - dim.LowerBound + 1;
+                               }
+
+                               ARRAY ary = new ARRAY ();
+                               ary.Shape = shape;
+                               ary.CustomMods = GetCustomMods (aryType.ElementType);
+                               ary.Type = GetSigType (aryType.ElementType);
+                               return ary;
+                       } else if (type is PointerType) {
+                               PTR p = new PTR ();
+                               TypeReference elementType = (type as PointerType).ElementType;
+                               p.Void = elementType.FullName == Constants.Void;
+                               if (!p.Void) {
+                                       p.CustomMods = GetCustomMods (elementType);
+                                       p.PtrType = GetSigType (elementType);
+                               }
+                               return p;
+                       } else if (type is FunctionPointerType) {
+                               FNPTR fp = new FNPTR ();
+                               FunctionPointerType fptr = type as FunctionPointerType;
+
+                               int sentinel = fptr.GetSentinel ();
+                               if (sentinel < 0)
+                                       fp.Method = GetMethodDefSig (fptr);
+                               else
+                                       fp.Method = GetMethodRefSig (fptr);
+
+                               return fp;
+                       } else if (type is TypeSpecification) {
+                               return GetSigType ((type as TypeSpecification).ElementType);
+                       } else if (type.IsValueType) {
+                               VALUETYPE vt = new VALUETYPE ();
+                               vt.Type = GetTypeDefOrRefToken (type);
+                               return vt;
+                       } else {
+                               CLASS c = new CLASS ();
+                               c.Type = GetTypeDefOrRefToken (type);
+                               return c;
+                       }
+               }
+
+               public GenericArg GetGenericArgSig (TypeReference type)
+               {
+                       GenericArg arg = new GenericArg (GetSigType (type));
+                       arg.CustomMods = GetCustomMods (type);
+                       return arg;
+               }
+
+               public CustomMod [] GetCustomMods (TypeReference type)
+               {
+                       ModType modifier = type as ModType;
+                       if (modifier == null)
+                               return CustomMod.EmptyCustomMod;
+
+                       ArrayList cmods = new ArrayList ();
+                       do {
+                               CustomMod cmod = new CustomMod ();
+                               cmod.TypeDefOrRef = GetTypeDefOrRefToken (modifier.ModifierType);
+
+                               if (modifier is ModifierOptional)
+                                       cmod.CMOD = CustomMod.CMODType.OPT;
+                               else if (modifier is ModifierRequired)
+                                       cmod.CMOD = CustomMod.CMODType.REQD;
+
+                               cmods.Add (cmod);
+                               modifier = modifier.ElementType as ModType;
+                       } while (modifier != null);
+
+                       return cmods.ToArray (typeof (CustomMod)) as CustomMod [];
+               }
+
+               public Signature GetMemberRefSig (MemberReference member)
+               {
+                       if (member is FieldReference)
+                               return GetFieldSig (member as FieldReference);
+                       else
+                               return GetMemberRefSig (member as MethodReference);
+               }
+
+               public FieldSig GetFieldSig (FieldReference field)
+               {
+                       FieldSig sig = new FieldSig ();
+                       sig.CallingConvention |= 0x6;
+                       sig.Field = true;
+                       sig.CustomMods = GetCustomMods (field.FieldType);
+                       sig.Type = GetSigType (field.FieldType);
+                       return sig;
+               }
+
+               Param [] GetParametersSig (ParameterDefinitionCollection parameters)
+               {
+                       Param [] ret = new Param [parameters.Count];
+                       for (int i = 0; i < ret.Length; i++) {
+                               ParameterDefinition pDef = parameters [i];
+                               Param p = new Param ();
+                               p.CustomMods = GetCustomMods (pDef.ParameterType);
+                               if (pDef.ParameterType.FullName == Constants.TypedReference)
+                                       p.TypedByRef = true;
+                               else if (IsByReferenceType (pDef.ParameterType)) {
+                                       p.ByRef = true;
+                                       p.Type = GetSigType (pDef.ParameterType);
+                               } else
+                                       p.Type = GetSigType (pDef.ParameterType);
+                               ret [i] = p;
+                       }
+                       return ret;
+               }
+
+               void CompleteMethodSig (IMethodSignature meth, MethodSig sig)
+               {
+                       sig.HasThis = meth.HasThis;
+                       sig.ExplicitThis = meth.ExplicitThis;
+                       if (sig.HasThis)
+                               sig.CallingConvention |= 0x20;
+                       if (sig.ExplicitThis)
+                               sig.CallingConvention |= 0x40;
+
+                       if ((meth.CallingConvention & MethodCallingConvention.VarArg) != 0)
+                               sig.CallingConvention |= 0x5;
+
+                       sig.ParamCount = meth.Parameters.Count;
+                       sig.Parameters = GetParametersSig (meth.Parameters);
+
+                       RetType rtSig = new RetType ();
+                       rtSig.CustomMods = GetCustomMods (meth.ReturnType.ReturnType);
+
+                       if (meth.ReturnType.ReturnType.FullName == Constants.Void)
+                               rtSig.Void = true;
+                       else if (meth.ReturnType.ReturnType.FullName == Constants.TypedReference)
+                               rtSig.TypedByRef = true;
+                       else if (IsByReferenceType (meth.ReturnType.ReturnType)) {
+                               rtSig.ByRef = true;
+                               rtSig.Type = GetSigType (meth.ReturnType.ReturnType);
+                       } else
+                               rtSig.Type = GetSigType (meth.ReturnType.ReturnType);
+
+                       sig.RetType = rtSig;
+               }
+
+               static bool IsByReferenceType (TypeReference type)
+               {
+                       TypeSpecification ts = type as TypeSpecification;
+                       while (ts != null) {
+                               if (ts is ReferenceType)
+                                       return true;
+                               ts = ts.ElementType as TypeSpecification;
+                       }
+                       return false;
+               }
+
+               public MethodRefSig GetMethodRefSig (IMethodSignature meth)
+               {
+                       MethodReference methodRef = meth as MethodReference;
+                       if (methodRef != null && methodRef.GenericParameters.Count > 0)
+                               return GetMethodDefSig (meth);
+
+                       MethodRefSig methSig = new MethodRefSig ();
+
+                       CompleteMethodSig (meth, methSig);
+
+                       int sentinel = meth.GetSentinel ();
+                       if (sentinel >= 0)
+                               methSig.Sentinel = sentinel;
+
+                       if ((meth.CallingConvention & MethodCallingConvention.C) != 0)
+                               methSig.CallingConvention |= 0x1;
+                       else if ((meth.CallingConvention & MethodCallingConvention.StdCall) != 0)
+                               methSig.CallingConvention |= 0x2;
+                       else if ((meth.CallingConvention & MethodCallingConvention.ThisCall) != 0)
+                               methSig.CallingConvention |= 0x3;
+                       else if ((meth.CallingConvention & MethodCallingConvention.FastCall) != 0)
+                               methSig.CallingConvention |= 0x4;
+
+                       return methSig;
+               }
+
+               public MethodDefSig GetMethodDefSig (IMethodSignature meth)
+               {
+                       MethodDefSig sig = new MethodDefSig ();
+
+                       CompleteMethodSig (meth, sig);
+
+                       MethodReference methodRef = meth as MethodReference;
+                       if (methodRef != null && methodRef.GenericParameters.Count > 0) {
+                               sig.CallingConvention |= 0x10;
+                               sig.GenericParameterCount = methodRef.GenericParameters.Count;
+                       }
+
+                       return sig;
+               }
+
+               public PropertySig GetPropertySig (PropertyDefinition prop)
+               {
+                       PropertySig ps = new PropertySig ();
+                       ps.CallingConvention |= 0x8;
+
+                       bool hasThis;
+                       bool explicitThis;
+                       MethodCallingConvention mcc;
+                       ParameterDefinitionCollection parameters = prop.Parameters;
+
+                       MethodDefinition meth;
+                       if (prop.GetMethod != null)
+                               meth = prop.GetMethod;
+                       else if (prop.SetMethod != null)
+                               meth = prop.SetMethod;
+                       else
+                               meth = null;
+
+                       if (meth != null) {
+                               hasThis = meth.HasThis;
+                               explicitThis = meth.ExplicitThis;
+                               mcc = meth.CallingConvention;
+                       } else {
+                               hasThis = explicitThis = false;
+                               mcc = MethodCallingConvention.Default;
+                       }
+
+                       if (hasThis)
+                               ps.CallingConvention |= 0x20;
+                       if (explicitThis)
+                               ps.CallingConvention |= 0x40;
+
+                       if ((mcc & MethodCallingConvention.VarArg) != 0)
+                               ps.CallingConvention |= 0x5;
+
+                       int paramCount = parameters != null ? parameters.Count : 0;
+
+                       ps.ParamCount = paramCount;
+                       ps.Parameters = GetParametersSig (parameters);
+                       ps.CustomMods = GetCustomMods (prop.PropertyType);
+                       ps.Type = GetSigType (prop.PropertyType);
+
+                       return ps;
+               }
+
+               public TypeSpec GetTypeSpecSig (TypeReference type)
+               {
+                       TypeSpec ts = new TypeSpec ();
+                       ts.CustomMods = GetCustomMods (type);
+                       ts.Type = GetSigType (type);
+                       return ts;
+               }
+
+               public MethodSpec GetMethodSpecSig (GenericInstanceMethod gim)
+               {
+                       GenericInstSignature gis = new GenericInstSignature ();
+                       gis.Arity = gim.GenericArguments.Count;
+                       gis.Types = new GenericArg [gis.Arity];
+                       for (int i = 0; i < gis.Arity; i++)
+                               gis.Types [i] = GetGenericArgSig (gim.GenericArguments [i]);
+
+                       return new MethodSpec (gis);
+               }
+
+               static string GetObjectTypeName (object o)
+               {
+                       Type t = o.GetType ();
+                       return string.Concat (t.Namespace, ".", t.Name);
+               }
+
+               static CustomAttrib.Elem CreateElem (TypeReference type, object value)
+               {
+                       CustomAttrib.Elem elem = new CustomAttrib.Elem ();
+                       elem.Value = value;
+                       elem.ElemType = type;
+                       elem.FieldOrPropType = GetCorrespondingType (type.FullName);
+
+                       switch (elem.FieldOrPropType) {
+                       case ElementType.Boolean :
+                       case ElementType.Char :
+                       case ElementType.R4 :
+                       case ElementType.R8 :
+                       case ElementType.I1 :
+                       case ElementType.I2 :
+                       case ElementType.I4 :
+                       case ElementType.I8 :
+                       case ElementType.U1 :
+                       case ElementType.U2 :
+                       case ElementType.U4 :
+                       case ElementType.U8 :
+                               elem.Simple = true;
+                               break;
+                       case ElementType.String:
+                               elem.String = true;
+                               break;
+                       case ElementType.Type:
+                               elem.Type = true;
+                               break;
+                       case ElementType.Object:
+                               elem.BoxedValueType = true;
+                               if (value == null)
+                                       elem.FieldOrPropType = ElementType.String;
+                               else
+                                       elem.FieldOrPropType = GetCorrespondingType (
+                                               GetObjectTypeName (value));
+                               break;
+                       }
+
+                       return elem;
+               }
+
+               static CustomAttrib.FixedArg CreateFixedArg (TypeReference type, object value)
+               {
+                       CustomAttrib.FixedArg fa = new CustomAttrib.FixedArg ();
+                       if (value is object []) {
+                               fa.SzArray = true;
+                               object [] values = value as object [];
+                               TypeReference obj = ((ArrayType) type).ElementType;
+                               fa.NumElem = (uint) values.Length;
+                               fa.Elems = new CustomAttrib.Elem [values.Length];
+                               for (int i = 0; i < values.Length; i++)
+                                       fa.Elems [i] = CreateElem (obj, values [i]);
+                       } else {
+                               fa.Elems = new CustomAttrib.Elem [1];
+                               fa.Elems [0] = CreateElem (type, value);
+                       }
+
+                       return fa;
+               }
+
+               static CustomAttrib.NamedArg CreateNamedArg (TypeReference type, string name,
+                       object value, bool field)
+               {
+                       CustomAttrib.NamedArg na = new CustomAttrib.NamedArg ();
+                       na.Field = field;
+                       na.Property = !field;
+
+                       na.FieldOrPropName = name;
+                       na.FieldOrPropType = GetCorrespondingType (type.FullName);
+                       na.FixedArg = CreateFixedArg (type, value);
+
+                       return na;
+               }
+
+               public static CustomAttrib GetCustomAttributeSig (CustomAttribute ca)
+               {
+                       CustomAttrib cas = new CustomAttrib (ca.Constructor);
+                       cas.Prolog = CustomAttrib.StdProlog;
+
+                       cas.FixedArgs = new CustomAttrib.FixedArg [ca.Constructor.Parameters.Count];
+
+                       for (int i = 0; i < cas.FixedArgs.Length; i++)
+                               cas.FixedArgs [i] = CreateFixedArg (
+                                       ca.Constructor.Parameters [i].ParameterType, ca.ConstructorParameters [i]);
+
+                       int nn = ca.Fields.Count + ca.Properties.Count;
+                       cas.NumNamed = (ushort) nn;
+                       cas.NamedArgs = new CustomAttrib.NamedArg [nn];
+
+                       if (cas.NamedArgs.Length > 0) {
+                               int curs = 0;
+                               foreach (DictionaryEntry entry in ca.Fields) {
+                                       string field = (string) entry.Key;
+                                       cas.NamedArgs [curs++] = CreateNamedArg (
+                                               ca.GetFieldType (field), field, entry.Value, true);
+                               }
+
+                               foreach (DictionaryEntry entry in ca.Properties) {
+                                       string property = (string) entry.Key;
+                                       cas.NamedArgs [curs++] = CreateNamedArg (
+                                               ca.GetPropertyType (property), property, entry.Value, false);
+                               }
+                       }
+
+                       return cas;
+               }
+
+               static MarshalSig GetMarshalSig (MarshalSpec mSpec)
+               {
+                       MarshalSig ms = new MarshalSig (mSpec.NativeIntrinsic);
+
+                       if (mSpec is ArrayMarshalSpec) {
+                               ArrayMarshalSpec amd = mSpec as ArrayMarshalSpec;
+                               MarshalSig.Array ar = new MarshalSig.Array ();
+                               ar.ArrayElemType = amd.ElemType;
+                               ar.NumElem = amd.NumElem;
+                               ar.ParamNum = amd.ParamNum;
+                               ar.ElemMult = amd.ElemMult;
+                               ms.Spec = ar;
+                       } else if (mSpec is CustomMarshalerSpec) {
+                               CustomMarshalerSpec cmd = mSpec as CustomMarshalerSpec;
+                               MarshalSig.CustomMarshaler cm = new MarshalSig.CustomMarshaler ();
+                               cm.Guid = cmd.Guid.ToString ();
+                               cm.UnmanagedType = cmd.UnmanagedType;
+                               cm.ManagedType = cmd.ManagedType;
+                               cm.Cookie = cmd.Cookie;
+                               ms.Spec = cm;
+                       } else if (mSpec is FixedArraySpec) {
+                               FixedArraySpec fad = mSpec as FixedArraySpec;
+                               MarshalSig.FixedArray fa = new MarshalSig.FixedArray ();
+                               fa.ArrayElemType  = fad.ElemType;
+                               fa.NumElem = fad.NumElem;
+                               ms.Spec = fa;
+                       } else if (mSpec is FixedSysStringSpec) {
+                               MarshalSig.FixedSysString fss = new MarshalSig.FixedSysString ();
+                               fss.Size = (mSpec as FixedSysStringSpec).Size;
+                               ms.Spec = fss;
+                       } else if (mSpec is SafeArraySpec) {
+                               MarshalSig.SafeArray sa = new MarshalSig.SafeArray ();
+                               sa.ArrayElemType = (mSpec as SafeArraySpec).ElemType;
+                               ms.Spec = sa;
+                       }
+
+                       return ms;
+               }
+
+               public void WriteSymbols (ModuleDefinition module)
+               {
+                       if (!m_saveSymbols)
+                               return;
+
+                       if (m_asmOutput == null)
+                               m_asmOutput = module.Assembly.Name.Name + "." + (module.Assembly.Kind == AssemblyKind.Dll ? "dll" : "exe");
+
+                       if (m_symbolWriter == null)
+                               m_symbolWriter = SymbolStoreHelper.GetWriter (module, m_asmOutput);
+
+                       foreach (TypeDefinition type in module.Types) {
+                               if (type.HasMethods) {
+                                       foreach (MethodDefinition method in type.Methods)
+                                               WriteSymbols (method);
+                               }
+                               if (type.HasConstructors) {
+                                       foreach (MethodDefinition ctor in type.Constructors)
+                                               WriteSymbols (ctor);
+                               }
+                       }
+
+                       m_symbolWriter.Dispose ();
+               }
+
+               void WriteSymbols (MethodDefinition meth)
+               {
+                       if (!meth.HasBody)
+                               return;
+
+                       m_symbolWriter.Write (meth.Body);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Resource.cs b/mcs/tools/cil-strip/Mono.Cecil/Resource.cs
new file mode 100644 (file)
index 0000000..9c98085
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// Resource.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System.Collections;
+
+       internal abstract class Resource : IAnnotationProvider, IReflectionStructureVisitable {
+
+               string m_name;
+               ManifestResourceAttributes m_attributes;
+               IDictionary m_annotations;
+
+               public string Name {
+                       get { return m_name; }
+                       set { m_name = value; }
+               }
+
+               public ManifestResourceAttributes Flags {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               #region ManifestResourceAttributes
+
+               public bool IsPublic {
+                       get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Public; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
+                                       m_attributes |= ManifestResourceAttributes.Public;
+                               } else
+                                       m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Public);
+                       }
+               }
+
+               public bool IsPrivate {
+                       get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
+                                       m_attributes |= ManifestResourceAttributes.Private;
+                               } else
+                                       m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Private);
+                       }
+               }
+
+               #endregion
+
+               internal Resource (string name, ManifestResourceAttributes attributes)
+               {
+                       m_name = name;
+                       m_attributes = attributes;
+               }
+
+               public abstract void Accept (IReflectionStructureVisitor visitor);
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs
new file mode 100644 (file)
index 0000000..feadcc9
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// ResourceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Cil;
+
+       internal sealed class ResourceCollection : CollectionBase, IReflectionStructureVisitable {
+
+               ModuleDefinition m_container;
+
+               public Resource this [int index] {
+                       get { return List [index] as Resource; }
+                       set { List [index] = value; }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public ResourceCollection (ModuleDefinition container)
+               {
+                       m_container = container;
+               }
+
+               public void Add (Resource value)
+               {
+                       List.Add (value);
+               }
+
+               public bool Contains (Resource value)
+               {
+                       return List.Contains (value);
+               }
+
+               public int IndexOf (Resource value)
+               {
+                       return List.IndexOf (value);
+               }
+
+               public void Insert (int index, Resource value)
+               {
+                       List.Insert (index, value);
+               }
+
+               public void Remove (Resource value)
+               {
+                       List.Remove (value);
+               }
+
+               protected override void OnValidate (object o)
+               {
+                       if (! (o is Resource))
+                               throw new ArgumentException ("Must be of type " + typeof (Resource).FullName);
+               }
+
+               public void Accept (IReflectionStructureVisitor visitor)
+               {
+                       visitor.VisitResourceCollection (this);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs
new file mode 100644 (file)
index 0000000..3f1be07
--- /dev/null
@@ -0,0 +1,48 @@
+//
+// SecurityAction.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum SecurityAction : short {
+               Request = 1,
+               Demand = 2,
+               Assert = 3,
+               Deny = 4,
+               PermitOnly = 5,
+               LinkDemand = 6,
+               InheritDemand = 7,
+               RequestMinimum = 8,
+               RequestOptional = 9,
+               RequestRefuse = 10,
+               PreJitGrant = 11,
+               PreJitDeny = 12,
+               NonCasDemand = 13,
+               NonCasLinkDemand = 14,
+               NonCasInheritance = 15
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs
new file mode 100644 (file)
index 0000000..8bda63d
--- /dev/null
@@ -0,0 +1,136 @@
+//
+// SecurityDeclaration.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Security;
+
+       internal sealed class SecurityDeclaration : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+
+               SecurityAction m_action;
+               SecurityDeclarationReader m_reader;
+               IDictionary m_annotations;
+
+#if !CF_1_0 && !CF_2_0
+               PermissionSet m_permSet;
+#endif
+
+               bool m_resolved;
+               byte [] m_blob;
+
+               public SecurityAction Action {
+                       get { return m_action; }
+                       set { m_action = value; }
+               }
+
+#if !CF_1_0 && !CF_2_0
+               public PermissionSet PermissionSet {
+                       get { return m_permSet; }
+                       set { m_permSet = value; }
+               }
+#endif
+
+               public bool Resolved {
+                       get { return m_resolved; }
+                       set { m_resolved = value; }
+               }
+
+               public byte [] Blob {
+                       get { return m_blob; }
+                       set { m_blob = value; }
+               }
+
+               IDictionary IAnnotationProvider.Annotations {
+                       get {
+                               if (m_annotations == null)
+                                       m_annotations = new Hashtable ();
+                               return m_annotations;
+                       }
+               }
+
+               public SecurityDeclaration (SecurityAction action)
+               {
+                       m_action = action;
+               }
+
+               internal SecurityDeclaration (SecurityAction action, SecurityDeclarationReader reader)
+               {
+                       m_action = action;
+                       m_reader = reader;
+               }
+
+               public SecurityDeclaration Clone ()
+               {
+                       return Clone (this);
+               }
+
+               internal static SecurityDeclaration Clone (SecurityDeclaration sec)
+               {
+                       SecurityDeclaration sd = new SecurityDeclaration (sec.Action);
+                       if (!sec.Resolved) {
+                               sd.Resolved = false;
+                               sd.Blob = sec.Blob;
+                               return sd;
+                       }
+
+#if !CF_1_0 && !CF_2_0
+            sd.PermissionSet = sec.PermissionSet.Copy ();
+#endif
+                       return sd;
+               }
+
+               public bool Resolve ()
+               {
+                       if (m_resolved)
+                               return true;
+
+                       if (m_reader == null)
+                               return false;
+
+                       SecurityDeclaration clone = m_reader.FromByteArray (m_action, m_blob, true);
+                       if (!clone.Resolved)
+                               return false;
+
+                       m_action = clone.Action;
+#if !CF_1_0 && !CF_2_0
+                       m_permSet = clone.PermissionSet.Copy ();
+#endif
+                       m_resolved = true;
+
+                       return true;
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitSecurityDeclaration (this);
+               }
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs
new file mode 100644 (file)
index 0000000..e5565e7
--- /dev/null
@@ -0,0 +1,157 @@
+//
+// SecurityDeclarationCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       internal sealed class SecurityDeclarationCollection : IReflectionVisitable, IEnumerable {
+
+               IDictionary m_items;
+               IHasSecurity m_container;
+
+               public SecurityDeclaration this [int index] {
+                       get { return m_items [index] as SecurityDeclaration; }
+                       set { m_items [index] = value; }
+               }
+
+               public SecurityDeclaration this [SecurityAction action] {
+                       get { return m_items [action] as SecurityDeclaration; }
+                       set { m_items [action] = value; }
+               }
+
+               public IHasSecurity Container {
+                       get { return m_container; }
+               }
+
+               public int Count {
+                       get { return m_items.Count; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               public SecurityDeclarationCollection (IHasSecurity container)
+               {
+                       m_container = container;
+                       m_items = new Hashtable ();
+               }
+
+               public void Add (SecurityDeclaration value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       // Each action can only be added once so...
+                       SecurityDeclaration current = (SecurityDeclaration) m_items[value.Action];
+                       if (current != null) {
+                               // ... further additions are transformed into unions
+#if !CF_1_0 && !CF_2_0
+                current.PermissionSet = current.PermissionSet.Union (value.PermissionSet);
+#endif
+                       } else {
+                               m_items.Add (value.Action, value);
+                               SetHasSecurity (true);
+                       }
+               }
+
+               public void Clear ()
+               {
+                       m_items.Clear ();
+                       SetHasSecurity (false);
+               }
+
+               public bool Contains (SecurityAction action)
+               {
+                       return (m_items [action] != null);
+               }
+
+               public bool Contains (SecurityDeclaration value)
+               {
+                       if (value == null)
+                               return (m_items.Count == 0);
+
+                       SecurityDeclaration item = (SecurityDeclaration) m_items[value.Action];
+                       if (item == null)
+                               return false;
+
+#if !CF_1_0 && !CF_2_0
+                       return value.PermissionSet.IsSubsetOf (item.PermissionSet);
+#else
+            // XXX For CF, this concept does not exist--so always be true
+            return true;
+#endif
+               }
+
+               public void Remove (SecurityAction action)
+               {
+                       m_items.Remove (action);
+                       SetHasSecurity (this.Count > 0);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       m_items.Values.CopyTo (ary, index);
+               }
+
+               public IEnumerator GetEnumerator ()
+               {
+                       return m_items.Values.GetEnumerator ();
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitSecurityDeclarationCollection (this);
+               }
+
+               private void SetHasSecurity (bool value)
+               {
+                       TypeDefinition td = (m_container as TypeDefinition);
+                       if (td != null) {
+                               if (value)
+                                       td.Attributes |= TypeAttributes.HasSecurity;
+                               else
+                                       td.Attributes &= ~TypeAttributes.HasSecurity;
+                               return;
+                       }
+                       MethodDefinition md = (m_container as MethodDefinition);
+                       if (md != null) {
+                               if (value)
+                                       md.Attributes |= MethodAttributes.HasSecurity;
+                               else
+                                       md.Attributes &= ~MethodAttributes.HasSecurity;
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationReader.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationReader.cs
new file mode 100644 (file)
index 0000000..77a0cb9
--- /dev/null
@@ -0,0 +1,171 @@
+//
+// SecurityDeclarationReader.cs
+//
+// Author:
+//     Sebastien Pouliot <sebastien@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.IO;
+       using System.Reflection;
+       using System.Security;
+       using SSP = System.Security.Permissions;
+       using System.Text;
+
+       using Mono.Cecil.Metadata;
+       using Mono.Cecil.Signatures;
+       using Mono.Xml;
+
+       internal sealed class SecurityDeclarationReader {
+
+               private SecurityParser m_parser;
+               private SignatureReader sr;
+
+               public SecurityDeclarationReader (MetadataRoot root, ReflectionReader reader)
+               {
+                       sr = new SignatureReader (root, reader);
+               }
+
+               public SecurityParser Parser {
+                       get {
+                               if (m_parser == null)
+                                       m_parser = new SecurityParser ();
+                               return m_parser;
+                       }
+               }
+
+               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
+               {
+                       return FromByteArray (action, declaration, false);
+               }
+
+               static bool IsEmptyDeclaration (byte [] declaration)
+               {
+                       return declaration == null || declaration.Length == 0 ||
+                               (declaration.Length == 1 && declaration [0] == 0);
+               }
+
+               public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration, bool resolve)
+               {
+                       SecurityDeclaration dec = new SecurityDeclaration (action, this);
+#if !CF_1_0 && !CF_2_0
+                       dec.PermissionSet = new PermissionSet (SSP.PermissionState.None);
+
+                       if (IsEmptyDeclaration (declaration))
+                               return dec;
+
+                       if (declaration[0] == 0x2e) {
+                               // new binary format introduced in 2.0
+                               int pos = 1;
+                               int start;
+                               int numattr = Utilities.ReadCompressedInteger (declaration, pos, out start);
+                               if (numattr == 0)
+                                       return dec;
+
+                               BinaryReader br = new BinaryReader (new MemoryStream (declaration));
+                               for (int i = 0; i < numattr; i++) {
+                                       pos = start;
+                                       SSP.SecurityAttribute sa = CreateSecurityAttribute (action, br, declaration, pos, out start, resolve);
+                                       if (sa == null) {
+                                               dec.Resolved = false;
+                                               dec.Blob = declaration;
+                                               return dec;
+                                       }
+
+                                       try {
+                                               IPermission p = sa.CreatePermission ();
+                                               dec.PermissionSet.AddPermission (p);
+                                       } catch {
+                                               dec.Resolved = false;
+                                               dec.Blob = declaration;
+                                               return dec;
+                                       }
+                               }
+
+                               dec.Resolved = true;
+                       } else {
+                               Parser.LoadXml (Encoding.Unicode.GetString (declaration));
+                               try {
+                                       dec.PermissionSet.FromXml (Parser.ToXml ());
+                                       dec.PermissionSet.ToXml ();
+                                       dec.Resolved = true;
+                               } catch {
+                                       dec.Resolved = false;
+                                       dec.Blob = declaration;
+                               }
+                       }
+#endif
+                       return dec;
+               }
+
+#if !CF_1_0 && !CF_2_0
+               private SSP.SecurityAttribute CreateSecurityAttribute (SecurityAction action, BinaryReader br, byte [] permset, int pos, out int start, bool resolve)
+               {
+                       string cname = SignatureReader.ReadUTF8String (permset, pos, out start);
+                       Type secattr = null;
+
+                       // note: the SecurityAction parameter isn't important to generate the XML
+                       SSP.SecurityAttribute sa = null;
+                       try {
+                               secattr = Type.GetType (cname, false);
+                               if (secattr == null)
+                                       return null;
+
+                               sa = Activator.CreateInstance (secattr, new object [] {(SSP.SecurityAction) action}) as SSP.SecurityAttribute;
+                       } catch {}
+
+                       if (sa == null)
+                               return null;
+
+                       // encoded length of all parameters (we don't need the value - except the updated pos)
+                       Utilities.ReadCompressedInteger (permset, start, out pos);
+                       int numparams = Utilities.ReadCompressedInteger (permset, pos, out start);
+                       if (numparams == 0)
+                               return sa;
+
+                       br.BaseStream.Position = start;
+                       for (int j = 0; j < numparams; j++) {
+                               bool read = true;
+                               CustomAttrib.NamedArg na = sr.ReadNamedArg (permset, br, ref read, resolve);
+                               if (!read)
+                                       return null;
+
+                               if (na.Field) {
+                                       FieldInfo fi = secattr.GetField (na.FieldOrPropName);
+                                       fi.SetValue (sa, na.FixedArg.Elems[0].Value);
+                               } else if (na.Property) {
+                                       PropertyInfo pi = secattr.GetProperty (na.FieldOrPropName);
+                                       pi.SetValue (sa, na.FixedArg.Elems[0].Value, null);
+                               }
+                       }
+
+                       start = (int) br.BaseStream.Position;
+
+                       return sa;
+               }
+#endif
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs b/mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs
new file mode 100644 (file)
index 0000000..9509089
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// SentinelType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class SentinelType : TypeSpecification {
+
+               public SentinelType (TypeReference elementType) : base (elementType)
+               {
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/StructureReader.cs b/mcs/tools/cil-strip/Mono.Cecil/StructureReader.cs
new file mode 100644 (file)
index 0000000..6085cdb
--- /dev/null
@@ -0,0 +1,277 @@
+//
+// StructureReader.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.IO;
+
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class StructureReader : BaseStructureVisitor {
+
+               ImageReader m_ir;
+               Image m_img;
+               bool m_manifestOnly;
+               AssemblyDefinition m_asmDef;
+               ModuleDefinition m_module;
+               MetadataStreamCollection m_streams;
+               TablesHeap m_tHeap;
+               MetadataTableReader m_tableReader;
+
+               public bool ManifestOnly {
+                       get { return m_manifestOnly; }
+               }
+
+               public ImageReader ImageReader {
+                       get { return m_ir; }
+               }
+
+               public Image Image {
+                       get { return m_img; }
+               }
+
+               public StructureReader (ImageReader ir)
+               {
+                       if (ir.Image.CLIHeader == null)
+                               throw new ImageFormatException ("The image is not a managed assembly");
+
+                       m_ir = ir;
+                       m_img = ir.Image;
+                       m_streams = m_img.MetadataRoot.Streams;
+                       m_tHeap = m_streams.TablesHeap;
+                       m_tableReader = ir.MetadataReader.TableReader;
+               }
+
+               public StructureReader (ImageReader ir, bool manifestOnly) : this (ir)
+               {
+                       m_manifestOnly = manifestOnly;
+               }
+
+               byte [] ReadBlob (uint pointer)
+               {
+                       if (pointer == 0)
+                               return new byte [0];
+
+                       return m_streams.BlobHeap.Read (pointer);
+               }
+
+               string ReadString (uint pointer)
+               {
+                       return m_streams.StringsHeap [pointer];
+               }
+
+               public override void VisitAssemblyDefinition (AssemblyDefinition asm)
+               {
+                       if (!m_tHeap.HasTable (AssemblyTable.RId))
+                               throw new ReflectionException ("No assembly manifest");
+
+                       asm.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
+                       m_asmDef = asm;
+
+                       switch (m_img.MetadataRoot.Header.Version) {
+                       case "v1.0.3705" :
+                               asm.Runtime = TargetRuntime.NET_1_0;
+                               break;
+                       case "v1.1.4322" :
+                               asm.Runtime = TargetRuntime.NET_1_1;
+                               break;
+                       case "v2.0.50727":
+                               asm.Runtime = TargetRuntime.NET_2_0;
+                               break;
+                       case "v4.0.30319" :
+                               asm.Runtime = TargetRuntime.NET_4_0;
+                               break;
+                       }
+
+                       if ((m_img.PEFileHeader.Characteristics & ImageCharacteristics.Dll) != 0)
+                               asm.Kind = AssemblyKind.Dll;
+                       else if (m_img.PEOptionalHeader.NTSpecificFields.SubSystem == SubSystem.WindowsGui ||
+                               m_img.PEOptionalHeader.NTSpecificFields.SubSystem == SubSystem.WindowsCeGui)
+                               asm.Kind = AssemblyKind.Windows;
+                       else
+                               asm.Kind = AssemblyKind.Console;
+               }
+
+               public override void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
+               {
+                       AssemblyTable atable = m_tableReader.GetAssemblyTable ();
+                       AssemblyRow arow = atable [0];
+                       name.Name = ReadString (arow.Name);
+                       name.Flags = arow.Flags;
+                       name.PublicKey = ReadBlob (arow.PublicKey);
+
+                       name.Culture = ReadString (arow.Culture);
+                       name.Version = new Version (
+                               arow.MajorVersion, arow.MinorVersion,
+                               arow.BuildNumber, arow.RevisionNumber);
+                       name.HashAlgorithm = arow.HashAlgId;
+                       name.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
+               }
+
+               public override void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
+               {
+                       if (!m_tHeap.HasTable (AssemblyRefTable.RId))
+                               return;
+
+                       AssemblyRefTable arTable = m_tableReader.GetAssemblyRefTable ();
+                       for (int i = 0; i < arTable.Rows.Count; i++) {
+                               AssemblyRefRow arRow = arTable [i];
+                               AssemblyNameReference aname = new AssemblyNameReference (
+                                       ReadString (arRow.Name),
+                                       ReadString (arRow.Culture),
+                                       new Version (arRow.MajorVersion, arRow.MinorVersion,
+                                                                arRow.BuildNumber, arRow.RevisionNumber));
+                               aname.PublicKeyToken = ReadBlob (arRow.PublicKeyOrToken);
+                               aname.Hash = ReadBlob (arRow.HashValue);
+                               aname.Flags = arRow.Flags;
+                               aname.MetadataToken = new MetadataToken (TokenType.AssemblyRef, (uint) i + 1);
+                               names.Add (aname);
+                       }
+               }
+
+               public override void VisitResourceCollection (ResourceCollection resources)
+               {
+                       if (!m_tHeap.HasTable (ManifestResourceTable.RId))
+                               return;
+
+                       ManifestResourceTable mrTable = m_tableReader.GetManifestResourceTable ();
+                       FileTable fTable = m_tableReader.GetFileTable ();
+
+                       for (int i = 0; i < mrTable.Rows.Count; i++) {
+                               ManifestResourceRow mrRow = mrTable [i];
+                               if (mrRow.Implementation.RID == 0) {
+                                       EmbeddedResource eres = new EmbeddedResource (
+                                               ReadString (mrRow.Name), mrRow.Flags);
+
+                                       BinaryReader br = m_ir.MetadataReader.GetDataReader (
+                                               m_img.CLIHeader.Resources.VirtualAddress);
+                                       br.BaseStream.Position += mrRow.Offset;
+
+                                       eres.Data = br.ReadBytes (br.ReadInt32 ());
+
+                                       resources.Add (eres);
+                                       continue;
+                               }
+
+                               switch (mrRow.Implementation.TokenType) {
+                               case TokenType.File :
+                                       FileRow fRow = fTable [(int) mrRow.Implementation.RID - 1];
+                                       LinkedResource lres = new LinkedResource (
+                                               ReadString (mrRow.Name), mrRow.Flags,
+                                               ReadString (fRow.Name));
+                                       lres.Hash = ReadBlob (fRow.HashValue);
+                                       resources.Add (lres);
+                                       break;
+                               case TokenType.AssemblyRef :
+                                       AssemblyNameReference asm =
+                                               m_module.AssemblyReferences [(int) mrRow.Implementation.RID - 1];
+                                       AssemblyLinkedResource alr = new AssemblyLinkedResource (
+                                               ReadString (mrRow.Name),
+                                               mrRow.Flags, asm);
+                                       resources.Add (alr);
+                                       break;
+                               }
+                       }
+               }
+
+               public override void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
+               {
+                       ModuleTable mt = m_tableReader.GetModuleTable ();
+                       if (mt == null || mt.Rows.Count != 1)
+                               throw new ReflectionException ("Can not read main module");
+
+                       ModuleRow mr = mt [0];
+                       string name = ReadString (mr.Name);
+                       ModuleDefinition main = new ModuleDefinition (name, m_asmDef, this, true);
+                       main.Mvid = m_streams.GuidHeap [mr.Mvid];
+                       main.MetadataToken = new MetadataToken (TokenType.Module, 1);
+                       modules.Add (main);
+                       m_module = main;
+                       m_module.Accept (this);
+
+                       FileTable ftable = m_tableReader.GetFileTable ();
+                       if (ftable == null || ftable.Rows.Count == 0)
+                               return;
+
+                       foreach (FileRow frow in ftable.Rows) {
+                               if (frow.Flags != FileAttributes.ContainsMetaData)
+                                       continue;
+
+                               name = ReadString (frow.Name);
+                               FileInfo location = new FileInfo (
+                                       m_img.FileInformation != null ? Path.Combine (m_img.FileInformation.DirectoryName, name) : name);
+                               if (!File.Exists (location.FullName))
+                                       throw new FileNotFoundException ("Module not found : " + name);
+
+                               try {
+                                       ImageReader module = ImageReader.Read (location.FullName);
+                                       mt = module.Image.MetadataRoot.Streams.TablesHeap [ModuleTable.RId] as ModuleTable;
+                                       if (mt == null || mt.Rows.Count != 1)
+                                               throw new ReflectionException ("Can not read module : " + name);
+
+                                       mr = mt [0];
+                                       ModuleDefinition modext = new ModuleDefinition (name, m_asmDef,
+                                               new StructureReader (module, m_manifestOnly), false);
+                                       modext.Mvid = module.Image.MetadataRoot.Streams.GuidHeap [mr.Mvid];
+
+                                       modules.Add (modext);
+                                       modext.Accept (this);
+                               } catch (ReflectionException) {
+                                       throw;
+                               } catch (Exception e) {
+                                       throw new ReflectionException ("Can not read module : " + name, e);
+                               }
+                       }
+               }
+
+               public override void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
+               {
+                       if (!m_tHeap.HasTable (ModuleRefTable.RId))
+                               return;
+
+                       ModuleRefTable mrTable = m_tableReader.GetModuleRefTable ();
+                       for (int i = 0; i < mrTable.Rows.Count; i++) {
+                               ModuleRefRow mrRow = mrTable [i];
+                               ModuleReference mod = new ModuleReference (ReadString (mrRow.Name));
+                               mod.MetadataToken = MetadataToken.FromMetadataRow (TokenType.ModuleRef, i);
+                               modules.Add (mod);
+                       }
+               }
+
+               public override void TerminateAssemblyDefinition (AssemblyDefinition asm)
+               {
+                       if (m_manifestOnly)
+                               return;
+
+                       foreach (ModuleDefinition mod in asm.Modules)
+                               mod.Controller.Reader.VisitModuleDefinition (mod);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/StructureWriter.cs b/mcs/tools/cil-strip/Mono.Cecil/StructureWriter.cs
new file mode 100644 (file)
index 0000000..b2a4330
--- /dev/null
@@ -0,0 +1,248 @@
+//
+// StructureWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.IO;
+
+       using Mono.Cecil.Binary;
+       using Mono.Cecil.Metadata;
+
+       internal sealed class StructureWriter : BaseStructureVisitor {
+
+               MetadataWriter m_mdWriter;
+               MetadataTableWriter m_tableWriter;
+               MetadataRowWriter m_rowWriter;
+
+               AssemblyDefinition m_asm;
+               BinaryWriter m_binaryWriter;
+
+               public AssemblyDefinition Assembly {
+                       get { return m_asm; }
+               }
+
+               static void ResetImage (ModuleDefinition mod)
+               {
+                       Image ni = Image.CreateImage ();
+                       ni.Accept (new CopyImageVisitor (mod.Image));
+                       mod.Image = ni;
+               }
+
+               public StructureWriter (AssemblyDefinition asm, BinaryWriter writer)
+               {
+                       m_asm = asm;
+                       m_binaryWriter = writer;
+               }
+
+               public BinaryWriter GetWriter ()
+               {
+                       return m_binaryWriter;
+               }
+
+               public override void VisitAssemblyDefinition (AssemblyDefinition asm)
+               {
+                       if (asm.Kind != AssemblyKind.Dll && asm.EntryPoint == null)
+                               throw new ReflectionException ("Assembly does not have an entry point defined");
+
+                       if ((asm.MainModule.Image.CLIHeader.Flags & RuntimeImage.ILOnly) == 0)
+                               throw new NotSupportedException ("Can not write a mixed mode assembly");
+
+                       foreach (ModuleDefinition module in asm.Modules)
+                               if (module.Image.CLIHeader.Metadata.VirtualAddress != RVA.Zero)
+                                       ResetImage (module);
+
+                       asm.MetadataToken = new MetadataToken (TokenType.Assembly, 1);
+                       ReflectionWriter rw = asm.MainModule.Controller.Writer;
+                       rw.StructureWriter = this;
+
+                       m_mdWriter = rw.MetadataWriter;
+                       m_tableWriter = rw.MetadataTableWriter;
+                       m_rowWriter = rw.MetadataRowWriter;
+
+                       if (!rw.SaveSymbols)
+                               return;
+
+                       FileStream fs = m_binaryWriter.BaseStream as FileStream;
+                       if (fs != null)
+                               rw.OutputFile = fs.Name;
+               }
+
+               public override void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
+               {
+                       AssemblyTable asmTable = m_tableWriter.GetAssemblyTable ();
+
+                       if (name.PublicKey != null && name.PublicKey.Length > 0)
+                               name.Flags |= AssemblyFlags.PublicKey;
+
+                       AssemblyRow asmRow = m_rowWriter.CreateAssemblyRow (
+                               name.HashAlgorithm,
+                               (ushort) name.Version.Major,
+                               (ushort) name.Version.Minor,
+                               (ushort) name.Version.Build,
+                               (ushort) name.Version.Revision,
+                               name.Flags,
+                               m_mdWriter.AddBlob (name.PublicKey),
+                               m_mdWriter.AddString (name.Name),
+                               m_mdWriter.AddString (name.Culture));
+
+                       asmTable.Rows.Add (asmRow);
+               }
+
+               public override void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection references)
+               {
+                       foreach (AssemblyNameReference name in references)
+                               VisitAssemblyNameReference (name);
+               }
+
+               public override void VisitAssemblyNameReference (AssemblyNameReference name)
+               {
+                       byte [] pkortoken;
+                       if (name.PublicKey != null && name.PublicKey.Length > 0)
+                               pkortoken = name.PublicKey;
+                       else if (name.PublicKeyToken != null && name.PublicKeyToken.Length > 0)
+                               pkortoken = name.PublicKeyToken;
+                       else
+                               pkortoken = new byte [0];
+
+                       AssemblyRefTable arTable = m_tableWriter.GetAssemblyRefTable ();
+                       AssemblyRefRow arRow = m_rowWriter.CreateAssemblyRefRow (
+                               (ushort) name.Version.Major,
+                               (ushort) name.Version.Minor,
+                               (ushort) name.Version.Build,
+                               (ushort) name.Version.Revision,
+                               name.Flags,
+                               m_mdWriter.AddBlob (pkortoken),
+                               m_mdWriter.AddString (name.Name),
+                               m_mdWriter.AddString (name.Culture),
+                               m_mdWriter.AddBlob (name.Hash));
+
+                       arTable.Rows.Add (arRow);
+               }
+
+               public override void VisitResourceCollection (ResourceCollection resources)
+               {
+                       VisitCollection (resources);
+               }
+
+               public override void VisitEmbeddedResource (EmbeddedResource res)
+               {
+                       AddManifestResource (
+                               m_mdWriter.AddResource (res.Data),
+                               res.Name, res.Flags,
+                               new MetadataToken (TokenType.ManifestResource, 0));
+               }
+
+               public override void VisitLinkedResource (LinkedResource res)
+               {
+                       FileTable fTable = m_tableWriter.GetFileTable ();
+                       FileRow fRow = m_rowWriter.CreateFileRow (
+                               Mono.Cecil.FileAttributes.ContainsNoMetaData,
+                               m_mdWriter.AddString (res.File),
+                               m_mdWriter.AddBlob (res.Hash));
+
+                       fTable.Rows.Add (fRow);
+
+                       AddManifestResource (
+                               0, res.Name, res.Flags,
+                               new MetadataToken (TokenType.File, (uint) fTable.Rows.IndexOf (fRow) + 1));
+               }
+
+               public override void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
+               {
+                       MetadataToken impl = new MetadataToken (TokenType.AssemblyRef,
+                               (uint) m_asm.MainModule.AssemblyReferences.IndexOf (res.Assembly) + 1);
+
+                       AddManifestResource (0, res.Name, res.Flags, impl);
+               }
+
+               void AddManifestResource (uint offset, string name, ManifestResourceAttributes flags, MetadataToken impl)
+               {
+                       ManifestResourceTable mrTable = m_tableWriter.GetManifestResourceTable ();
+                       ManifestResourceRow mrRow = m_rowWriter.CreateManifestResourceRow (
+                               offset,
+                               flags,
+                               m_mdWriter.AddString (name),
+                               impl);
+
+                       mrTable.Rows.Add (mrRow);
+               }
+
+               public override void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
+               {
+                       VisitCollection (modules);
+               }
+
+               public override void VisitModuleDefinition (ModuleDefinition module)
+               {
+                       if (module.Main) {
+                               ModuleTable modTable = m_tableWriter.GetModuleTable ();
+                               ModuleRow modRow = m_rowWriter.CreateModuleRow (
+                                       0,
+                                       m_mdWriter.AddString (module.Name),
+                                       m_mdWriter.AddGuid (module.Mvid),
+                                       0,
+                                       0);
+
+                               modTable.Rows.Add (modRow);
+                               module.MetadataToken = new MetadataToken (TokenType.Module, 1);
+                       } else {
+                               // multiple module assemblies
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
+               {
+                       VisitCollection (modules);
+               }
+
+               public override void VisitModuleReference (ModuleReference module)
+               {
+                       ModuleRefTable mrTable = m_tableWriter.GetModuleRefTable ();
+                       ModuleRefRow mrRow = m_rowWriter.CreateModuleRefRow (
+                               m_mdWriter.AddString (module.Name));
+
+                       mrTable.Rows.Add (mrRow);
+               }
+
+               public override void TerminateAssemblyDefinition (AssemblyDefinition asm)
+               {
+                       foreach (ModuleDefinition mod in asm.Modules) {
+                               ReflectionWriter writer = mod.Controller.Writer;
+                               writer.VisitModuleDefinition (mod);
+                               writer.VisitTypeReferenceCollection (mod.TypeReferences);
+                               writer.VisitTypeDefinitionCollection (mod.Types);
+                               writer.VisitMemberReferenceCollection (mod.MemberReferences);
+                               writer.CompleteTypeDefinitions ();
+
+                               writer.TerminateModuleDefinition (mod);
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs b/mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs
new file mode 100644 (file)
index 0000000..48943b9
--- /dev/null
@@ -0,0 +1,276 @@
+//
+// TableComparers.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+
+       using Mono.Cecil.Metadata;
+
+       sealed class TableComparers {
+
+               internal sealed class TypeDef : IComparer {
+
+                       public static readonly TypeDef Instance = new TypeDef ();
+
+                       public int Compare (object x, object y)
+                       {
+                               TypeDefinition a = x as TypeDefinition;
+                               TypeDefinition b = y as TypeDefinition;
+
+                               if (a == null || b == null)
+                                       throw new ReflectionException ("TypeDefComparer can only compare TypeDefinition");
+
+                               if (a.Name == Constants.ModuleType && b.Name == Constants.ModuleType)
+                                       return 0;
+                               else if (a.Name == Constants.ModuleType)
+                                       return -1;
+                               else if (b.Name == Constants.ModuleType)
+                                       return 1;
+
+                               return Comparer.Default.Compare (a.FullName, b.FullName);
+                       }
+               }
+
+               internal sealed class TypeRef : IComparer {
+
+                       public static readonly TypeRef Instance = new TypeRef ();
+
+                       public int Compare (object x, object y)
+                       {
+                               TypeReference a = x as TypeReference;
+                               TypeReference b = y as TypeReference;
+
+                               if (a == null || b == null)
+                                       throw new ReflectionException ("TypeRefComparer can only compare TypeReference");
+
+                               if (b.DeclaringType == a)
+                                       return -1;
+                               else if (a.DeclaringType == b)
+                                       return 1;
+
+                               return Comparer.Default.Compare (a.FullName, b.FullName);
+                       }
+               }
+
+               internal sealed class NestedClass : IComparer {
+
+                       public static readonly NestedClass Instance = new NestedClass ();
+
+                       public int Compare (object x, object y)
+                       {
+                               NestedClassRow a = x as NestedClassRow;
+                               NestedClassRow b = y as NestedClassRow;
+
+                               return Comparer.Default.Compare (a.NestedClass, b.NestedClass);
+                       }
+               }
+
+               internal sealed class Constant : IComparer {
+
+                       public static readonly Constant Instance = new Constant ();
+
+                       public int Compare (object x, object y)
+                       {
+                               ConstantRow a = x as ConstantRow;
+                               ConstantRow b = y as ConstantRow;
+
+                               return Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.HasConstant, a.Parent),
+                                       Utilities.CompressMetadataToken (CodedIndex.HasConstant, b.Parent));
+                       }
+
+               }
+
+               internal sealed class InterfaceImpl : IComparer {
+
+                       public static readonly InterfaceImpl Instance = new InterfaceImpl ();
+
+                       public int Compare (object x, object y)
+                       {
+                               InterfaceImplRow a = x as InterfaceImplRow;
+                               InterfaceImplRow b = y as InterfaceImplRow;
+
+                               int klass = Comparer.Default.Compare (a.Class, b.Class);
+
+                               if (klass == 0)
+                                       return Comparer.Default.Compare (
+                                               Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, a.Interface),
+                                               Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, b.Interface));
+
+                               return klass;
+                       }
+               }
+
+               internal sealed class MethodSem : IComparer {
+
+                       public static readonly MethodSem Instance = new MethodSem ();
+
+                       public int Compare (object x, object y)
+                       {
+                               MethodSemanticsRow a = x as MethodSemanticsRow;
+                               MethodSemanticsRow b = y as MethodSemanticsRow;
+
+                               return Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.HasSemantics, a.Association),
+                                       Utilities.CompressMetadataToken (CodedIndex.HasSemantics, b.Association));
+                       }
+               }
+
+               internal sealed class CustomAttribute : IComparer {
+
+                       public static readonly CustomAttribute Instance = new CustomAttribute ();
+
+                       public int Compare (object x, object y)
+                       {
+                               CustomAttributeRow a = x as CustomAttributeRow;
+                               CustomAttributeRow b = y as CustomAttributeRow;
+
+                               return Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, a.Parent),
+                                       Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, b.Parent));
+                       }
+               }
+
+               internal sealed class SecurityDeclaration : IComparer {
+
+                       public static readonly SecurityDeclaration Instance = new SecurityDeclaration ();
+
+                       public int Compare (object x, object y)
+                       {
+                               DeclSecurityRow a = x as DeclSecurityRow;
+                               DeclSecurityRow b = y as DeclSecurityRow;
+
+                               return Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, a.Parent),
+                                       Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, b.Parent));
+                       }
+               }
+
+               internal sealed class Override : IComparer {
+
+                       public static readonly Override Instance = new Override ();
+
+                       public int Compare (object x, object y)
+                       {
+                               MethodImplRow a = x as MethodImplRow;
+                               MethodImplRow b = y as MethodImplRow;
+
+                               return Comparer.Default.Compare (a.Class, b.Class);
+                       }
+               }
+
+               internal sealed class PInvoke : IComparer {
+
+                       public static readonly PInvoke Instance = new PInvoke ();
+
+                       public int Compare (object x, object y)
+                       {
+                               ImplMapRow a = x as ImplMapRow;
+                               ImplMapRow b = y as ImplMapRow;
+
+                               return Comparer.Default.Compare (a.MemberForwarded.RID, b.MemberForwarded.RID);
+                       }
+               }
+
+               internal sealed class FieldRVA : IComparer {
+
+                       public static readonly FieldRVA Instance = new FieldRVA ();
+
+                       public int Compare (object x, object y)
+                       {
+                               FieldRVARow a = x as FieldRVARow;
+                               FieldRVARow b = y as FieldRVARow;
+
+                               return Comparer.Default.Compare (a.Field, b.Field);
+                       }
+               }
+
+               internal sealed class FieldLayout : IComparer {
+
+                       public static readonly FieldLayout Instance = new FieldLayout ();
+
+                       public int Compare (object x, object y)
+                       {
+                               FieldLayoutRow a = x as FieldLayoutRow;
+                               FieldLayoutRow b = y as FieldLayoutRow;
+
+                               return Comparer.Default.Compare (a.Field, b.Field);
+                       }
+               }
+
+               internal sealed class FieldMarshal : IComparer {
+
+                       public static readonly FieldMarshal Instance = new FieldMarshal ();
+
+                       public int Compare (object x, object y)
+                       {
+                               FieldMarshalRow a = x as FieldMarshalRow;
+                               FieldMarshalRow b = y as FieldMarshalRow;
+
+                               return Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, a.Parent),
+                                       Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, b.Parent));
+                       }
+               }
+
+               internal sealed class TypeLayout : IComparer {
+
+                       public static readonly TypeLayout Instance = new TypeLayout ();
+
+                       public int Compare (object x, object y)
+                       {
+                               ClassLayoutRow a = x as ClassLayoutRow;
+                               ClassLayoutRow b = y as ClassLayoutRow;
+
+                               return Comparer.Default.Compare (a.Parent, b.Parent);
+                       }
+               }
+
+               internal sealed class GenericParam : IComparer {
+
+                       public static readonly GenericParam Instance = new GenericParam ();
+
+                       public int Compare (object x, object y)
+                       {
+                               GenericParameter a = x as GenericParameter;
+                               GenericParameter b = y as GenericParameter;
+
+                               int token = Comparer.Default.Compare (
+                                       Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, a.Owner.MetadataToken),
+                                       Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, b.Owner.MetadataToken));
+
+                               if (token == 0)
+                                       return Comparer.Default.Compare (a.Position, b.Position);
+
+                               return token;
+                       }
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs b/mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs
new file mode 100644 (file)
index 0000000..52abace
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// TargetRuntime.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum TargetRuntime {
+               NET_1_0,
+               NET_1_1,
+               NET_2_0,
+               NET_4_0,
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs
new file mode 100644 (file)
index 0000000..304ecbf
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// TypeAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       [Flags]
+       internal enum TypeAttributes : uint {
+               // Visibility attributes
+               VisibilityMask          = 0x00000007,   // Use this mask to retrieve visibility information
+               NotPublic                       = 0x00000000,   // Class has no public scope
+               Public                          = 0x00000001,   // Class has public scope
+               NestedPublic            = 0x00000002,   // Class is nested with public visibility
+               NestedPrivate           = 0x00000003,   // Class is nested with private visibility
+               NestedFamily            = 0x00000004,   // Class is nested with family visibility
+               NestedAssembly          = 0x00000005,   // Class is nested with assembly visibility
+               NestedFamANDAssem       = 0x00000006,   // Class is nested with family and assembly visibility
+               NestedFamORAssem        = 0x00000007,   // Class is nested with family or assembly visibility
+
+               // Class layout attributes
+               LayoutMask                      = 0x00000018,   // Use this mask to retrieve class layout information
+               AutoLayout                      = 0x00000000,   // Class fields are auto-laid out
+               SequentialLayout        = 0x00000008,   // Class fields are laid out sequentially
+               ExplicitLayout          = 0x00000010,   // Layout is supplied explicitly
+
+               // Class semantics attributes
+               ClassSemanticMask       = 0x00000020,   // Use this mask to retrieve class semantics information
+               Class                           = 0x00000000,   // Type is a class
+               Interface                       = 0x00000020,   // Type is an interface
+
+               // Special semantics in addition to class semantics
+               Abstract                        = 0x00000080,   // Class is abstract
+               Sealed                          = 0x00000100,   // Class cannot be extended
+               SpecialName                     = 0x00000400,   // Class name is special
+
+               // Implementation attributes
+               Import                          = 0x00001000,   // Class/Interface is imported
+               Serializable            = 0x00002000,   // Class is serializable
+
+               // String formatting attributes
+               StringFormatMask        = 0x00030000,   // Use this mask to retrieve string information for native interop
+               AnsiClass                       = 0x00000000,   // LPSTR is interpreted as ANSI
+               UnicodeClass            = 0x00010000,   // LPSTR is interpreted as Unicode
+               AutoClass                       = 0x00020000,   // LPSTR is interpreted automatically
+
+               // Class initialization attributes
+               BeforeFieldInit         = 0x00100000,   // Initialize the class before first static field access
+
+               // Additional flags
+               RTSpecialName           = 0x00000800,   // CLI provides 'special' behavior, depending upon the name of the Type
+               HasSecurity                     = 0x00040000,   // Type has security associate with it
+               Forwarder                       = 0x00200000,   // Exported type is a type forwarder
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs
new file mode 100644 (file)
index 0000000..5731b7d
--- /dev/null
@@ -0,0 +1,562 @@
+//
+// TypeDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal sealed class TypeDefinition : TypeReference, IMemberDefinition, IHasSecurity {
+
+               TypeAttributes m_attributes;
+               TypeReference m_baseType;
+
+               bool m_hasInfo;
+               ushort m_packingSize;
+               uint m_classSize;
+
+               InterfaceCollection m_interfaces;
+               NestedTypeCollection m_nestedTypes;
+               MethodDefinitionCollection m_methods;
+               ConstructorCollection m_ctors;
+               FieldDefinitionCollection m_fields;
+               EventDefinitionCollection m_events;
+               PropertyDefinitionCollection m_properties;
+               SecurityDeclarationCollection m_secDecls;
+
+               public TypeAttributes Attributes {
+                       get { return m_attributes; }
+                       set { m_attributes = value; }
+               }
+
+               public TypeReference BaseType {
+                       get { return m_baseType; }
+                       set { m_baseType = value; }
+               }
+
+               public bool HasLayoutInfo {
+                       get { return m_hasInfo; }
+               }
+
+               public ushort PackingSize {
+                       get { return m_packingSize; }
+                       set {
+                               m_hasInfo = true;
+                               m_packingSize = value;
+                       }
+               }
+
+               public uint ClassSize {
+                       get { return m_classSize; }
+                       set {
+                               m_hasInfo = true;
+                               m_classSize = value;
+                       }
+               }
+
+               public bool HasInterfaces {
+                       get { return (m_interfaces == null) ? false : (m_interfaces.Count > 0); }
+               }
+
+               public InterfaceCollection Interfaces {
+                       get {
+                               if (m_interfaces == null)
+                                       m_interfaces = new InterfaceCollection (this);
+
+                               return m_interfaces;
+                       }
+               }
+
+               public bool HasNestedTypes {
+                       get { return (m_nestedTypes == null) ? false : (m_nestedTypes.Count > 0); }
+               }
+
+               public NestedTypeCollection NestedTypes {
+                       get {
+                               if (m_nestedTypes == null)
+                                       m_nestedTypes = new NestedTypeCollection (this);
+
+                               return m_nestedTypes;
+                       }
+               }
+
+               public bool HasMethods {
+                       get { return (m_methods == null) ? false : (m_methods.Count > 0); }
+               }
+
+               public MethodDefinitionCollection Methods {
+                       get {
+                               if (m_methods == null)
+                                       m_methods = new MethodDefinitionCollection (this);
+
+                               return m_methods;
+                       }
+               }
+
+               public bool HasConstructors {
+                       get { return (m_ctors == null) ? false : (m_ctors.Count > 0); }
+               }
+
+               public ConstructorCollection Constructors {
+                       get {
+                               if (m_ctors == null)
+                                       m_ctors = new ConstructorCollection (this);
+
+                               return m_ctors;
+                       }
+               }
+
+               public bool HasFields {
+                       get { return (m_fields == null) ? false : (m_fields.Count > 0); }
+               }
+
+               public FieldDefinitionCollection Fields {
+                       get {
+                               if (m_fields == null)
+                                       m_fields = new FieldDefinitionCollection (this);
+
+                               return m_fields;
+                       }
+               }
+
+               public bool HasEvents {
+                       get { return (m_events == null) ? false : (m_events.Count > 0); }
+               }
+
+               public EventDefinitionCollection Events {
+                       get {
+                               if (m_events == null)
+                                       m_events = new EventDefinitionCollection (this);
+
+                               return m_events;
+                       }
+               }
+
+               public bool HasProperties {
+                       get { return (m_properties == null) ? false : (m_properties.Count > 0); }
+               }
+
+               public PropertyDefinitionCollection Properties {
+                       get {
+                               if (m_properties == null)
+                                       m_properties = new PropertyDefinitionCollection (this);
+
+                               return m_properties;
+                       }
+               }
+
+               public bool HasSecurityDeclarations {
+                       get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+               }
+
+               public SecurityDeclarationCollection SecurityDeclarations {
+                       get {
+                               if (m_secDecls == null)
+                                       m_secDecls = new SecurityDeclarationCollection (this);
+
+                               return m_secDecls;
+                       }
+               }
+
+               #region TypeAttributes
+
+               public bool IsNotPublic {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NotPublic; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NotPublic;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NotPublic);
+                       }
+               }
+
+               public bool IsPublic {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.Public;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.Public);
+                       }
+               }
+
+               public bool IsNestedPublic {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedPublic;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPublic);
+                       }
+               }
+
+               public bool IsNestedPrivate {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedPrivate;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPrivate);
+                       }
+               }
+
+               public bool IsNestedFamily {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamily; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedFamily;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamily);
+                       }
+               }
+
+               public bool IsNestedAssembly {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedAssembly; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedAssembly;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedAssembly);
+                       }
+               }
+
+               public bool IsNestedFamilyAndAssembly {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamANDAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedFamANDAssem;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamANDAssem);
+                       }
+               }
+
+               public bool IsNestedFamilyOrAssembly {
+                       get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamORAssem; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.VisibilityMask;
+                                       m_attributes |= TypeAttributes.NestedFamORAssem;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamORAssem);
+                       }
+               }
+
+               public bool IsAutoLayout {
+                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.LayoutMask;
+                                       m_attributes |= TypeAttributes.AutoLayout;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.AutoLayout);
+                       }
+               }
+
+               public bool IsSequentialLayout {
+                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.LayoutMask;
+                                       m_attributes |= TypeAttributes.SequentialLayout;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.SequentialLayout);
+                       }
+               }
+
+               public bool IsExplicitLayout {
+                       get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.LayoutMask;
+                                       m_attributes |= TypeAttributes.ExplicitLayout;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.ExplicitLayout);
+                       }
+               }
+
+               public bool IsClass {
+                       get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Class; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.ClassSemanticMask;
+                                       m_attributes |= TypeAttributes.Class;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Class);
+                       }
+               }
+
+               public bool IsInterface {
+                       get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Interface; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.ClassSemanticMask;
+                                       m_attributes |= TypeAttributes.Interface;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Interface);
+                       }
+               }
+
+               public bool IsAbstract {
+                       get { return (m_attributes & TypeAttributes.Abstract) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.Abstract;
+                               else
+                                       m_attributes &= ~TypeAttributes.Abstract;
+                       }
+               }
+
+               public bool IsSealed {
+                       get { return (m_attributes & TypeAttributes.Sealed) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.Sealed;
+                               else
+                                       m_attributes &= ~TypeAttributes.Sealed;
+                       }
+               }
+
+               public bool IsSpecialName {
+                       get { return (m_attributes & TypeAttributes.SpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.SpecialName;
+                               else
+                                       m_attributes &= ~TypeAttributes.SpecialName;
+                       }
+               }
+
+               public bool IsImport {
+                       get { return (m_attributes & TypeAttributes.Import) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.Import;
+                               else
+                                       m_attributes &= ~TypeAttributes.Import;
+                       }
+               }
+
+               public bool IsSerializable {
+                       get { return (m_attributes & TypeAttributes.Serializable) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.Serializable;
+                               else
+                                       m_attributes &= ~TypeAttributes.Serializable;
+                       }
+               }
+
+               public bool IsAnsiClass {
+                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AnsiClass; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.StringFormatMask;
+                                       m_attributes |= TypeAttributes.AnsiClass;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AnsiClass);
+                       }
+               }
+
+               public bool IsUnicodeClass {
+                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.UnicodeClass; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.StringFormatMask;
+                                       m_attributes |= TypeAttributes.UnicodeClass;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.UnicodeClass);
+                       }
+               }
+
+               public bool IsAutoClass {
+                       get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AutoClass; }
+                       set {
+                               if (value) {
+                                       m_attributes &= ~TypeAttributes.StringFormatMask;
+                                       m_attributes |= TypeAttributes.AutoClass;
+                               } else
+                                       m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AutoClass);
+                       }
+               }
+
+               public bool IsBeforeFieldInit {
+                       get { return (m_attributes & TypeAttributes.BeforeFieldInit) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.BeforeFieldInit;
+                               else
+                                       m_attributes &= ~TypeAttributes.BeforeFieldInit;
+                       }
+               }
+
+               public bool IsRuntimeSpecialName {
+                       get { return (m_attributes & TypeAttributes.RTSpecialName) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.RTSpecialName;
+                               else
+                                       m_attributes &= ~TypeAttributes.RTSpecialName;
+                       }
+               }
+
+               public bool HasSecurity {
+                       get { return (m_attributes & TypeAttributes.HasSecurity) != 0; }
+                       set {
+                               if (value)
+                                       m_attributes |= TypeAttributes.HasSecurity;
+                               else
+                                       m_attributes &= ~TypeAttributes.HasSecurity;
+                       }
+               }
+
+               #endregion
+
+               public bool IsEnum {
+                       get { return m_baseType != null && m_baseType.FullName == Constants.Enum; }
+               }
+
+               public override bool IsValueType {
+                       get {
+                               return m_baseType != null && ((m_baseType.FullName == Constants.Enum) ||
+                                       (m_baseType.FullName == Constants.ValueType && this.FullName != Constants.Enum));
+                       }
+               }
+
+               public new TypeDefinition DeclaringType {
+                       get { return (TypeDefinition) base.DeclaringType; }
+                       set { base.DeclaringType = value; }
+               }
+
+               internal TypeDefinition (string name, string ns, TypeAttributes attrs) :
+                       base (name, ns)
+               {
+                       m_hasInfo = false;
+                       m_attributes = attrs;
+               }
+
+               public TypeDefinition (string name, string ns,
+                       TypeAttributes attributes, TypeReference baseType) :
+                       this (name, ns, attributes)
+               {
+                       this.BaseType = baseType;
+               }
+
+               public override TypeDefinition Resolve ()
+               {
+                       return this;
+               }
+
+               public TypeDefinition Clone ()
+               {
+                       return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
+               }
+
+               internal static TypeDefinition Clone (TypeDefinition type, ImportContext context)
+               {
+                       TypeDefinition nt = new TypeDefinition (
+                               type.Name,
+                               type.Namespace,
+                               type.Attributes);
+
+                       TypeReference contextType = context.GenericContext.Type;
+
+                       context.GenericContext.Type = nt;
+
+                       GenericParameter.CloneInto (type, nt, context);
+
+                       if (type.BaseType != null)
+                               nt.BaseType = context.Import (type.BaseType);
+
+                       if (type.HasLayoutInfo) {
+                               nt.ClassSize = type.ClassSize;
+                               nt.PackingSize = type.PackingSize;
+                       }
+
+                       if (type.HasFields) {
+                               foreach (FieldDefinition field in type.Fields)
+                                       nt.Fields.Add (FieldDefinition.Clone (field, context));
+                       }
+                       if (type.HasConstructors) {
+                               foreach (MethodDefinition ctor in type.Constructors)
+                                       nt.Constructors.Add (MethodDefinition.Clone (ctor, context));
+                       }
+                       if (type.HasMethods) {
+                               foreach (MethodDefinition meth in type.Methods)
+                                       nt.Methods.Add (MethodDefinition.Clone (meth, context));
+                       }
+                       if (type.HasEvents) {
+                               foreach (EventDefinition evt in type.Events)
+                                       nt.Events.Add (EventDefinition.Clone (evt, context));
+                       }
+                       if (type.HasProperties) {
+                               foreach (PropertyDefinition prop in type.Properties)
+                                       nt.Properties.Add (PropertyDefinition.Clone (prop, context));
+                       }
+                       if (type.HasInterfaces) {
+                               foreach (TypeReference intf in type.Interfaces)
+                                       nt.Interfaces.Add (context.Import (intf));
+                       }
+                       if (type.HasNestedTypes) {
+                               foreach (TypeDefinition nested in type.NestedTypes)
+                                       nt.NestedTypes.Add (Clone (nested, context));
+                       }
+                       if (type.HasCustomAttributes) {
+                               foreach (CustomAttribute ca in type.CustomAttributes)
+                                       nt.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+                       }
+                       if (type.HasSecurityDeclarations) {
+                               foreach (SecurityDeclaration dec in type.SecurityDeclarations)
+                                       nt.SecurityDeclarations.Add (SecurityDeclaration.Clone (dec));
+                       }
+
+                       context.GenericContext.Type = contextType;
+
+                       return nt;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitTypeDefinition (this);
+
+                       this.GenericParameters.Accept (visitor);
+                       this.Interfaces.Accept (visitor);
+                       this.Constructors.Accept (visitor);
+                       this.Methods.Accept (visitor);
+                       this.Fields.Accept (visitor);
+                       this.Properties.Accept (visitor);
+                       this.Events.Accept (visitor);
+                       this.NestedTypes.Accept (visitor);
+                       this.CustomAttributes.Accept (visitor);
+                       this.SecurityDeclarations.Accept (visitor);
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs
new file mode 100644 (file)
index 0000000..845d117
--- /dev/null
@@ -0,0 +1,216 @@
+//
+// TypeDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Collections.Specialized;
+
+       using Mono.Cecil.Cil;
+
+       using Hcp = Mono.Cecil.HashCodeProvider;
+       using Cmp = System.Collections.Comparer;
+
+       internal sealed class TypeDefinitionCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+               ModuleDefinition m_container;
+
+               public TypeDefinition this [int index] {
+                       get { return this.BaseGet (index) as TypeDefinition; }
+                       set { this.BaseSet (index, value); }
+               }
+
+               public TypeDefinition this [string fullName] {
+                       get { return this.BaseGet (fullName) as TypeDefinition; }
+                       set { this.BaseSet (fullName, value); }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               bool IList.IsReadOnly {
+                       get { return false; }
+               }
+
+               bool IList.IsFixedSize {
+                       get { return false; }
+               }
+
+               object IList.this [int index] {
+                       get { return BaseGet (index); }
+                       set {
+                               Check (value);
+                               BaseSet (index, value);
+                       }
+               }
+
+               public TypeDefinitionCollection (ModuleDefinition container) :
+                       base (Hcp.Instance, Cmp.Default)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeDefinition value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       Attach (value);
+
+                       this.BaseAdd (value.FullName, value);
+               }
+
+               public void Clear ()
+               {
+                       foreach (TypeDefinition item in this)
+                               Detach (item);
+
+                       this.BaseClear ();
+               }
+
+               public bool Contains (TypeDefinition value)
+               {
+                       return Contains (value.FullName);
+               }
+
+               public bool Contains (string fullName)
+               {
+                       return this.BaseGet (fullName) != null;
+               }
+
+               public int IndexOf (TypeDefinition value)
+               {
+                       string [] keys = this.BaseGetAllKeys ();
+                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+               }
+
+               public void Remove (TypeDefinition value)
+               {
+                       this.BaseRemove (value.FullName);
+
+                       Detach (value);
+               }
+
+               public void RemoveAt (int index)
+               {
+                       TypeDefinition item = this [index];
+                       Remove (item);
+
+                       Detach (item);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       this.BaseGetAllValues ().CopyTo (ary, index);
+               }
+
+               public new IEnumerator GetEnumerator ()
+               {
+                       return this.BaseGetAllValues ().GetEnumerator ();
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitTypeDefinitionCollection (this);
+               }
+
+#if CF_1_0 || CF_2_0
+               internal object [] BaseGetAllValues ()
+               {
+                       object [] values = new object [this.Count];
+                       for (int i=0; i < values.Length; ++i) {
+                               values [i] = this.BaseGet (i);
+                       }
+                       return values;
+               }
+#endif
+
+               void Check (object value)
+               {
+                       if (!(value is TypeDefinition))
+                               throw new ArgumentException ();
+               }
+
+               int IList.Add (object value)
+               {
+                       Check (value);
+                       Add (value as TypeDefinition);
+                       return 0;
+               }
+
+               bool IList.Contains (object value)
+               {
+                       Check (value);
+                       return Contains (value as TypeDefinition);
+               }
+
+               int IList.IndexOf (object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Insert (int index, object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Remove (object value)
+               {
+                       Check (value);
+                       Remove (value as TypeDefinition);
+               }
+
+               void Detach (TypeReference type)
+               {
+                       type.Module = null;
+               }
+
+               void Attach (TypeReference type)
+               {
+                       if (type.Module != null)
+                               throw new ReflectionException ("Type is already attached, clone it instead");
+
+                       type.Module = m_container;
+                       type.AttachToScope (m_container);
+
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs
new file mode 100644 (file)
index 0000000..5cf95d2
--- /dev/null
@@ -0,0 +1,170 @@
+//
+// TypeReference.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal class TypeReference : MemberReference, IGenericParameterProvider, ICustomAttributeProvider {
+
+               string m_namespace;
+               bool m_fullNameDiscarded;
+               string m_fullName;
+               protected bool m_isValueType;
+               IMetadataScope m_scope;
+               ModuleDefinition m_module;
+
+               CustomAttributeCollection m_customAttrs;
+               GenericParameterCollection m_genparams;
+
+               public override string Name {
+                       get { return base.Name; }
+                       set {
+                               base.Name = value;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public virtual string Namespace {
+                       get { return m_namespace; }
+                       set {
+                               m_namespace = value;
+                               m_fullNameDiscarded = true;
+                       }
+               }
+
+               public virtual bool IsValueType {
+                       get { return m_isValueType; }
+                       set { m_isValueType = value; }
+               }
+
+               public virtual ModuleDefinition Module {
+                       get { return m_module; }
+                       set { m_module = value; }
+               }
+
+               public bool HasCustomAttributes {
+                       get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+               }
+
+               public CustomAttributeCollection CustomAttributes {
+                       get {
+                               if (m_customAttrs == null)
+                                       m_customAttrs = new CustomAttributeCollection (this);
+
+                               return m_customAttrs;
+                       }
+               }
+
+               public bool HasGenericParameters {
+                       get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+               }
+
+               public GenericParameterCollection GenericParameters {
+                       get {
+                               if (m_genparams == null)
+                                       m_genparams = new GenericParameterCollection (this);
+                               return m_genparams;
+                       }
+               }
+
+               public virtual IMetadataScope Scope {
+                       get {
+                               if (this.DeclaringType != null)
+                                       return this.DeclaringType.Scope;
+
+                               return m_scope;
+                       }
+               }
+
+               public bool IsNested {
+                       get { return this.DeclaringType != null; }
+               }
+
+               public virtual string FullName {
+                       get {
+                               if (m_fullName != null && !m_fullNameDiscarded)
+                                       return m_fullName;
+
+                               if (this.IsNested)
+                                       return string.Concat (this.DeclaringType.FullName, "/", this.Name);
+
+                               if (m_namespace == null || m_namespace.Length == 0)
+                                       return this.Name;
+
+                               m_fullName = string.Concat (m_namespace, ".", this.Name);
+                               m_fullNameDiscarded = false;
+                               return m_fullName;
+                       }
+               }
+
+               protected TypeReference (string name, string ns) : base (name)
+               {
+                       m_namespace = ns;
+                       m_fullNameDiscarded = false;
+               }
+
+               internal TypeReference (string name, string ns, IMetadataScope scope) : this (name, ns)
+               {
+                       m_scope = scope;
+               }
+
+               public TypeReference (string name, string ns, IMetadataScope scope, bool valueType) :
+                       this (name, ns, scope)
+               {
+                       m_isValueType = valueType;
+               }
+
+               public virtual TypeDefinition Resolve ()
+               {
+                       ModuleDefinition module = Module;
+                       if (module == null)
+                               return null;
+
+                       return module.Resolver.Resolve (this);
+               }
+
+               public virtual TypeReference GetOriginalType ()
+               {
+                       return this;
+               }
+
+               internal void AttachToScope (IMetadataScope scope)
+               {
+                       m_scope = scope;
+               }
+
+               public override void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitTypeReference (this);
+               }
+
+               public override string ToString ()
+               {
+                       return this.FullName;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs
new file mode 100644 (file)
index 0000000..3e484b0
--- /dev/null
@@ -0,0 +1,214 @@
+//
+// TypeReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+       using System.Collections;
+       using System.Collections.Specialized;
+
+       using Mono.Cecil.Cil;
+
+       using Hcp = Mono.Cecil.HashCodeProvider;
+       using Cmp = System.Collections.Comparer;
+
+       internal sealed class TypeReferenceCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+               ModuleDefinition m_container;
+
+               public TypeReference this [int index] {
+                       get { return this.BaseGet (index) as TypeReference; }
+                       set { this.BaseSet (index, value); }
+               }
+
+               public TypeReference this [string fullName] {
+                       get { return this.BaseGet (fullName) as TypeReference; }
+                       set { this.BaseSet (fullName, value); }
+               }
+
+               public ModuleDefinition Container {
+                       get { return m_container; }
+               }
+
+               public bool IsSynchronized {
+                       get { return false; }
+               }
+
+               public object SyncRoot {
+                       get { return this; }
+               }
+
+               bool IList.IsReadOnly {
+                       get { return false; }
+               }
+
+               bool IList.IsFixedSize {
+                       get { return false; }
+               }
+
+               object IList.this [int index] {
+                       get { return BaseGet (index); }
+                       set {
+                               Check (value);
+                               BaseSet (index, value);
+                       }
+               }
+
+               public TypeReferenceCollection (ModuleDefinition container) :
+                       base (Hcp.Instance, Cmp.Default)
+               {
+                       m_container = container;
+               }
+
+               public void Add (TypeReference value)
+               {
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       Attach (value);
+
+                       this.BaseAdd (value.FullName, value);
+               }
+
+               public void Clear ()
+               {
+                       foreach (TypeReference item in this)
+                               Detach (item);
+
+                       this.BaseClear ();
+               }
+
+               public bool Contains (TypeReference value)
+               {
+                       return Contains (value.FullName);
+               }
+
+               public bool Contains (string fullName)
+               {
+                       return this.BaseGet (fullName) != null;
+               }
+
+               public int IndexOf (TypeReference value)
+               {
+                       string [] keys = this.BaseGetAllKeys ();
+                       return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+               }
+
+               public void Remove (TypeReference value)
+               {
+                       this.BaseRemove (value.FullName);
+
+                       Detach (value);
+               }
+
+               public void RemoveAt (int index)
+               {
+                       TypeReference item = this [index];
+                       Remove (item);
+
+                       Detach (item);
+               }
+
+               public void CopyTo (Array ary, int index)
+               {
+                       this.BaseGetAllValues ().CopyTo (ary, index);
+               }
+
+               public new IEnumerator GetEnumerator ()
+               {
+                       return this.BaseGetAllValues ().GetEnumerator ();
+               }
+
+               public void Accept (IReflectionVisitor visitor)
+               {
+                       visitor.VisitTypeReferenceCollection (this);
+               }
+
+#if CF_1_0 || CF_2_0
+               internal object [] BaseGetAllValues ()
+               {
+                       object [] values = new object [this.Count];
+                       for (int i=0; i < values.Length; ++i) {
+                               values [i] = this.BaseGet (i);
+                       }
+                       return values;
+               }
+#endif
+
+               void Check (object value)
+               {
+                       if (!(value is TypeReference))
+                               throw new ArgumentException ();
+               }
+
+               int IList.Add (object value)
+               {
+                       Check (value);
+                       Add (value as TypeReference);
+                       return 0;
+               }
+
+               bool IList.Contains (object value)
+               {
+                       Check (value);
+                       return Contains (value as TypeReference);
+               }
+
+               int IList.IndexOf (object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Insert (int index, object value)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               void IList.Remove (object value)
+               {
+                       Check (value);
+                       Remove (value as TypeReference);
+               }
+
+               void Detach (TypeReference type)
+               {
+                       type.Module = null;
+               }
+
+               void Attach (TypeReference type)
+               {
+                       if (type.Module != null)
+                               throw new ReflectionException ("Type is already attached, clone it instead");
+
+                       type.Module = m_container;
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs
new file mode 100644 (file)
index 0000000..8267c16
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// TypeSpecification.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       using System;
+
+       internal abstract class TypeSpecification : TypeReference {
+
+               private TypeReference m_elementType;
+
+               public override string Name {
+                       get { return m_elementType.Name; }
+                       set { throw new NotSupportedException (); }
+               }
+
+               public override string Namespace {
+                       get { return m_elementType.Namespace; }
+                       set { throw new NotSupportedException (); }
+               }
+
+               public override bool IsValueType {
+                       get { return m_elementType.IsValueType; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public override IMetadataScope Scope {
+                       get { return m_elementType.Scope; }
+               }
+
+               public override ModuleDefinition Module {
+                       get { return m_elementType.Module; }
+                       set { throw new InvalidOperationException (); }
+               }
+
+               public TypeReference ElementType {
+                       get { return m_elementType; }
+                       set { m_elementType = value; }
+               }
+
+               public override string FullName {
+                       get { return m_elementType.FullName; }
+               }
+
+               internal TypeSpecification (TypeReference elementType) : base (string.Empty, string.Empty)
+               {
+                       m_elementType = elementType;
+               }
+
+               public override TypeReference GetOriginalType ()
+               {
+                       return m_elementType.GetOriginalType ();
+               }
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/VariantType.cs b/mcs/tools/cil-strip/Mono.Cecil/VariantType.cs
new file mode 100644 (file)
index 0000000..23aa39b
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// VariantType.cs
+//
+// Author:
+//   Jb Evain (jbevain@gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+       internal enum VariantType {
+               I2 = 2,
+               I4 = 3,
+               R4 = 4,
+               R8 = 5,
+               CY = 6,
+               DATE = 7,
+               BSTR = 8,
+               DISPATCH = 9,
+               ERROR = 10,
+               BOOL = 11,
+               VARIANT = 12,
+               UNKNOWN = 13,
+               DECIMAL = 14,
+               I1 = 16,
+               UI1 = 17,
+               UI2 = 18,
+               UI4 = 19,
+               INT = 22,
+               UINT = 23
+       }
+}
diff --git a/mcs/tools/cil-strip/Mono.Xml/ChangeLog b/mcs/tools/cil-strip/Mono.Xml/ChangeLog
new file mode 100644 (file)
index 0000000..2fbc0ef
--- /dev/null
@@ -0,0 +1,28 @@
+2005-06-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SmallXmlParser.cs, SecurityParser.cs : they can be CLSCompliant now.
+
+2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SmallXmlParser.cs,
+         SecurityParser.cs : Use new SmallXmlParser.cs instead of MiniParser.
+
+2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * MiniParser.cs: Fixed warning (l4) for unused variables. Removed
+       duplicate (and identical) license.
+
+2004-05-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * MiniParser.cs, SecurityParser.cs: [CLSCompliant (false)]
+       only for public mode.
+
+2003-07-05  Sebastien Pouliot  <spouliot@videotron.ca>
+
+       * SecurityParser.cs: Parse an XML string and convert it to a
+       SecurityElement object.
+
+2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
+
+       * MiniParser.cs: Renamed namespace to match new location.
+
diff --git a/mcs/tools/cil-strip/Mono.Xml/SecurityParser.cs b/mcs/tools/cil-strip/Mono.Xml/SecurityParser.cs
new file mode 100644 (file)
index 0000000..311a316
--- /dev/null
@@ -0,0 +1,109 @@
+//
+// Mono.Xml.SecurityParser.cs class implementation
+//
+// Author:
+//     Sebastien Pouliot (spouliot@motus.com)
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.IO;
+using System.Security;
+
+namespace Mono.Xml {
+
+       // convert an XML document into SecurityElement objects
+       internal sealed class SecurityParser : SmallXmlParser, SmallXmlParser.IContentHandler {
+
+               private SecurityElement root;
+
+               public SecurityParser () : base ()
+               {
+                       stack = new Stack ();
+               }
+
+               public void LoadXml (string xml)
+               {
+                       root = null;
+#if CF_1_0
+                       stack = new Stack ();
+#else
+                       stack.Clear ();
+#endif
+                       Parse (new StringReader (xml), this);
+               }
+
+               public SecurityElement ToXml ()
+               {
+                       return root;
+               }
+
+               // IContentHandler
+
+               private SecurityElement current;
+               private Stack stack;
+
+               public void OnStartParsing (SmallXmlParser parser) {}
+
+               public void OnProcessingInstruction (string name, string text) {}
+
+               public void OnIgnorableWhitespace (string s) {}
+
+               public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
+               {
+                       SecurityElement newel = new SecurityElement (name);
+                       if (root == null) {
+                               root = newel;
+                               current = newel;
+                       }
+                       else {
+                               SecurityElement parent = (SecurityElement) stack.Peek ();
+                               parent.AddChild (newel);
+                       }
+                       stack.Push (newel);
+                       current = newel;
+                       // attributes
+                       int n = attrs.Length;
+                       for (int i=0; i < n; i++)
+                               current.AddAttribute (attrs.GetName (i), attrs.GetValue (i));
+               }
+
+               public void OnEndElement (string name)
+               {
+                       current = (SecurityElement) stack.Pop ();
+               }
+
+               public void OnChars (string ch)
+               {
+                       current.Text = ch;
+               }
+
+               public void OnEndParsing (SmallXmlParser parser) {}
+       }
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs b/mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs
new file mode 100644 (file)
index 0000000..c57b2a2
--- /dev/null
@@ -0,0 +1,637 @@
+//
+// SmallXmlParser.cs
+//
+// Author:
+//     Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// small xml parser that is mostly compatible with
+//
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.IO;
+using System.Text;
+
+namespace Mono.Xml
+{
+       internal sealed class DefaultHandler : SmallXmlParser.IContentHandler
+       {
+               public void OnStartParsing (SmallXmlParser parser)
+               {
+               }
+
+               public void OnEndParsing (SmallXmlParser parser)
+               {
+               }
+
+               public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
+               {
+               }
+
+               public void OnEndElement (string name)
+               {
+               }
+
+               public void OnChars (string s)
+               {
+               }
+
+               public void OnIgnorableWhitespace (string s)
+               {
+               }
+
+               public void OnProcessingInstruction (string name, string text)
+               {
+               }
+       }
+
+       internal class SmallXmlParser
+       {
+               internal interface IContentHandler
+               {
+                       void OnStartParsing (SmallXmlParser parser);
+                       void OnEndParsing (SmallXmlParser parser);
+                       void OnStartElement (string name, IAttrList attrs);
+                       void OnEndElement (string name);
+                       void OnProcessingInstruction (string name, string text);
+                       void OnChars (string text);
+                       void OnIgnorableWhitespace (string text);
+               }
+
+               internal interface IAttrList
+               {
+                       int Length { get; }
+                       bool IsEmpty { get; }
+                       string GetName (int i);
+                       string GetValue (int i);
+                       string GetValue (string name);
+                       string [] Names { get; }
+                       string [] Values { get; }
+               }
+
+               sealed class AttrListImpl : IAttrList
+               {
+                       public int Length {
+                               get { return attrNames.Count; }
+                       }
+                       public bool IsEmpty {
+                               get { return attrNames.Count == 0; }
+                       }
+                       public string GetName (int i)
+                       {
+                               return (string) attrNames [i];
+                       }
+                       public string GetValue (int i)
+                       {
+                               return (string) attrValues [i];
+                       }
+                       public string GetValue (string name)
+                       {
+                               for (int i = 0; i < attrNames.Count; i++)
+                                       if ((string) attrNames [i] == name)
+                                               return (string) attrValues [i];
+                               return null;
+                       }
+                       public string [] Names {
+                               get { return (string []) attrNames.ToArray (typeof (string)); }
+                       }
+                       public string [] Values {
+                               get { return (string []) attrValues.ToArray (typeof (string)); }
+                       }
+
+                       ArrayList attrNames = new ArrayList ();
+                       ArrayList attrValues = new ArrayList ();
+
+                       internal void Clear ()
+                       {
+                               attrNames.Clear ();
+                               attrValues.Clear ();
+                       }
+
+                       internal void Add (string name, string value)
+                       {
+                               attrNames.Add (name);
+                               attrValues.Add (value);
+                       }
+               }
+
+               IContentHandler handler;
+               TextReader reader;
+               Stack elementNames = new Stack ();
+               Stack xmlSpaces = new Stack ();
+               string xmlSpace;
+               StringBuilder buffer = new StringBuilder (200);
+               char [] nameBuffer = new char [30];
+               bool isWhitespace;
+
+               AttrListImpl attributes = new AttrListImpl ();
+               int line = 1, column;
+               bool resetColumn;
+
+               public SmallXmlParser ()
+               {
+               }
+
+               private Exception Error (string msg)
+               {
+                       return new SmallXmlParserException (msg, line, column);
+               }
+
+               private Exception UnexpectedEndError ()
+               {
+                       string [] arr = new string [elementNames.Count];
+                       // COMPACT FRAMEWORK NOTE: CopyTo is not visible through the Stack class
+                       (elementNames as ICollection).CopyTo (arr, 0);
+                       return Error (String.Format (
+                                                         "Unexpected end of stream. Element stack content is {0}", String.Join (",", arr)));
+               }
+
+
+               private bool IsNameChar (char c, bool start)
+               {
+                       switch (c) {
+                       case ':':
+                       case '_':
+                               return true;
+                       case '-':
+                       case '.':
+                               return !start;
+                       }
+                       if (c > 0x100) { // optional condition for optimization
+                               switch (c) {
+                               case '\u0559':
+                               case '\u06E5':
+                               case '\u06E6':
+                                       return true;
+                               }
+                               if ('\u02BB' <= c && c <= '\u02C1')
+                                       return true;
+                       }
+                       switch (Char.GetUnicodeCategory (c)) {
+                       case UnicodeCategory.LowercaseLetter:
+                       case UnicodeCategory.UppercaseLetter:
+                       case UnicodeCategory.OtherLetter:
+                       case UnicodeCategory.TitlecaseLetter:
+                       case UnicodeCategory.LetterNumber:
+                               return true;
+                       case UnicodeCategory.SpacingCombiningMark:
+                       case UnicodeCategory.EnclosingMark:
+                       case UnicodeCategory.NonSpacingMark:
+                       case UnicodeCategory.ModifierLetter:
+                       case UnicodeCategory.DecimalDigitNumber:
+                               return !start;
+                       default:
+                               return false;
+                       }
+               }
+
+               private bool IsWhitespace (int c)
+               {
+                       switch (c) {
+                       case ' ':
+                       case '\r':
+                       case '\t':
+                       case '\n':
+                               return true;
+                       default:
+                               return false;
+                       }
+               }
+
+
+               public void SkipWhitespaces ()
+               {
+                       SkipWhitespaces (false);
+               }
+
+               private void HandleWhitespaces ()
+               {
+                       while (IsWhitespace (Peek ()))
+                               buffer.Append ((char) Read ());
+                       if (Peek () != '<' && Peek () >= 0)
+                               isWhitespace = false;
+               }
+
+               public void SkipWhitespaces (bool expected)
+               {
+                       while (true) {
+                               switch (Peek ()) {
+                               case ' ':
+                               case '\r':
+                               case '\t':
+                               case '\n':
+                                       Read ();
+                                       if (expected)
+                                               expected = false;
+                                       continue;
+                               }
+                               if (expected)
+                                       throw Error ("Whitespace is expected.");
+                               return;
+                       }
+               }
+
+
+               private int Peek ()
+               {
+                       return reader.Peek ();
+               }
+
+               private int Read ()
+               {
+                       int i = reader.Read ();
+                       if (i == '\n')
+                               resetColumn = true;
+                       if (resetColumn) {
+                               line++;
+                               resetColumn = false;
+                               column = 1;
+                       }
+                       else
+                               column++;
+                       return i;
+               }
+
+               public void Expect (int c)
+               {
+                       int p = Read ();
+                       if (p < 0)
+                               throw UnexpectedEndError ();
+                       else if (p != c)
+                               throw Error (String.Format ("Expected '{0}' but got {1}", (char) c, (char) p));
+               }
+
+               private string ReadUntil (char until, bool handleReferences)
+               {
+                       while (true) {
+                               if (Peek () < 0)
+                                       throw UnexpectedEndError ();
+                               char c = (char) Read ();
+                               if (c == until)
+                                       break;
+                               else if (handleReferences && c == '&')
+                                       ReadReference ();
+                               else
+                                       buffer.Append (c);
+                       }
+                       string ret = buffer.ToString ();
+                       buffer.Length = 0;
+                       return ret;
+               }
+
+               public string ReadName ()
+               {
+                       int idx = 0;
+                       if (Peek () < 0 || !IsNameChar ((char) Peek (), true))
+                               throw Error ("XML name start character is expected.");
+                       for (int i = Peek (); i >= 0; i = Peek ()) {
+                               char c = (char) i;
+                               if (!IsNameChar (c, false))
+                                       break;
+                               if (idx == nameBuffer.Length) {
+                                       char [] tmp = new char [idx * 2];
+                                       // COMPACT FRAMEWORK NOTE: Array.Copy(sourceArray, destinationArray, count) is not available.
+                                       Array.Copy (nameBuffer, 0, tmp, 0, idx);
+                                       nameBuffer = tmp;
+                               }
+                               nameBuffer [idx++] = c;
+                               Read ();
+                       }
+                       if (idx == 0)
+                               throw Error ("Valid XML name is expected.");
+                       return new string (nameBuffer, 0, idx);
+               }
+
+
+               public void Parse (TextReader input, IContentHandler handler)
+               {
+                       this.reader = input;
+                       this.handler = handler;
+
+                       handler.OnStartParsing (this);
+
+                       while (Peek () >= 0)
+                               ReadContent ();
+                       HandleBufferedContent ();
+                       if (elementNames.Count > 0)
+                               throw Error (String.Format ("Insufficient close tag: {0}", elementNames.Peek ()));
+
+                       handler.OnEndParsing (this);
+
+                       Cleanup ();
+               }
+
+               private void Cleanup ()
+               {
+                       line = 1;
+                       column = 0;
+                       handler = null;
+                       reader = null;
+#if CF_1_0
+                       elementNames = new Stack ();
+                       xmlSpaces = new Stack ();
+#else
+                       elementNames.Clear ();
+                       xmlSpaces.Clear ();
+#endif
+                       attributes.Clear ();
+                       buffer.Length = 0;
+                       xmlSpace = null;
+                       isWhitespace = false;
+               }
+
+               public void ReadContent ()
+               {
+                       string name;
+                       if (IsWhitespace (Peek ())) {
+                               if (buffer.Length == 0)
+                                       isWhitespace = true;
+                               HandleWhitespaces ();
+                       }
+                       if (Peek () == '<') {
+                               Read ();
+                               switch (Peek ()) {
+                               case '!': // declarations
+                                       Read ();
+                                       if (Peek () == '[') {
+                                               Read ();
+                                               if (ReadName () != "CDATA")
+                                                       throw Error ("Invalid declaration markup");
+                                               Expect ('[');
+                                               ReadCDATASection ();
+                                               return;
+                                       }
+                                       else if (Peek () == '-') {
+                                               ReadComment ();
+                                               return;
+                                       }
+                                       else if (ReadName () != "DOCTYPE")
+                                               throw Error ("Invalid declaration markup.");
+                                       else
+                                               throw Error ("This parser does not support document type.");
+                               case '?': // PIs
+                                       HandleBufferedContent ();
+                                       Read ();
+                                       name = ReadName ();
+                                       SkipWhitespaces ();
+                                       string text = String.Empty;
+                                       if (Peek () != '?') {
+                                               while (true) {
+                                                       text += ReadUntil ('?', false);
+                                                       if (Peek () == '>')
+                                                               break;
+                                                       text += "?";
+                                               }
+                                       }
+                                       handler.OnProcessingInstruction (
+                                               name, text);
+                                       Expect ('>');
+                                       return;
+                               case '/': // end tags
+                                       HandleBufferedContent ();
+                                       if (elementNames.Count == 0)
+                                               throw UnexpectedEndError ();
+                                       Read ();
+                                       name = ReadName ();
+                                       SkipWhitespaces ();
+                                       string expected = (string) elementNames.Pop ();
+                                       xmlSpaces.Pop ();
+                                       if (xmlSpaces.Count > 0)
+                                               xmlSpace = (string) xmlSpaces.Peek ();
+                                       else
+                                               xmlSpace = null;
+                                       if (name != expected)
+                                               throw Error (String.Format ("End tag mismatch: expected {0} but found {1}", expected, name));
+                                       handler.OnEndElement (name);
+                                       Expect ('>');
+                                       return;
+                               default: // start tags (including empty tags)
+                                       HandleBufferedContent ();
+                                       name = ReadName ();
+                                       while (Peek () != '>' && Peek () != '/')
+                                               ReadAttribute (attributes);
+                                       handler.OnStartElement (name, attributes);
+                                       attributes.Clear ();
+                                       SkipWhitespaces ();
+                                       if (Peek () == '/') {
+                                               Read ();
+                                               handler.OnEndElement (name);
+                                       }
+                                       else {
+                                               elementNames.Push (name);
+                                               xmlSpaces.Push (xmlSpace);
+                                       }
+                                       Expect ('>');
+                                       return;
+                               }
+                       }
+                       else
+                               ReadCharacters ();
+               }
+
+               private void HandleBufferedContent ()
+               {
+                       if (buffer.Length == 0)
+                               return;
+                       if (isWhitespace)
+                               handler.OnIgnorableWhitespace (buffer.ToString ());
+                       else
+                               handler.OnChars (buffer.ToString ());
+                       buffer.Length = 0;
+                       isWhitespace = false;
+               }
+
+               private void ReadCharacters ()
+               {
+                       isWhitespace = false;
+                       while (true) {
+                               int i = Peek ();
+                               switch (i) {
+                               case -1:
+                                       return;
+                               case '<':
+                                       return;
+                               case '&':
+                                       Read ();
+                                       ReadReference ();
+                                       continue;
+                               default:
+                                       buffer.Append ((char) Read ());
+                                       continue;
+                               }
+                       }
+               }
+
+               private void ReadReference ()
+               {
+                       if (Peek () == '#') {
+                               // character reference
+                               Read ();
+                               ReadCharacterReference ();
+                       } else {
+                               string name = ReadName ();
+                               Expect (';');
+                               switch (name) {
+                               case "amp":
+                                       buffer.Append ('&');
+                                       break;
+                               case "quot":
+                                       buffer.Append ('"');
+                                       break;
+                               case "apos":
+                                       buffer.Append ('\'');
+                                       break;
+                               case "lt":
+                                       buffer.Append ('<');
+                                       break;
+                               case "gt":
+                                       buffer.Append ('>');
+                                       break;
+                               default:
+                                       throw Error ("General non-predefined entity reference is not supported in this parser.");
+                               }
+                       }
+               }
+
+               private int ReadCharacterReference ()
+               {
+                       int n = 0;
+                       if (Peek () == 'x') { // hex
+                               Read ();
+                               for (int i = Peek (); i >= 0; i = Peek ()) {
+                                       if ('0' <= i && i <= '9')
+                                               n = n << 4 + i - '0';
+                                       else if ('A' <= i && i <='F')
+                                               n = n << 4 + i - 'A' + 10;
+                                       else if ('a' <= i && i <='f')
+                                               n = n << 4 + i - 'a' + 10;
+                                       else
+                                               break;
+                                       Read ();
+                               }
+                       } else {
+                               for (int i = Peek (); i >= 0; i = Peek ()) {
+                                       if ('0' <= i && i <= '9')
+                                               n = n << 4 + i - '0';
+                                       else
+                                               break;
+                                       Read ();
+                               }
+                       }
+                       return n;
+               }
+
+               private void ReadAttribute (AttrListImpl a)
+               {
+                       SkipWhitespaces (true);
+                       if (Peek () == '/' || Peek () == '>')
+                       // came here just to spend trailing whitespaces
+                               return;
+
+                       string name = ReadName ();
+                       string value;
+                       SkipWhitespaces ();
+                       Expect ('=');
+                       SkipWhitespaces ();
+                       switch (Read ()) {
+                       case '\'':
+                               value = ReadUntil ('\'', true);
+                               break;
+                       case '"':
+                               value = ReadUntil ('"', true);
+                               break;
+                       default:
+                               throw Error ("Invalid attribute value markup.");
+                       }
+                       if (name == "xml:space")
+                               xmlSpace = value;
+                       a.Add (name, value);
+               }
+
+               private void ReadCDATASection ()
+               {
+                       int nBracket = 0;
+                       while (true) {
+                               if (Peek () < 0)
+                                       throw UnexpectedEndError ();
+                               char c = (char) Read ();
+                               if (c == ']')
+                                       nBracket++;
+                               else if (c == '>' && nBracket > 1) {
+                                       for (int i = nBracket; i > 2; i--)
+                                               buffer.Append (']');
+                                       break;
+                               }
+                               else {
+                                       for (int i = 0; i < nBracket; i++)
+                                               buffer.Append (']');
+                                       nBracket = 0;
+                                       buffer.Append (c);
+                               }
+                       }
+               }
+
+               private void ReadComment ()
+               {
+                       Expect ('-');
+                       Expect ('-');
+                       while (true) {
+                               if (Read () != '-')
+                                       continue;
+                               if (Read () != '-')
+                                       continue;
+                               if (Read () != '>')
+                                       throw Error ("'--' is not allowed inside comment markup.");
+                               break;
+                       }
+               }
+       }
+
+       internal sealed class SmallXmlParserException : SystemException
+       {
+               int line;
+               int column;
+
+               public SmallXmlParserException (string msg, int line, int column)
+               : base (String.Format ("{0}. At ({1},{2})", msg, line, column))
+               {
+                       this.line = line;
+                       this.column = column;
+               }
+
+               public int Line {
+                       get { return line; }
+               }
+
+               public int Column {
+                       get { return column; }
+               }
+       }
+}
+
+
+
index 2c092650c284588ba1b95edba8085022c03e3d06..4b56f2e16ae208caafe3be861ece4b358f220c36 100644 (file)
@@ -44,11 +44,7 @@ namespace Mono.CilStripper {
 
                static void StripAssembly (AssemblyDefinition assembly, string output)
                {
-                       Type stripper = typeof (AssemblyDefinition).Assembly.GetType ("Mono.Cecil.AssemblyStripper");
-                       if (stripper == null)
-                               throw new NotSupportedException ("Cecil doesn't have support for mono-cil-strip");
-
-                       stripper.GetMethod ("StripAssembly").Invoke (null, new object [] { assembly, output });
+                       AssemblyStripper.StripAssembly (assembly, output);
                }
 
                static void Header ()
index c879f8284721a9b3e657aab90d1866397bd3ceda..5ea4d803027507ac4001617186c8871ff6726156 100644 (file)
@@ -1 +1,314 @@
-cilstrip.cs
+./cilstrip.cs
+./AssemblyStripper.cs
+./Mono.Cecil/AggressiveReflectionReader.cs
+./Mono.Cecil/ArrayDimension.cs
+./Mono.Cecil/ArrayDimensionCollection.cs
+./Mono.Cecil/ArrayType.cs
+./Mono.Cecil/AssemblyDefinition.cs
+./Mono.Cecil/AssemblyFactory.cs
+./Mono.Cecil/AssemblyFlags.cs
+./Mono.Cecil/AssemblyHashAlgorithm.cs
+./Mono.Cecil/AssemblyInfo.cs
+./Mono.Cecil/AssemblyKind.cs
+./Mono.Cecil/AssemblyLinkedResource.cs
+./Mono.Cecil/AssemblyNameDefinition.cs
+./Mono.Cecil/AssemblyNameReference.cs
+./Mono.Cecil/AssemblyNameReferenceCollection.cs
+./Mono.Cecil/BaseAssemblyResolver.cs
+./Mono.Cecil/BaseReflectionReader.cs
+./Mono.Cecil/BaseReflectionVisitor.cs
+./Mono.Cecil/BaseStructureVisitor.cs
+./Mono.Cecil/CallSite.cs
+./Mono.Cecil/CompactFrameworkCompatibility.cs
+./Mono.Cecil/Constants.cs
+./Mono.Cecil/ConstraintCollection.cs
+./Mono.Cecil/ConstructorCollection.cs
+./Mono.Cecil/CustomAttribute.cs
+./Mono.Cecil/CustomAttributeCollection.cs
+./Mono.Cecil/DefaultAssemblyResolver.cs
+./Mono.Cecil/DefaultImporter.cs
+./Mono.Cecil/EmbeddedResource.cs
+./Mono.Cecil/EventAttributes.cs
+./Mono.Cecil/EventDefinition.cs
+./Mono.Cecil/EventDefinitionCollection.cs
+./Mono.Cecil/EventReference.cs
+./Mono.Cecil/ExternTypeCollection.cs
+./Mono.Cecil/FieldAttributes.cs
+./Mono.Cecil/FieldDefinition.cs
+./Mono.Cecil/FieldDefinitionCollection.cs
+./Mono.Cecil/FieldReference.cs
+./Mono.Cecil/FileAttributes.cs
+./Mono.Cecil/FunctionPointerType.cs
+./Mono.Cecil/GenericArgumentCollection.cs
+./Mono.Cecil/GenericContext.cs
+./Mono.Cecil/GenericInstanceMethod.cs
+./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/GenericParameter.cs
+./Mono.Cecil/GenericParameterAttributes.cs
+./Mono.Cecil/GenericParameterCollection.cs
+./Mono.Cecil/HashCodeProvider.cs
+./Mono.Cecil/IAnnotationProvider.cs
+./Mono.Cecil/IAssemblyResolver.cs
+./Mono.Cecil/ICustomAttributeProvider.cs
+./Mono.Cecil/IDetailReader.cs
+./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/IGenericParameterProvider.cs
+./Mono.Cecil/IHasConstant.cs
+./Mono.Cecil/IHasMarshalSpec.cs
+./Mono.Cecil/IHasSecurity.cs
+./Mono.Cecil/IImporter.cs
+./Mono.Cecil/IMemberDefinition.cs
+./Mono.Cecil/IMemberReference.cs
+./Mono.Cecil/IMetadataScope.cs
+./Mono.Cecil/IMetadataTokenProvider.cs
+./Mono.Cecil/IMethodSignature.cs
+./Mono.Cecil/ImportContext.cs
+./Mono.Cecil/InterfaceCollection.cs
+./Mono.Cecil/IReflectionStructureVisitable.cs
+./Mono.Cecil/IReflectionStructureVisitor.cs
+./Mono.Cecil/IReflectionVisitable.cs
+./Mono.Cecil/IReflectionVisitor.cs
+./Mono.Cecil/IRequireResolving.cs
+./Mono.Cecil/LinkedResource.cs
+./Mono.Cecil/ManifestResourceAttributes.cs
+./Mono.Cecil/MarshalSpec.cs
+./Mono.Cecil/MemberReference.cs
+./Mono.Cecil/MemberReferenceCollection.cs
+./Mono.Cecil/MetadataResolver.cs
+./Mono.Cecil/MethodAttributes.cs
+./Mono.Cecil/MethodCallingConvention.cs
+./Mono.Cecil/MethodDefinition.cs
+./Mono.Cecil/MethodDefinitionCollection.cs
+./Mono.Cecil/MethodImplAttributes.cs
+./Mono.Cecil/MethodReference.cs
+./Mono.Cecil/MethodReturnType.cs
+./Mono.Cecil/MethodSemanticsAttributes.cs
+./Mono.Cecil/MethodSpecification.cs
+./Mono.Cecil/Modifiers.cs
+./Mono.Cecil/ModuleDefinition.cs
+./Mono.Cecil/ModuleDefinitionCollection.cs
+./Mono.Cecil/ModuleReference.cs
+./Mono.Cecil/ModuleReferenceCollection.cs
+./Mono.Cecil/NativeType.cs
+./Mono.Cecil/NestedTypeCollection.cs
+./Mono.Cecil/NullReferenceImporter.cs
+./Mono.Cecil/OverrideCollection.cs
+./Mono.Cecil/ParameterAttributes.cs
+./Mono.Cecil/ParameterDefinition.cs
+./Mono.Cecil/ParameterDefinitionCollection.cs
+./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/PinnedType.cs
+./Mono.Cecil/PInvokeAttributes.cs
+./Mono.Cecil/PInvokeInfo.cs
+./Mono.Cecil/PointerType.cs
+./Mono.Cecil/PropertyAttributes.cs
+./Mono.Cecil/PropertyDefinition.cs
+./Mono.Cecil/PropertyDefinitionCollection.cs
+./Mono.Cecil/PropertyReference.cs
+./Mono.Cecil/ReferenceType.cs
+./Mono.Cecil/ReflectionController.cs
+./Mono.Cecil/ReflectionException.cs
+./Mono.Cecil/ReflectionHelper.cs
+./Mono.Cecil/ReflectionReader.cs
+./Mono.Cecil/ReflectionWriter.cs
+./Mono.Cecil/Resource.cs
+./Mono.Cecil/ResourceCollection.cs
+./Mono.Cecil/SecurityAction.cs
+./Mono.Cecil/SecurityDeclaration.cs
+./Mono.Cecil/SecurityDeclarationCollection.cs
+./Mono.Cecil/SecurityDeclarationReader.cs
+./Mono.Cecil/SentinelType.cs
+./Mono.Cecil/StructureReader.cs
+./Mono.Cecil/StructureWriter.cs
+./Mono.Cecil/TableComparers.cs
+./Mono.Cecil/TargetRuntime.cs
+./Mono.Cecil/TypeAttributes.cs
+./Mono.Cecil/TypeDefinition.cs
+./Mono.Cecil/TypeDefinitionCollection.cs
+./Mono.Cecil/TypeReference.cs
+./Mono.Cecil/TypeReferenceCollection.cs
+./Mono.Cecil/TypeSpecification.cs
+./Mono.Cecil/VariantType.cs
+./Mono.Cecil.Binary/BaseImageVisitor.cs
+./Mono.Cecil.Binary/CLIHeader.cs
+./Mono.Cecil.Binary/CopyImageVisitor.cs
+./Mono.Cecil.Binary/DataDirectory.cs
+./Mono.Cecil.Binary/DebugHeader.cs
+./Mono.Cecil.Binary/DebugStoreType.cs
+./Mono.Cecil.Binary/DOSHeader.cs
+./Mono.Cecil.Binary/ExportTable.cs
+./Mono.Cecil.Binary/IBinaryVisitable.cs
+./Mono.Cecil.Binary/IBinaryVisitor.cs
+./Mono.Cecil.Binary/IHeader.cs
+./Mono.Cecil.Binary/Image.cs
+./Mono.Cecil.Binary/ImageCharacteristics.cs
+./Mono.Cecil.Binary/ImageFormatException.cs
+./Mono.Cecil.Binary/ImageInitializer.cs
+./Mono.Cecil.Binary/ImageReader.cs
+./Mono.Cecil.Binary/ImageWriter.cs
+./Mono.Cecil.Binary/Imports.cs
+./Mono.Cecil.Binary/MemoryBinaryWriter.cs
+./Mono.Cecil.Binary/PEFileHeader.cs
+./Mono.Cecil.Binary/PEOptionalHeader.cs
+./Mono.Cecil.Binary/ResourceDataEntry.cs
+./Mono.Cecil.Binary/ResourceDirectoryEntry.cs
+./Mono.Cecil.Binary/ResourceDirectoryString.cs
+./Mono.Cecil.Binary/ResourceDirectoryTable.cs
+./Mono.Cecil.Binary/ResourceNode.cs
+./Mono.Cecil.Binary/ResourceReader.cs
+./Mono.Cecil.Binary/ResourceWriter.cs
+./Mono.Cecil.Binary/RuntimeImage.cs
+./Mono.Cecil.Binary/RVA.cs
+./Mono.Cecil.Binary/Section.cs
+./Mono.Cecil.Binary/SectionCharacteristics.cs
+./Mono.Cecil.Binary/SectionCollection.cs
+./Mono.Cecil.Binary/SubSystem.cs
+./Mono.Cecil.Metadata/Assembly.cs
+./Mono.Cecil.Metadata/AssemblyOS.cs
+./Mono.Cecil.Metadata/AssemblyProcessor.cs
+./Mono.Cecil.Metadata/AssemblyRef.cs
+./Mono.Cecil.Metadata/AssemblyRefOS.cs
+./Mono.Cecil.Metadata/AssemblyRefProcessor.cs
+./Mono.Cecil.Metadata/BaseMetadataVisitor.cs
+./Mono.Cecil.Metadata/BlobHeap.cs
+./Mono.Cecil.Metadata/ClassLayout.cs
+./Mono.Cecil.Metadata/CodedIndex.cs
+./Mono.Cecil.Metadata/Constant.cs
+./Mono.Cecil.Metadata/CultureUtils.cs
+./Mono.Cecil.Metadata/CustomAttribute.cs
+./Mono.Cecil.Metadata/DeclSecurity.cs
+./Mono.Cecil.Metadata/ElementType.cs
+./Mono.Cecil.Metadata/Event.cs
+./Mono.Cecil.Metadata/EventMap.cs
+./Mono.Cecil.Metadata/EventPtr.cs
+./Mono.Cecil.Metadata/ExportedType.cs
+./Mono.Cecil.Metadata/Field.cs
+./Mono.Cecil.Metadata/FieldLayout.cs
+./Mono.Cecil.Metadata/FieldMarshal.cs
+./Mono.Cecil.Metadata/FieldPtr.cs
+./Mono.Cecil.Metadata/FieldRVA.cs
+./Mono.Cecil.Metadata/File.cs
+./Mono.Cecil.Metadata/GenericParam.cs
+./Mono.Cecil.Metadata/GenericParamConstraint.cs
+./Mono.Cecil.Metadata/GuidHeap.cs
+./Mono.Cecil.Metadata/IMetadataRow.cs
+./Mono.Cecil.Metadata/IMetadataTable.cs
+./Mono.Cecil.Metadata/IMetadataVisitable.cs
+./Mono.Cecil.Metadata/IMetadataVisitor.cs
+./Mono.Cecil.Metadata/ImplMap.cs
+./Mono.Cecil.Metadata/InterfaceImpl.cs
+./Mono.Cecil.Metadata/ManifestResource.cs
+./Mono.Cecil.Metadata/MemberRef.cs
+./Mono.Cecil.Metadata/MetadataFormatException.cs
+./Mono.Cecil.Metadata/MetadataHeap.cs
+./Mono.Cecil.Metadata/MetadataInitializer.cs
+./Mono.Cecil.Metadata/MetadataReader.cs
+./Mono.Cecil.Metadata/MetadataRoot.cs
+./Mono.Cecil.Metadata/MetadataRowReader.cs
+./Mono.Cecil.Metadata/MetadataRowWriter.cs
+./Mono.Cecil.Metadata/MetadataStream.cs
+./Mono.Cecil.Metadata/MetadataStreamCollection.cs
+./Mono.Cecil.Metadata/MetadataTableReader.cs
+./Mono.Cecil.Metadata/MetadataTableWriter.cs
+./Mono.Cecil.Metadata/MetadataToken.cs
+./Mono.Cecil.Metadata/MetadataWriter.cs
+./Mono.Cecil.Metadata/Method.cs
+./Mono.Cecil.Metadata/MethodImpl.cs
+./Mono.Cecil.Metadata/MethodPtr.cs
+./Mono.Cecil.Metadata/MethodSemantics.cs
+./Mono.Cecil.Metadata/MethodSpec.cs
+./Mono.Cecil.Metadata/Module.cs
+./Mono.Cecil.Metadata/ModuleRef.cs
+./Mono.Cecil.Metadata/NestedClass.cs
+./Mono.Cecil.Metadata/Param.cs
+./Mono.Cecil.Metadata/ParamPtr.cs
+./Mono.Cecil.Metadata/Property.cs
+./Mono.Cecil.Metadata/PropertyMap.cs
+./Mono.Cecil.Metadata/PropertyPtr.cs
+./Mono.Cecil.Metadata/RowCollection.cs
+./Mono.Cecil.Metadata/StandAloneSig.cs
+./Mono.Cecil.Metadata/StringsHeap.cs
+./Mono.Cecil.Metadata/TableCollection.cs
+./Mono.Cecil.Metadata/TablesHeap.cs
+./Mono.Cecil.Metadata/TokenType.cs
+./Mono.Cecil.Metadata/TypeDef.cs
+./Mono.Cecil.Metadata/TypeRef.cs
+./Mono.Cecil.Metadata/TypeSpec.cs
+./Mono.Cecil.Metadata/UserStringsHeap.cs
+./Mono.Cecil.Metadata/Utilities.cs
+./Mono.Cecil.Cil/BaseCodeVisitor.cs
+./Mono.Cecil.Cil/CilWorker.cs
+./Mono.Cecil.Cil/Code.cs
+./Mono.Cecil.Cil/CodeReader.cs
+./Mono.Cecil.Cil/CodeWriter.cs
+./Mono.Cecil.Cil/Document.cs
+./Mono.Cecil.Cil/DocumentHashAlgorithm.cs
+./Mono.Cecil.Cil/DocumentLanguage.cs
+./Mono.Cecil.Cil/DocumentLanguageVendor.cs
+./Mono.Cecil.Cil/DocumentType.cs
+./Mono.Cecil.Cil/ExceptionHandler.cs
+./Mono.Cecil.Cil/ExceptionHandlerCollection.cs
+./Mono.Cecil.Cil/ExceptionHandlerType.cs
+./Mono.Cecil.Cil/FlowControl.cs
+./Mono.Cecil.Cil/GuidAttribute.cs
+./Mono.Cecil.Cil/ICodeVisitable.cs
+./Mono.Cecil.Cil/ICodeVisitor.cs
+./Mono.Cecil.Cil/Instruction.cs
+./Mono.Cecil.Cil/InstructionCollection.cs
+./Mono.Cecil.Cil/IScopeProvider.cs
+./Mono.Cecil.Cil/ISymbolReader.cs
+./Mono.Cecil.Cil/ISymbolStoreFactory.cs
+./Mono.Cecil.Cil/ISymbolWriter.cs
+./Mono.Cecil.Cil/IVariableDefinitionProvider.cs
+./Mono.Cecil.Cil/MethodBody.cs
+./Mono.Cecil.Cil/MethodDataSection.cs
+./Mono.Cecil.Cil/MethodHeader.cs
+./Mono.Cecil.Cil/OpCode.cs
+./Mono.Cecil.Cil/OpCodes.cs
+./Mono.Cecil.Cil/OpCodeNames.cs
+./Mono.Cecil.Cil/OpCodeType.cs
+./Mono.Cecil.Cil/OperandType.cs
+./Mono.Cecil.Cil/Scope.cs
+./Mono.Cecil.Cil/ScopeCollection.cs
+./Mono.Cecil.Cil/SequencePoint.cs
+./Mono.Cecil.Cil/StackBehaviour.cs
+./Mono.Cecil.Cil/SymbolStoreHelper.cs
+./Mono.Cecil.Cil/VariableDefinition.cs
+./Mono.Cecil.Cil/VariableDefinitionCollection.cs
+./Mono.Cecil.Cil/VariableReference.cs
+./Mono.Cecil.Signatures/Array.cs
+./Mono.Cecil.Signatures/ArrayShape.cs
+./Mono.Cecil.Signatures/BaseSignatureVisitor.cs
+./Mono.Cecil.Signatures/Class.cs
+./Mono.Cecil.Signatures/Constraint.cs
+./Mono.Cecil.Signatures/CustomAttrib.cs
+./Mono.Cecil.Signatures/CustomMod.cs
+./Mono.Cecil.Signatures/FieldSig.cs
+./Mono.Cecil.Signatures/FnPtr.cs
+./Mono.Cecil.Signatures/GenericArg.cs
+./Mono.Cecil.Signatures/GenericInst.cs
+./Mono.Cecil.Signatures/GenericInstSignature.cs
+./Mono.Cecil.Signatures/InputOutputItem.cs
+./Mono.Cecil.Signatures/ISignatureVisitable.cs
+./Mono.Cecil.Signatures/ISignatureVisitor.cs
+./Mono.Cecil.Signatures/LocalVarSig.cs
+./Mono.Cecil.Signatures/MarshalSig.cs
+./Mono.Cecil.Signatures/MethodDefSig.cs
+./Mono.Cecil.Signatures/MethodRefSig.cs
+./Mono.Cecil.Signatures/MethodSig.cs
+./Mono.Cecil.Signatures/MethodSpec.cs
+./Mono.Cecil.Signatures/MVar.cs
+./Mono.Cecil.Signatures/Param.cs
+./Mono.Cecil.Signatures/PropertySig.cs
+./Mono.Cecil.Signatures/Ptr.cs
+./Mono.Cecil.Signatures/RetType.cs
+./Mono.Cecil.Signatures/Signature.cs
+./Mono.Cecil.Signatures/SignatureReader.cs
+./Mono.Cecil.Signatures/SignatureWriter.cs
+./Mono.Cecil.Signatures/SigType.cs
+./Mono.Cecil.Signatures/SzArray.cs
+./Mono.Cecil.Signatures/TypeSpec.cs
+./Mono.Cecil.Signatures/ValueType.cs
+./Mono.Cecil.Signatures/Var.cs
+./Mono.Xml/SecurityParser.cs
+./Mono.Xml/SmallXmlParser.cs
index ff927b14e71f1fcea6135b79a0eaa17a126266f5..56000ca67775dca2b5f4439bc2fd5c3831da2458 100644 (file)
@@ -34,36 +34,19 @@ using Mono.Cecil;
 
 namespace GuiCompare {
 
-       public class AssemblyResolver : IAssemblyResolver {
+       public class AssemblyResolver : DefaultAssemblyResolver {
 
-               DefaultAssemblyResolver resolver = new DefaultAssemblyResolver ();
-
-               public AssemblyResolver ()
+               public AssemblyDefinition ResolveFile (string file)
                {
-               }
-
-               public AssemblyDefinition Resolve (string fullName)
-               {
-                       if (File.Exists (fullName))
-                               return Attach (ProcessFile (fullName));
-
-                       return Attach (resolver.Resolve (fullName));
+                       return ProcessFile (file);
                }
 
                AssemblyDefinition ProcessFile (string file)
                {
-                       resolver.AddSearchDirectory (Path.GetDirectoryName (file));
-                       return AssemblyFactory.GetAssembly (file);
-               }
+                       AddSearchDirectory (Path.GetDirectoryName (file));
+                       var assembly = AssemblyDefinition.ReadAssembly (file, new ReaderParameters { AssemblyResolver = this });
+                       RegisterAssembly (assembly);
 
-               public AssemblyDefinition Resolve (AssemblyNameReference name)
-               {
-                       return Attach (resolver.Resolve (name));
-               }
-
-               AssemblyDefinition Attach (AssemblyDefinition assembly)
-               {
-                       assembly.Resolver = this;
                        return assembly;
                }
        }
index 9d3b3eb43b689b37cafd354282f9b43b76edb1e0..6ac49d7207b9b46e78c9fb38cb746b69d49fc8cf 100644 (file)
@@ -19,7 +19,7 @@ namespace CorCompare {
                        TypeDefinition td = typeref.Resolve ();
                        if (td == null)
                                return false;
-                       
+
                        return td.IsPublic;
                }
 
@@ -64,17 +64,17 @@ namespace CorCompare {
 
                internal static bool IsPublic (CustomAttribute att)
                {
-                       return IsPublic (att.Constructor.DeclaringType);
+                       return IsPublic (att.AttributeType);
                }
 
                internal static string GetFullName (CustomAttribute att)
                {
-                       return att.Constructor.DeclaringType.FullName;
+                       return att.AttributeType.FullName;
                }
 
                internal static TypeDefinition GetTypeDefinition (CustomAttribute att)
                {
-                       return att.Constructor.DeclaringType.Resolve ();
+                       return att.AttributeType.Resolve ();
                }
        }
 }
index 631f1364e041d5141b85d690736bba82b547a64c..334c57fab33c99a32fe2894fcffd683eb538f440 100644 (file)
@@ -19,7 +19,7 @@ namespace CorCompare {
                {
                        return !IsInvalid (ch);
                }
-       
+
                public static bool IsInvalid (int ch)
                {
                        switch (ch) {
@@ -43,7 +43,7 @@ namespace CorCompare {
                        else
                                return true;
                }
-       
+
                public static int IndexOfInvalid (string s, bool allowSurrogate)
                {
                        for (int i = 0; i < s.Length; i++)
@@ -59,7 +59,7 @@ namespace CorCompare {
                                }
                        return -1;
                }
-       
+
                public static int IndexOfInvalid (char [] s, int start, int length, bool allowSurrogate)
                {
                        int end = start + length;
@@ -78,11 +78,11 @@ namespace CorCompare {
                                }
                        return -1;
                }
-       
+
                public WellFormedXmlWriter (XmlWriter writer) : base (writer)
                {
                }
-       
+
                public override void WriteString (string text)
                {
                        int i = IndexOfInvalid (text, true);
@@ -95,7 +95,7 @@ namespace CorCompare {
                                Writer.WriteString (text);
                        }
                }
-       
+
                public override void WriteChars (char [] text, int idx, int length)
                {
                        int start = idx;
@@ -112,179 +112,179 @@ namespace CorCompare {
                        if (start < end)
                                Writer.WriteChars (text, start, end - start);
                }
-       
+
        }
-       
+
        public class DefaultXmlWriter : XmlWriter
        {
                XmlWriter writer;
-       
+
                public DefaultXmlWriter (XmlWriter writer)
                {
                        this.writer = writer;
                }
-       
+
                protected XmlWriter Writer {
                        get { return writer; }
                }
-       
+
                public override void Close ()
                {
                        writer.Close ();
                }
-       
+
                public override void Flush ()
                {
                        writer.Flush ();
                }
-       
+
                public override string LookupPrefix (string ns)
                {
                        return writer.LookupPrefix (ns);
                }
-       
+
                public override void WriteBase64 (byte [] buffer, int index, int count)
                {
                        writer.WriteBase64 (buffer, index, count);
                }
-       
+
                public override void WriteBinHex (byte [] buffer, int index, int count)
                {
                        writer.WriteBinHex (buffer, index, count);
                }
-       
+
                public override void WriteCData (string text)
                {
                        writer.WriteCData (text);
                }
-       
+
                public override void WriteCharEntity (char ch)
                {
                        writer.WriteCharEntity (ch);
                }
-       
+
                public override void WriteChars (char [] buffer, int index, int count)
                {
                        writer.WriteChars (buffer, index, count);
                }
-       
+
                public override void WriteComment (string text)
                {
                        writer.WriteComment (text);
                }
-       
+
                public override void WriteDocType (string name, string pubid, string sysid, string subset)
                {
                        writer.WriteDocType (name, pubid, sysid, subset);
                }
-       
+
                public override void WriteEndAttribute ()
                {
                        writer.WriteEndAttribute ();
                }
-       
+
                public override void WriteEndDocument ()
                {
                        writer.WriteEndDocument ();
                }
-       
+
                public override void WriteEndElement ()
                {
                        writer.WriteEndElement ();
                }
-       
+
                public override void WriteEntityRef (string name)
                {
                        writer.WriteEntityRef (name);
                }
-       
+
                public override void WriteFullEndElement ()
                {
                        writer.WriteFullEndElement ();
                }
-       
+
                public override void WriteName (string name)
                {
                        writer.WriteName (name);
                }
-       
+
                public override void WriteNmToken (string name)
                {
                        writer.WriteNmToken (name);
                }
-       
+
                public override void WriteNode (XmlReader reader, bool defattr)
                {
                        writer.WriteNode (reader, defattr);
                }
-       
+
                public override void WriteProcessingInstruction (string name, string text)
                {
                        writer.WriteProcessingInstruction (name, text);
                }
-       
+
                public override void WriteQualifiedName (string localName, string ns)
                {
                        writer.WriteQualifiedName (localName, ns);
                }
-       
+
                public override void WriteRaw (string data)
                {
                        writer.WriteRaw (data);
                }
-       
+
                public override void WriteRaw (char [] buffer, int index, int count)
                {
                        writer.WriteRaw (buffer, index, count);
                }
-       
+
                public override void WriteStartAttribute (string prefix, string localName, string ns)
                {
                        writer.WriteStartAttribute (prefix, localName, ns);
                }
-       
+
                public override void WriteStartDocument (bool standalone)
                {
                        writer.WriteStartDocument (standalone);
                }
-       
+
                public override void WriteStartDocument ()
                {
                        writer.WriteStartDocument ();
                }
-       
+
                public override void WriteStartElement (string prefix, string localName, string ns)
                {
                        writer.WriteStartElement (prefix, localName, ns);
                }
-       
+
                public override void WriteString (string text)
                {
                        writer.WriteString (text);
                }
-       
+
                public override void WriteSurrogateCharEntity (char lowChar, char highChar)
                {
                        writer.WriteSurrogateCharEntity (lowChar, highChar);
                }
-       
+
                public override void WriteWhitespace (string ws)
                {
                        writer.WriteWhitespace (ws);
                }
-       
+
                public override WriteState WriteState {
                        get {
                                return writer.WriteState;
                        }
                }
-       
+
                public override string XmlLang {
                        get {
                                return writer.XmlLang;
                        }
                }
-       
+
                public override XmlSpace XmlSpace {
                        get {
                                return writer.XmlSpace;
index c5d2ac11a65bee86f055b7b030442d9dc3258aa8..322e4c883b7ddc56ac39c62c9c19695b2180587c 100644 (file)
@@ -295,14 +295,14 @@ namespace Mono.AssemblyCompare
                public bool HaveWarnings {
                        get { return haveWarnings; }
                }
-               
+
                public Counters Counters {
                        get { return counters; }
                }
-               
+
                public abstract void CompareTo (XmlDocument doc, XmlNode parent, object other);
        }
-       
+
        abstract class XMLNameGroup : XMLData
        {
                protected XmlNode group;
@@ -530,7 +530,7 @@ namespace Mono.AssemblyCompare
                        this.document = doc;
                        XmlNode parent = doc.CreateElement ("assemblies", null);
                        doc.AppendChild (parent);
-                       
+
                        CompareTo (doc, parent, other);
 
                        XmlNode decl = doc.CreateXmlDeclaration ("1.0", null, null);
@@ -660,7 +660,7 @@ namespace Mono.AssemblyCompare
                XMLEvents events;
                XMLMethods methods;
                XMLClass [] nested;
-               
+
                public override void LoadData (XmlNode node)
                {
                        if (node == null)
@@ -694,7 +694,7 @@ namespace Mono.AssemblyCompare
                                // Console.Error.WriteLine ("Empty class {0} {1}", name, type);
                                return;
                        }
-                               
+
                        if (child.Name == "attributes") {
                                attributes = new XMLAttributes ();
                                attributes.LoadData (child);
@@ -995,7 +995,7 @@ namespace Mono.AssemblyCompare
 
                        if (type != oparm.type)
                                AddWarning (parent, "Parameter type is wrong: {0} != {1}", type, oparm.type);
-                       
+
                        if (attrib != oparm.attrib)
                                AddWarning (parent, "Parameter attributes wrong: {0} != {1}", attrib, oparm.attrib);
 
@@ -1101,7 +1101,7 @@ namespace Mono.AssemblyCompare
                                if (de.Value.Equals (other_value))
                                        continue;
 
-                               AddWarning (parent, "Property '{0}' is '{1}' and should be '{2}'", 
+                               AddWarning (parent, "Property '{0}' is '{1}' and should be '{2}'",
                                        de.Key, de.Value, other_value == null ? "null" : other_value);
                        }
                }
@@ -1156,7 +1156,7 @@ namespace Mono.AssemblyCompare
                {
                        string key = null;
 
-                       // if multiple attributes with the same name (type) exist, then we 
+                       // if multiple attributes with the same name (type) exist, then we
                        // cannot be sure which attributes correspond, so we must use the
                        // name of the attribute (type) and the name/value of its properties
                        // as key
@@ -1175,7 +1175,7 @@ namespace Mono.AssemblyCompare
                                        }
                                }
 
-                               // sort properties by name, as order of properties in XML is 
+                               // sort properties by name, as order of properties in XML is
                                // undefined
                                keyParts.Sort ();
 
@@ -1294,7 +1294,7 @@ namespace Mono.AssemblyCompare
                        XmlAttribute xatt = node.Attributes ["attrib"];
                        if (xatt != null)
                                access [name] = xatt.Value;
-                       
+
                        XmlNode orig = node;
 
                        node = node.FirstChild;
@@ -1364,7 +1364,7 @@ namespace Mono.AssemblyCompare
                        return null;
                }
        }
-       
+
        class XMLFields : XMLMember
        {
                Hashtable fieldTypes;
@@ -1819,7 +1819,7 @@ namespace Mono.AssemblyCompare
                        if ((ma & MethodAttributes.RequireSecObject) != 0)
                                ma = (MethodAttributes) (att - (int) MethodAttributes.RequireSecObject);
 
-                       // we don't care if the implementation is forwarded through PInvoke 
+                       // we don't care if the implementation is forwarded through PInvoke
                        if ((ma & MethodAttributes.PinvokeImpl) != 0)
                                ma = (MethodAttributes) (att - (int) MethodAttributes.PinvokeImpl);
 
index c488c0d0fd0df239dcee74c4984a758f42b8d2bc..8048ffa29d8480bec5990f4565d38d41f569d287 100644 (file)
@@ -11,6 +11,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Globalization;
+using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Security.Permissions;
@@ -61,7 +62,7 @@ namespace CorCompare
                        return CleanupTypeName (type.FullName);
                }
 
-               static string CleanupTypeName (string t)
+               public static string CleanupTypeName (string t)
                {
                        return t.Replace ('<', '[').Replace ('>', ']').Replace ('/', '+');
                }
@@ -151,13 +152,10 @@ namespace CorCompare
                                natts = document.CreateElement ("attributes", null);
                                parent.AppendChild (natts);
                        }
-                       
-                       foreach (TypeReference tref in ass.MainModule.ExternTypes) {
-                               TypeDefinition def = tref.Resolve ();
-                               if (def == null)
-                                       continue;
 
-                               if (((uint)def.Attributes & 0x200000u) == 0)
+                       foreach (ExportedType type in ass.MainModule.ExportedTypes) {
+
+                               if (((uint)type.Attributes & 0x200000u) == 0)
                                        continue;
 
                                XmlNode node = document.CreateElement ("attribute");
@@ -165,7 +163,7 @@ namespace CorCompare
                                XmlNode properties = node.AppendChild (document.CreateElement ("properties"));
                                XmlNode property = properties.AppendChild (document.CreateElement ("property"));
                                AddAttribute (property, "name", "Destination");
-                               AddAttribute (property, "value", Utils.CleanupTypeName (tref));
+                               AddAttribute (property, "value", Utils.CleanupTypeName (type.FullName));
                                natts.AppendChild (node);
                        }
                }
@@ -176,7 +174,7 @@ namespace CorCompare
                        tftd.DoOutput ();
                }
        }
-       
+
        class AssemblyData : BaseData
        {
                AssemblyDefinition ass;
@@ -199,7 +197,7 @@ namespace CorCompare
                        parent.AppendChild (nassembly);
                        TypeForwardedToData.OutputForwarders (document, nassembly, ass);
                        AttributeData.OutputAttributes (document, nassembly, ass.CustomAttributes);
-                       TypeDefinitionCollection typesCollection = ass.MainModule.Types;
+                       var typesCollection = ass.MainModule.Types;
                        if (typesCollection == null || typesCollection.Count == 0)
                                return;
                        object [] typesArray = new object [typesCollection.Count];
@@ -268,7 +266,7 @@ namespace CorCompare
                }
 
 
-               protected abstract CustomAttributeCollection GetCustomAttributes (MemberReference member);
+               protected abstract IList<CustomAttribute> GetCustomAttributes (MemberReference member);
 
                protected virtual void AddExtraData (XmlNode p, MemberReference memberDefenition)
                {
@@ -343,7 +341,7 @@ namespace CorCompare
                        this.type = type;
                }
 
-               protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+               protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
                        return ((TypeDefinition) member).CustomAttributes;
                }
 
@@ -446,7 +444,7 @@ namespace CorCompare
                        foreach (MemberData md in members)
                                md.DoOutput ();
 
-                       NestedTypeCollection nested = type.NestedTypes;
+                       var nested = type.NestedTypes;
                        //remove non public(familiy) and nested in second degree
                        for (int i = nested.Count - 1; i >= 0; i--) {
                                TypeDefinition t = nested [i];
@@ -547,7 +545,7 @@ namespace CorCompare
                FieldDefinition [] GetFields (TypeDefinition type) {
                        ArrayList list = new ArrayList ();
 
-                       FieldDefinitionCollection fields = type.Fields;
+                       var fields = type.Fields;
                        foreach (FieldDefinition field in fields) {
                                if (field.IsSpecialName)
                                        continue;
@@ -575,7 +573,7 @@ namespace CorCompare
                internal static PropertyDefinition [] GetProperties (TypeDefinition type) {
                        ArrayList list = new ArrayList ();
 
-                       PropertyDefinitionCollection properties = type.Properties;//type.GetProperties (flags);
+                       var properties = type.Properties;//type.GetProperties (flags);
                        foreach (PropertyDefinition property in properties) {
                                MethodDefinition getMethod = property.GetMethod;
                                MethodDefinition setMethod = property.SetMethod;
@@ -597,7 +595,7 @@ namespace CorCompare
                {
                        ArrayList list = new ArrayList ();
 
-                       MethodDefinitionCollection methods = type.Methods;//type.GetMethods (flags);
+                       var methods = type.Methods;//type.GetMethods (flags);
                        foreach (MethodDefinition method in methods) {
                                if (method.IsSpecialName && !method.Name.StartsWith ("op_"))
                                        continue;
@@ -633,7 +631,7 @@ namespace CorCompare
                {
                        ArrayList list = new ArrayList ();
 
-                       ConstructorCollection ctors = type.Constructors;//type.GetConstructors (flags);
+                       var ctors = type.Methods.Where (m => m.IsConstructor);//type.GetConstructors (flags);
                        foreach (MethodDefinition constructor in ctors) {
                                // we're only interested in public or protected members
                                if (!MustDocumentMethod(constructor))
@@ -649,7 +647,7 @@ namespace CorCompare
                {
                        ArrayList list = new ArrayList ();
 
-                       EventDefinitionCollection events = type.Events;//type.GetEvents (flags);
+                       var events = type.Events;//type.GetEvents (flags);
                        foreach (EventDefinition eventDef in events) {
                                MethodDefinition addMethod = eventDef.AddMethod;//eventInfo.GetAddMethod (true);
 
@@ -670,7 +668,7 @@ namespace CorCompare
                {
                }
 
-               protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+               protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
                        return ((FieldDefinition) member).CustomAttributes;
                }
 
@@ -726,7 +724,7 @@ namespace CorCompare
                {
                }
 
-               protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+               protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
                        return ((PropertyDefinition) member).CustomAttributes;
                }
 
@@ -789,7 +787,7 @@ namespace CorCompare
                {
                }
 
-               protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+               protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
                        return ((EventDefinition) member).CustomAttributes;
                }
 
@@ -830,7 +828,7 @@ namespace CorCompare
                {
                }
 
-               protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+               protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
                        return ((MethodDefinition) member).CustomAttributes;
                }
 
@@ -868,11 +866,11 @@ namespace CorCompare
                        if (mbase.IsStatic)
                                AddAttribute (p, "static", "true");
 
-                       string rettype = Utils.CleanupTypeName (mbase.ReturnType.ReturnType);
+                       string rettype = Utils.CleanupTypeName (mbase.MethodReturnType.ReturnType);
                        if (rettype != "System.Void" || !mbase.IsConstructor)
                                AddAttribute (p, "returntype", (rettype));
 
-                       AttributeData.OutputAttributes (document, p, mbase.ReturnType.CustomAttributes);
+                       AttributeData.OutputAttributes (document, p, mbase.MethodReturnType.CustomAttributes);
 
                        MemberData.OutputGenericParameters (document, p, mbase);
                }
@@ -909,9 +907,9 @@ namespace CorCompare
 
        class ParameterData : BaseData
        {
-               private ParameterDefinitionCollection parameters;
+               private IList<ParameterDefinition> parameters;
 
-               public ParameterData (XmlDocument document, XmlNode parent, ParameterDefinitionCollection parameters)
+               public ParameterData (XmlDocument document, XmlNode parent, IList<ParameterDefinition> parameters)
                        : base (document, parent)
                {
                        this.parameters = parameters;
@@ -931,7 +929,7 @@ namespace CorCompare
 
                                string direction = "in";
 
-                               if (parameter.ParameterType is ReferenceType)
+                               if (parameter.ParameterType is ByReferenceType)
                                        direction = parameter.IsOut ? "out" : "ref";
 
                                TypeReference t = parameter.ParameterType;
@@ -953,9 +951,9 @@ namespace CorCompare
 
        class AttributeData : BaseData
        {
-               CustomAttributeCollection atts;
+               IList<CustomAttribute> atts;
 
-               AttributeData (XmlDocument doc, XmlNode parent, CustomAttributeCollection attributes)
+               AttributeData (XmlDocument doc, XmlNode parent, IList<CustomAttribute> attributes)
                        : base (doc, parent)
                {
                        atts = attributes;
@@ -977,12 +975,6 @@ namespace CorCompare
 
                        for (int i = 0; i < atts.Count; ++i) {
                                CustomAttribute att = atts [i];
-                               try {
-                                       att.Resolve ();
-                               } catch {}
-
-                               if (!att.Resolved)
-                                       continue;
 
                                string attName = Utils.CleanupTypeName (att.Constructor.DeclaringType);
                                if (SkipAttribute (att))
@@ -1039,10 +1031,10 @@ namespace CorCompare
 
                static void PopulateMapping (Dictionary<string, object> mapping, CustomAttribute attribute)
                {
-                       foreach (DictionaryEntry entry in attribute.Properties) {
-                               var name = (string) entry.Key;
+                       foreach (var named_argument in attribute.Properties) {
+                               var name = named_argument.Name;
 
-                               mapping.Add (name, GetArgumentValue (attribute.GetPropertyType (name), entry.Value));
+                               mapping.Add (name, GetArgumentValue (named_argument.Argument.Type, named_argument.Argument.Value));
                        }
                }
 
@@ -1065,7 +1057,7 @@ namespace CorCompare
                                        break;
                                case Code.Ldarg:
                                case Code.Ldarg_S:
-                                       argument = ((ParameterDefinition) instruction.Operand).Sequence;
+                                       argument = ((ParameterDefinition) instruction.Operand).Index + 1;
                                        break;
 
                                case Code.Stfld:
@@ -1126,7 +1118,8 @@ namespace CorCompare
                                if (!field_mapping.TryGetValue (pair.Value, out argument))
                                        continue;
 
-                               mapping.Add (pair.Key.Name, GetArgumentValue (constructor.Parameters [argument].ParameterType, attribute.ConstructorParameters [argument]));
+                               var ca_arg = attribute.ConstructorArguments [argument];
+                               mapping.Add (pair.Key.Name, GetArgumentValue (ca_arg.Type, ca_arg.Value));
                        }
                }
 
@@ -1210,7 +1203,7 @@ namespace CorCompare
                                || type_name.EndsWith ("TODOAttribute");
                }
 
-               public static void OutputAttributes (XmlDocument doc, XmlNode parent, CustomAttributeCollection attributes)
+               public static void OutputAttributes (XmlDocument doc, XmlNode parent, IList<CustomAttribute> attributes)
                {
                        AttributeData ad = new AttributeData (doc, parent, attributes);
                        ad.DoOutput ();
@@ -1219,7 +1212,7 @@ namespace CorCompare
 
        static class Parameters {
 
-               public static string GetSignature (ParameterDefinitionCollection infos)
+               public static string GetSignature (IList<ParameterDefinition> infos)
                {
                        if (infos == null || infos.Count == 0)
                                return "";
@@ -1235,8 +1228,6 @@ namespace CorCompare
                                string modifier;
                                if ((info.Attributes & ParameterAttributes.In) != 0)
                                        modifier = "in";
-                               else if ((info.Attributes & ParameterAttributes.Retval) != 0)
-                                       modifier = "ref";
                                else if ((info.Attributes & ParameterAttributes.Out) != 0)
                                        modifier = "out";
                                else
@@ -1293,8 +1284,8 @@ namespace CorCompare
                        if (res != 0)
                                return res;
 
-                       ParameterDefinitionCollection pia = ma.Parameters ;
-                       ParameterDefinitionCollection pib = mb.Parameters;
+                       IList<ParameterDefinition> pia = ma.Parameters ;
+                       IList<ParameterDefinition> pib = mb.Parameters;
                        res = pia.Count - pib.Count;
                        if (res != 0)
                                return res;
index 696740ecd4bdcda050c58167a15ed1ef996eccb6..13cf4686cc608c28b2e991d54d9d016fb72074e6 100644 (file)
@@ -38,6 +38,10 @@ namespace Mono.Linker.Steps {
                        get { return _context; }
                }
 
+               public AnnotationStore Annotations {
+                       get { return _context.Annotations; }
+               }
+
                public void Process (LinkContext context)
                {
                        _context = context;
index fabe022ca05e0c5cf95a5c377c79da711296238f..e118175aa1c1b9cc69a0bd400ff57e1e1cceff58 100644 (file)
@@ -42,27 +42,10 @@ namespace Mono.Linker.Steps {
 
                static void CleanAssembly (AssemblyDefinition asm)
                {
-                       CleanMemberReferences (asm.MainModule);
                        foreach (TypeDefinition type in asm.MainModule.Types)
                                CleanType (type);
                }
 
-               static void CleanMemberReferences (ModuleDefinition module)
-               {
-                       var references = module.MemberReferences;
-
-                       for (int i = 0; i < references.Count; i++) {
-                               var reference = references [i];
-                               GenericInstanceType git = reference.DeclaringType as GenericInstanceType;
-                               if (git == null)
-                                       continue;
-
-                               foreach (TypeReference arg in git.GenericArguments)
-                                       if (!CheckType (module, arg))
-                                               references.RemoveAt (i--);
-                       }
-               }
-
                static bool CheckType (ModuleDefinition module, TypeReference reference)
                {
                        TypeSpecification spec = reference as TypeSpecification;
index c8256a5c720b4cf7338aabe582612033c691b0ad..45ac9240a1fe091bb17ae7ac553780d765e08b9c 100644 (file)
@@ -77,17 +77,15 @@ namespace Mono.Linker.Steps {
                void LoadAssembly (AssemblyNameReference name)
                {
                        AssemblyDefinition assembly = Context.Resolve (name);
-                       ResolveFromAssemblyStep.ProcessLibrary (assembly);
+                       ResolveFromAssemblyStep.ProcessLibrary (Context, assembly);
                }
 
                AssemblyNameReference GetAssemblyName (I18nAssemblies assembly)
                {
-                       AssemblyNameReference name = new AssemblyNameReference ();
-                       name.Name = "I18N";
+                       AssemblyNameReference name = new AssemblyNameReference ("I18N", GetCorlibVersion ());
                        if (assembly != I18nAssemblies.Base)
                                name.Name += "." + assembly;
 
-                       name.Version = GetCorlibVersion ();
                        name.PublicKeyToken = _pktoken;
                        return name;
                }
index 745ed9483335a66b15995bca02c0022d512b3250..29d218599e3c2ae92ebb0710224e9262ca27c43e 100644 (file)
@@ -29,6 +29,8 @@
 
 using System;
 using System.Collections;
+using System.Linq;
+
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
@@ -40,6 +42,10 @@ namespace Mono.Linker.Steps {
                Queue _methods;
                ArrayList _virtual_methods;
 
+               public AnnotationStore Annotations {
+                       get { return _context.Annotations; }
+               }
+
                public MarkStep ()
                {
                        _methods = new Queue ();
@@ -79,8 +85,6 @@ namespace Mono.Linker.Steps {
                                InitializeFields (type);
                        if (type.HasMethods)
                                InitializeMethods (type.Methods);
-                       if (type.HasConstructors)
-                               InitializeMethods (type.Constructors);
                }
 
                void InitializeFields (TypeDefinition type)
@@ -157,27 +161,16 @@ namespace Mono.Linker.Steps {
                        ProcessVirtualMethod (method);
                }
 
-               void MarkMethodBody (MethodBody body)
+               void MarkMarshalSpec (IMarshalInfoProvider spec)
                {
-                       foreach (VariableDefinition var in body.Variables)
-                               MarkType (var.VariableType);
-
-                       foreach (ExceptionHandler eh in body.ExceptionHandlers)
-                               if (eh.Type == ExceptionHandlerType.Catch)
-                                       MarkType (eh.CatchType);
-
-                       foreach (Instruction instruction in body.Instructions)
-                               MarkInstruction (instruction);
-               }
+                       if (!spec.HasMarshalInfo)
+                               return;
 
-               void MarkMarshalSpec (IHasMarshalSpec spec)
-               {
-                       CustomMarshalerSpec marshaler = spec.MarshalSpec as CustomMarshalerSpec;
+                       var marshaler = spec.MarshalInfo as CustomMarshalInfo;
                        if (marshaler == null)
                                return;
 
-                       TypeDefinition type = _context.GetType (marshaler.ManagedType);
-                       MarkType (type);
+                       MarkType (marshaler.ManagedType);
                }
 
                void MarkCustomAttributes (ICustomAttributeProvider provider)
@@ -193,15 +186,7 @@ namespace Mono.Linker.Steps {
                {
                        MarkMethod (ca.Constructor);
 
-                       if (!ca.Resolved) {
-                               ca = ca.Clone ();
-                               ca.Resolve ();
-                       }
-
-                       if (!ca.Resolved)
-                               return;
-
-                       MarkCustomAttributeParameters (ca);
+                       MarkCustomAttributeArguments (ca);
 
                        TypeReference constructor_type = ca.Constructor.DeclaringType;
                        TypeDefinition type = constructor_type.Resolve ();
@@ -214,24 +199,21 @@ namespace Mono.Linker.Steps {
 
                void MarkCustomAttributeProperties (CustomAttribute ca, TypeDefinition attribute)
                {
-                       foreach (DictionaryEntry de in ca.Properties) {
-                               string propertyname = (string) de.Key;
-
-                               PropertyDefinition property = GetProperty (attribute, propertyname);
+                       foreach (var named_argument in ca.Properties) {
+                               PropertyDefinition property = GetProperty (attribute, named_argument.Name);
                                if (property != null)
                                        MarkMethod (property.SetMethod);
 
-                               TypeReference propType = ca.GetPropertyType (propertyname);
-                               MarkIfType (propType, de.Value);
+                               MarkIfType (named_argument.Argument);
                        }
                }
 
                PropertyDefinition GetProperty (TypeDefinition type, string propertyname)
                {
                        while (type != null) {
-                               PropertyDefinition [] properties = type.Properties.GetProperties (propertyname);
-                               if (properties != null && properties.Length != 0 && properties [0].SetMethod != null)
-                                       return properties [0];
+                               PropertyDefinition property = type.Properties.FirstOrDefault (p => p.Name == propertyname);
+                               if (property != null)
+                                       return property;
 
                                type = type.BaseType != null ? ResolveTypeDefinition (type.BaseType) : null;
                        }
@@ -241,22 +223,19 @@ namespace Mono.Linker.Steps {
 
                void MarkCustomAttributeFields (CustomAttribute ca, TypeDefinition attribute)
                {
-                       foreach (DictionaryEntry de in ca.Fields) {
-                               string fieldname = (string) de.Key;
-
-                               FieldDefinition field = GetField (attribute, fieldname);
+                       foreach (var named_argument in ca.Fields) {
+                               FieldDefinition field = GetField (attribute, named_argument.Name);
                                if (field != null)
                                        MarkField (field);
 
-                               TypeReference fieldType = ca.GetFieldType (fieldname);
-                               MarkIfType (fieldType, de.Value);
+                               MarkIfType (named_argument.Argument);
                        }
                }
 
                FieldDefinition GetField (TypeDefinition type, string fieldname)
                {
                        while (type != null) {
-                               FieldDefinition field = type.Fields.GetField (fieldname);
+                               FieldDefinition field = type.Fields.FirstOrDefault (f => f.Name == fieldname);
                                if (field != null)
                                        return field;
 
@@ -266,33 +245,22 @@ namespace Mono.Linker.Steps {
                        return null;
                }
 
-               void MarkCustomAttributeParameters (CustomAttribute ca)
+               void MarkCustomAttributeArguments (CustomAttribute ca)
                {
-                       for (int i = 0; i < ca.Constructor.Parameters.Count; i++) {
-                               ParameterDefinition param = ca.Constructor.Parameters [i];
-                               MarkIfType (param.ParameterType, ca.ConstructorParameters [i]);
-                       }
+                       foreach (var argument in ca.ConstructorArguments)
+                               MarkIfType (argument);
                }
 
-               void MarkIfType (TypeReference slotType, object value)
+               void MarkIfType (CustomAttributeArgument argument)
                {
-                       if (slotType.FullName != Constants.Type)
+                       if (argument.Type.FullName != "System.Type")
                                return;
 
-                       string type_name = (string) value;
-
-                       try {
-                               var type = TypeParser.ParseType (slotType.Module, type_name);
-                               if (type == null)
-                                       return;
-
-                               MarkType (type);
-                       } catch {
-                               return;
-                       }
+                       MarkType (argument.Type);
+                       MarkType ((TypeReference) argument.Value);
                }
 
-               protected static bool CheckProcessed (IAnnotationProvider provider)
+               protected bool CheckProcessed (IMetadataTokenProvider provider)
                {
                        if (Annotations.IsProcessed (provider))
                                return true;
@@ -350,7 +318,7 @@ namespace Mono.Linker.Steps {
 
                void MarkScope (IMetadataScope scope)
                {
-                       IAnnotationProvider provider = scope as IAnnotationProvider;
+                       var provider = scope as IMetadataTokenProvider;
                        if (provider == null)
                                return;
 
@@ -384,13 +352,12 @@ namespace Mono.Linker.Steps {
                        MarkCustomAttributes (type);
 
                        if (IsMulticastDelegate (type)) {
-                               MarkMethodCollection (type.Constructors);
                                MarkMethodCollection (type.Methods);
                        }
 
-                       if (IsSerializable (type) && type.HasConstructors) {
-                               MarkMethodsIf (type.Constructors, IsDefaultConstructorPredicate);
-                               MarkMethodsIf (type.Constructors, IsSpecialSerializationConstructorPredicate);
+                       if (IsSerializable (type) && type.HasMethods) {
+                               MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
+                               MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
                        }
 
                        MarkTypeSpecialCustomAttributes (type);
@@ -405,11 +372,10 @@ namespace Mono.Linker.Steps {
                                        MarkType (iface);
                        }
 
-                       if (type.HasMethods)
+                       if (type.HasMethods) {
                                MarkMethodsIf (type.Methods, IsVirtualAndHasPreservedParent);
-
-                       if (type.HasConstructors)
-                               MarkMethodsIf (type.Constructors, IsStaticConstructorPredicate);
+                               MarkMethodsIf (type.Methods, IsStaticConstructorPredicate);
+                       }
 
                        Annotations.Mark (type);
 
@@ -457,10 +423,10 @@ namespace Mono.Linker.Steps {
                {
                        argument = null;
 
-                       if (!attribute.Resolved || attribute.ConstructorParameters.Count < 1)
+                       if (attribute.ConstructorArguments.Count < 1)
                                return false;
 
-                       argument = attribute.ConstructorParameters [0] as string;
+                       argument = attribute.ConstructorArguments [0].Value as string;
 
                        return argument != null;
                }
@@ -558,7 +524,7 @@ namespace Mono.Linker.Steps {
                        if (!IsConstructor (method))
                                return false;
 
-                       ParameterDefinitionCollection parameters = method.Parameters;
+                       var parameters = method.Parameters;
                        if (parameters.Count != 2)
                                return false;
 
@@ -584,16 +550,14 @@ namespace Mono.Linker.Steps {
 
                static bool IsConstructor (MethodDefinition method)
                {
-                       return method.Name == MethodDefinition.Ctor && method.IsSpecialName &&
-                               method.IsRuntimeSpecialName;
+                       return method.IsConstructor && !method.IsStatic;
                }
 
                static MethodPredicate IsStaticConstructorPredicate = new MethodPredicate (IsStaticConstructor);
 
                static bool IsStaticConstructor (MethodDefinition method)
                {
-                       return method.Name == MethodDefinition.Cctor && method.IsSpecialName &&
-                               method.IsRuntimeSpecialName;
+                       return method.IsConstructor && method.IsStatic;
                }
 
                static bool IsSerializable (TypeDefinition td)
@@ -622,7 +586,7 @@ namespace Mono.Linker.Steps {
                                if (git != null)
                                        MarkGenericArguments (git);
 
-                               ModType mod = type as ModType;
+                               var mod = type as IModifierType;
                                if (mod != null)
                                        MarkModifierType (mod);
 
@@ -632,7 +596,7 @@ namespace Mono.Linker.Steps {
                        return type;
                }
 
-               void MarkModifierType (ModType mod)
+               void MarkModifierType (IModifierType mod)
                {
                        MarkType (mod.ModifierType);
                }
@@ -669,7 +633,7 @@ namespace Mono.Linker.Steps {
                                if (argument_definition == null)
                                        continue;
 
-                               MarkMethodsIf (argument_definition.Constructors, ctor => !ctor.IsStatic && !ctor.HasParameters);
+                               MarkMethodsIf (argument_definition.Methods, ctor => !ctor.IsStatic && !ctor.HasParameters);
                        }
                }
 
@@ -730,8 +694,6 @@ namespace Mono.Linker.Steps {
                {
                        if (type.HasMethods)
                                MarkMethodCollection (type.Methods);
-                       if (type.HasConstructors)
-                               MarkMethodCollection (type.Constructors);
                }
 
                void MarkMethodCollection (IEnumerable methods)
@@ -825,9 +787,9 @@ namespace Mono.Linker.Steps {
 
                        MarkBaseMethods (method);
 
-                       MarkType (method.ReturnType.ReturnType);
-                       MarkCustomAttributes (method.ReturnType);
-                       MarkMarshalSpec (method.ReturnType);
+                       MarkType (method.ReturnType);
+                       MarkCustomAttributes (method.MethodReturnType);
+                       MarkMarshalSpec (method.MethodReturnType);
 
                        if (ShouldParseMethodBody (method))
                                MarkMethodBody (method.Body);
@@ -911,6 +873,19 @@ namespace Mono.Linker.Steps {
                        MarkMethod (method);
                }
 
+               void MarkMethodBody (MethodBody body)
+               {
+                       foreach (VariableDefinition var in body.Variables)
+                               MarkType (var.VariableType);
+
+                       foreach (ExceptionHandler eh in body.ExceptionHandlers)
+                               if (eh.HandlerType == ExceptionHandlerType.Catch)
+                                       MarkType (eh.CatchType);
+
+                       foreach (Instruction instruction in body.Instructions)
+                               MarkInstruction (instruction);
+               }
+
                void MarkInstruction (Instruction instruction)
                {
                        switch (instruction.OpCode.OperandType) {
index f6ec44d474358ee47bdabed3c99c065305fa7538..d2b137caf07562afdeeda52a1dd2d764e2faacda 100644 (file)
@@ -61,8 +61,7 @@ namespace Mono.Linker.Steps {
 
                        switch (Annotations.GetAction (assembly)) {
                        case AssemblyAction.Link:
-                               SaveSymbols (assembly);
-                               AssemblyFactory.SaveAssembly (assembly, GetAssemblyFileName (assembly, directory));
+                               assembly.Write (GetAssemblyFileName (assembly, directory), SaveSymbols (assembly));
                                break;
                        case AssemblyAction.Copy:
                                CopyAssembly (GetOriginalAssemblyFileInfo (assembly), directory);
@@ -75,15 +74,17 @@ namespace Mono.Linker.Steps {
                        }
                }
 
-               void SaveSymbols (AssemblyDefinition assembly)
+               WriterParameters SaveSymbols (AssemblyDefinition assembly)
                {
+                       var parameters = new WriterParameters ();
                        if (!Context.LinkSymbols)
-                               return;
+                               return parameters;
 
-                       if (!Annotations.HasSymbols (assembly))
-                               return;
+                       if (!assembly.MainModule.HasSymbols)
+                               return parameters;
 
-                       assembly.MainModule.SaveSymbols();
+                       parameters.WriteSymbols = true;
+                       return parameters;
                }
 
                static void CopyConfigFileIfNeeded (AssemblyDefinition assembly, string directory)
@@ -107,7 +108,7 @@ namespace Mono.Linker.Steps {
 
                static FileInfo GetOriginalAssemblyFileInfo (AssemblyDefinition assembly)
                {
-                       return assembly.MainModule.Image.FileInformation;
+                       return new FileInfo (assembly.MainModule.FullyQualifiedName);
                }
 
                static void CopyAssembly (FileInfo fi, string directory)
@@ -121,7 +122,7 @@ namespace Mono.Linker.Steps {
 
                static string GetAssemblyFileName (AssemblyDefinition assembly, string directory)
                {
-                       string file = assembly.Name.Name + (assembly.Kind == AssemblyKind.Dll ? ".dll" : ".exe");
+                       string file = assembly.Name.Name + (assembly.MainModule.Kind == ModuleKind.Dll ? ".dll" : ".exe");
                        return Path.Combine (directory, file);
                }
        }
index 37e707d72e07a9c89438f5f94f26ed5088069c0e..f9aa7a117b4ad41b442443cb7e3710e4f09db49c 100644 (file)
@@ -46,18 +46,18 @@ namespace Mono.Linker.Steps {
                        _assembly = assembly;
                }
 
-               public override void Process (LinkContext context)
+               protected override void Process ()
                {
                        if (_assembly != null) {
-                               context.SafeLoadSymbols (_assembly);
-                               context.Resolver.CacheAssembly (_assembly);
+                               Context.SafeLoadSymbols (_assembly);
+                               Context.Resolver.CacheAssembly (_assembly);
                        }
 
-                       AssemblyDefinition assembly = _assembly ?? context.Resolve (_file);
+                       AssemblyDefinition assembly = _assembly ?? Context.Resolve (_file);
 
-                       switch (assembly.Kind) {
-                       case AssemblyKind.Dll:
-                               ProcessLibrary (assembly);
+                       switch (assembly.MainModule.Kind) {
+                       case ModuleKind.Dll:
+                               ProcessLibrary (Context, assembly);
                                return;
                        default:
                                ProcessExecutable (assembly);
@@ -65,46 +65,44 @@ namespace Mono.Linker.Steps {
                        }
                }
 
-               public static void ProcessLibrary (AssemblyDefinition assembly)
+               public static void ProcessLibrary (LinkContext context, AssemblyDefinition assembly)
                {
-                       Annotations.SetAction (assembly, AssemblyAction.Copy);
+                       context.Annotations.SetAction (assembly, AssemblyAction.Copy);
 
                        foreach (TypeDefinition type in assembly.MainModule.Types) {
-                               Annotations.Mark (type);
+                               context.Annotations.Mark (type);
 
                                if (type.HasFields)
-                                       MarkFields (type.Fields);
+                                       MarkFields (context, type.Fields);
                                if (type.HasMethods)
-                                       MarkMethods (type.Methods);
-                               if (type.HasConstructors)
-                                       MarkMethods (type.Constructors);
+                                       MarkMethods (context, type.Methods);
                        }
                }
 
-               static void ProcessExecutable (AssemblyDefinition assembly)
+               void ProcessExecutable (AssemblyDefinition assembly)
                {
                        Annotations.SetAction (assembly, AssemblyAction.Link);
 
                        Annotations.Mark (assembly.EntryPoint.DeclaringType);
-                       MarkMethod (assembly.EntryPoint, MethodAction.Parse);
+                       MarkMethod (Context, assembly.EntryPoint, MethodAction.Parse);
                }
 
-               static void MarkFields (ICollection fields)
+               static void MarkFields (LinkContext context, ICollection fields)
                {
                        foreach (FieldDefinition field in fields)
-                               Annotations.Mark (field);
+                               context.Annotations.Mark (field);
                }
 
-               static void MarkMethods (ICollection methods)
+               static void MarkMethods (LinkContext context, ICollection methods)
                {
                        foreach (MethodDefinition method in methods)
-                               MarkMethod (method, MethodAction.ForceParse);
+                               MarkMethod (context, method, MethodAction.ForceParse);
                }
 
-               static void MarkMethod (MethodDefinition method, MethodAction action)
+               static void MarkMethod (LinkContext context, MethodDefinition method, MethodAction action)
                {
-                       Annotations.Mark (method);
-                       Annotations.SetAction (method, action);
+                       context.Annotations.Mark (method);
+                       context.Annotations.SetAction (method, action);
                }
        }
 }
index 453eebac6662b5882c534ee5b7b83c20e9e0c447..c4ce86de6888ab1a83a720c233e59d10b9131c8c 100644 (file)
@@ -39,8 +39,6 @@ namespace Mono.Linker.Steps {
                static readonly string _name = "name";
                static readonly string _ns = string.Empty;
 
-               LinkContext _context;
-
                XPathDocument _document;
 
                public ResolveFromXApiStep (XPathDocument document)
@@ -48,11 +46,10 @@ namespace Mono.Linker.Steps {
                        _document = document;
                }
 
-               public override void Process (LinkContext context)
+               protected override void Process ()
                {
-                       _context = context;
                        XApiReader reader = new XApiReader (_document, this);
-                       reader.Process (context);
+                       reader.Process (Context);
                }
 
                public void OnAssembly (XPathNavigator nav, AssemblyDefinition assembly)
@@ -63,7 +60,7 @@ namespace Mono.Linker.Steps {
                {
                        string name = GetName (nav);
 
-                       TypeDefinition type = _context.GetType (name);
+                       TypeDefinition type = Context.GetType (name);
                        if (type != null)
                                MarkType (type);
                }
@@ -117,23 +114,23 @@ namespace Mono.Linker.Steps {
                        return nav.GetAttribute (attribute, _ns);
                }
 
-               static void MarkType (TypeDefinition type)
+               void MarkType (TypeDefinition type)
                {
                        InternalMark (type);
                }
 
-               static void MarkField (FieldDefinition field)
+               void MarkField (FieldDefinition field)
                {
                        InternalMark (field);
                }
 
-               static void InternalMark (IAnnotationProvider provider)
+               void InternalMark (IMetadataTokenProvider provider)
                {
                        Annotations.Mark (provider);
                        Annotations.SetPublic (provider);
                }
 
-               static void MarkMethod (MethodDefinition method)
+               void MarkMethod (MethodDefinition method)
                {
                        InternalMark (method);
                        Annotations.SetAction (method, MethodAction.Parse);
index ee16fa18b69baec358d0d577cd3f5686ebcae197..593f532b54b04dddff6ea81ceac01e53ade96d63 100644 (file)
@@ -52,11 +52,11 @@ namespace Mono.Linker.Steps {
                        _document = document;
                }
 
-               public override void Process (LinkContext context)
+               protected override void Process ()
                {
                        XPathNavigator nav = _document.CreateNavigator ();
                        nav.MoveToFirstChild ();
-                       ProcessAssemblies (context, nav.SelectChildren ("assembly", _ns));
+                       ProcessAssemblies (Context, nav.SelectChildren ("assembly", _ns));
                }
 
                void ProcessAssemblies (LinkContext context, XPathNodeIterator iterator)
@@ -81,7 +81,7 @@ namespace Mono.Linker.Steps {
                        }
                }
 
-               static void MarkAndPreserveAll (TypeDefinition type)
+               void MarkAndPreserveAll (TypeDefinition type)
                {
                        Annotations.Mark (type);
                        Annotations.SetPreserve (type, TypePreserve.All);
@@ -104,7 +104,7 @@ namespace Mono.Linker.Steps {
                                        continue;
                                }
 
-                               TypeDefinition type = assembly.MainModule.Types [fullname];
+                               TypeDefinition type = assembly.MainModule.GetType (fullname);
                                if (type == null)
                                        continue;
 
@@ -276,15 +276,12 @@ namespace Mono.Linker.Steps {
                void ProcessMethodName (TypeDefinition type, XPathNavigator nav)
                {
                        string name = GetAttribute (nav, "name");
-                       if (name == ".ctor" || name == ".cctor" && type.HasConstructors)
-                               foreach (MethodDefinition ctor in type.Constructors)
-                                       if (name == ctor.Name)
-                                               MarkMethod (type, ctor, name);
+                       if (!type.HasMethods)
+                               return;
 
-                       if (type.HasMethods)
-                               foreach (MethodDefinition method in type.Methods)
-                                       if (name == method.Name)
-                                               MarkMethod (type, method, name);
+                       foreach (MethodDefinition method in type.Methods)
+                               if (name == method.Name)
+                                       MarkMethod (type, method, name);
                }
 
                static MethodDefinition GetMethod (TypeDefinition type, string signature)
@@ -294,18 +291,13 @@ namespace Mono.Linker.Steps {
                                        if (signature == GetMethodSignature (meth))
                                                return meth;
 
-                       if (type.HasConstructors)
-                               foreach (MethodDefinition ctor in type.Constructors)
-                                       if (signature == GetMethodSignature (ctor))
-                                               return ctor;
-
                        return null;
                }
 
                static string GetMethodSignature (MethodDefinition meth)
                {
                        StringBuilder sb = new StringBuilder ();
-                       sb.Append (meth.ReturnType.ReturnType.FullName);
+                       sb.Append (meth.ReturnType.FullName);
                        sb.Append (" ");
                        sb.Append (meth.Name);
                        sb.Append ("(");
index f6d9c9c5f4a26a7713439e9282fa34bddf280673..b17bf5ca16cdf361f34314ce973da11d41e5b4ac 100644 (file)
@@ -30,7 +30,7 @@ namespace Mono.Linker.Steps {
 
        using System.Collections;
 
-       public abstract class ResolveStep : IStep {
+       public abstract class ResolveStep : BaseStep {
 
                ArrayList _unResolved;
 
@@ -53,7 +53,5 @@ namespace Mono.Linker.Steps {
                {
                        _unResolved.Add (signature);
                }
-
-               public abstract void Process (LinkContext context);
        }
 }
index d5fe17db91520f0bde63f1bb365bd887bf7fe839..2fc9ce8234bc6d6d2a7bac1eeb110e705839c473 100644 (file)
 //
 
 using System.Collections;
-
+using System.Collections.Generic;
 using Mono.Cecil;
 
 namespace Mono.Linker.Steps {
 
-       public class SweepStep : IStep {
+       public class SweepStep : BaseStep {
 
                AssemblyDefinition [] assemblies;
 
-               public void Process (LinkContext context)
+               protected override void Process ()
                {
-                       assemblies = context.GetAssemblies ();
+                       assemblies = Context.GetAssemblies ();
                        foreach (var assembly in assemblies)
                                SweepAssembly (assembly);
                }
@@ -55,7 +55,7 @@ namespace Mono.Linker.Steps {
                        }
 
                        var types = assembly.MainModule.Types;
-                       var cloned_types = Clone (types);
+                       var cloned_types = new List<TypeDefinition> (types);
 
                        types.Clear ();
 
@@ -65,12 +65,10 @@ namespace Mono.Linker.Steps {
                                        types.Add (type);
                                        continue;
                                }
-
-                               SweepReferences (assembly, type);
                        }
                }
 
-               static bool IsMarkedAssembly (AssemblyDefinition assembly)
+               bool IsMarkedAssembly (AssemblyDefinition assembly)
                {
                        return Annotations.IsMarked (assembly.MainModule);
                }
@@ -106,56 +104,19 @@ namespace Mono.Linker.Steps {
                        return new ArrayList (collection);
                }
 
-               void SweepReferences (AssemblyDefinition assembly, TypeDefinition type)
-               {
-                       foreach (AssemblyDefinition asm in assemblies) {
-                               ModuleDefinition module = asm.MainModule;
-                               if (!module.TypeReferences.Contains (type))
-                                       continue;
-
-                               TypeReference typeRef = module.TypeReferences [type.FullName];
-                               if (AssemblyMatch (assembly, typeRef)) {
-                                       SweepMemberReferences (module, typeRef);
-                                       module.TypeReferences.Remove (typeRef);
-                               }
-                       }
-               }
-
-               static void SweepMemberReferences (ModuleDefinition module, TypeReference reference)
-               {
-                       var references = module.MemberReferences;
-
-                       for (int i = 0; i < references.Count; i++) {
-                               if (references [i].DeclaringType == reference)
-                                       references.RemoveAt (i--);
-                       }
-               }
-
-               static bool AssemblyMatch (AssemblyDefinition assembly, TypeReference type)
-               {
-                       AssemblyNameReference reference = type.Scope as AssemblyNameReference;
-                       if (reference == null)
-                               return false;
-
-                       return AreSameReference (assembly.Name, reference);
-               }
-
-               static void SweepType (TypeDefinition type)
+               void SweepType (TypeDefinition type)
                {
                        if (type.HasFields)
                                SweepCollection (type.Fields);
 
-                       if (type.HasConstructors)
-                               SweepCollection (type.Constructors);
-
                        if (type.HasMethods)
                                SweepCollection (type.Methods);
                }
 
-               static void SweepCollection (IList list)
+               void SweepCollection (IList list)
                {
                        for (int i = 0; i < list.Count; i++)
-                               if (!Annotations.IsMarked ((IAnnotationProvider) list [i]))
+                               if (!Annotations.IsMarked ((IMetadataTokenProvider) list [i]))
                                        list.RemoveAt (i--);
                }
 
index f92b242bda6e8a41ffd9d7187471007e3e741996..6187c212c60d059b77aa2aa10ef26f452a0f2fd9 100644 (file)
@@ -41,12 +41,36 @@ namespace Mono.Linker.Steps {
                                MapType (type);
                }
 
-               static void MapType (TypeDefinition type)
+               void MapType (TypeDefinition type)
                {
                        MapVirtualMethods (type);
+                       MapInterfaceMethodsInTypeHierarchy (type);
                }
 
-               static void MapVirtualMethods (TypeDefinition type)
+               void MapInterfaceMethodsInTypeHierarchy (TypeDefinition type)
+               {
+                       if (!type.HasInterfaces)
+                               return;
+
+                       foreach (TypeReference @interface in type.Interfaces) {
+                               var iface = @interface.Resolve ();
+                               if (iface == null || !iface.HasMethods)
+                                       continue;
+
+                               foreach (MethodDefinition method in iface.Methods) {
+                                       if (TryMatchMethod (type, method) != null)
+                                               continue;
+
+                                       var @base = GetBaseMethodInTypeHierarchy (type, method);
+                                       if (@base == null)
+                                               continue;
+
+                                       Annotations.AddPreservedMethod (type, @base);
+                               }
+                       }
+               }
+
+               void MapVirtualMethods (TypeDefinition type)
                {
                        if (!type.HasMethods)
                                return;
@@ -62,13 +86,13 @@ namespace Mono.Linker.Steps {
                        }
                }
 
-               static void MapVirtualMethod (MethodDefinition method)
+               void MapVirtualMethod (MethodDefinition method)
                {
                        MapVirtualBaseMethod (method);
                        MapVirtualInterfaceMethod (method);
                }
 
-               static void MapVirtualBaseMethod (MethodDefinition method)
+               void MapVirtualBaseMethod (MethodDefinition method)
                {
                        MethodDefinition @base = GetBaseMethodInTypeHierarchy (method);
                        if (@base == null)
@@ -77,7 +101,7 @@ namespace Mono.Linker.Steps {
                        AnnotateMethods (@base, method);
                }
 
-               static void MapVirtualInterfaceMethod (MethodDefinition method)
+               void MapVirtualInterfaceMethod (MethodDefinition method)
                {
                        MethodDefinition @base = GetBaseMethodInInterfaceHierarchy (method);
                        if (@base == null)
@@ -86,7 +110,7 @@ namespace Mono.Linker.Steps {
                        AnnotateMethods (@base, method);
                }
 
-               static void MapOverrides (MethodDefinition method)
+               void MapOverrides (MethodDefinition method)
                {
                        foreach (MethodReference override_ref in method.Overrides) {
                                MethodDefinition @override = override_ref.Resolve ();
@@ -97,7 +121,7 @@ namespace Mono.Linker.Steps {
                        }
                }
 
-               static void AnnotateMethods (MethodDefinition @base, MethodDefinition @override)
+               void AnnotateMethods (MethodDefinition @base, MethodDefinition @override)
                {
                        Annotations.AddBaseMethod (@override, @base);
                        Annotations.AddOverride (@base, @override);
@@ -105,7 +129,12 @@ namespace Mono.Linker.Steps {
 
                static MethodDefinition GetBaseMethodInTypeHierarchy (MethodDefinition method)
                {
-                       TypeDefinition @base = GetBaseType (method.DeclaringType);
+                       return GetBaseMethodInTypeHierarchy (method.DeclaringType, method);
+               }
+
+               static MethodDefinition GetBaseMethodInTypeHierarchy (TypeDefinition type, MethodDefinition method)
+               {
+                       TypeDefinition @base = GetBaseType (type);
                        while (@base != null) {
                                MethodDefinition base_method = TryMatchMethod (@base, method);
                                if (base_method != null)
@@ -164,7 +193,7 @@ namespace Mono.Linker.Steps {
                        if (candidate.Name != method.Name)
                                return false;
 
-                       if (!TypeMatch (candidate.ReturnType.ReturnType, method.ReturnType.ReturnType))
+                       if (!TypeMatch (candidate.ReturnType, method.ReturnType))
                                return false;
 
                        if (candidate.Parameters.Count != method.Parameters.Count)
@@ -177,7 +206,7 @@ namespace Mono.Linker.Steps {
                        return true;
                }
 
-               static bool TypeMatch (ModType a, ModType b)
+               static bool TypeMatch (IModifierType a, IModifierType b)
                {
                        if (!TypeMatch (a.ModifierType, b.ModifierType))
                                return false;
@@ -190,8 +219,8 @@ namespace Mono.Linker.Steps {
                        if (a is GenericInstanceType)
                                return TypeMatch ((GenericInstanceType) a, (GenericInstanceType) b);
 
-                       if (a is ModType)
-                               return TypeMatch ((ModType) a, (ModType) b);
+                       if (a is IModifierType)
+                               return TypeMatch ((IModifierType) a, (IModifierType) b);
 
                        return TypeMatch (a.ElementType, b.ElementType);
                }
index 55330d3e276b08c01cec3fc3e98f5800164d6836..c29da52c09cf989f59c3ad8e913f91f4cc918b4e 100644 (file)
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 
 using Mono.Cecil;
 
 namespace Mono.Linker {
 
-       public class Annotations {
+       public class AnnotationStore {
 
-               private static readonly object _actionKey = new object ();
-               private static readonly object _markedKey = new object ();
-               private static readonly object _processedKey = new object ();
-               private static readonly object _preservedKey = new object ();
-               private static readonly object _preservedMethodsKey = new object ();
-               private static readonly object _publicKey = new object ();
-               private static readonly object _symbolsKey = new object ();
-               private static readonly object _overrideKey = new object ();
-               private static readonly object _baseKey = new object ();
+               readonly Dictionary<AssemblyDefinition, AssemblyAction> assembly_actions = new Dictionary<AssemblyDefinition, AssemblyAction> ();
+               readonly Dictionary<MethodDefinition, MethodAction> method_actions = new Dictionary<MethodDefinition, MethodAction> ();
+               readonly HashSet<IMetadataTokenProvider> marked = new HashSet<IMetadataTokenProvider> ();
+               readonly HashSet<IMetadataTokenProvider> processed = new HashSet<IMetadataTokenProvider> ();
+               readonly Dictionary<TypeDefinition, TypePreserve> preserved_types = new Dictionary<TypeDefinition, TypePreserve> ();
+               readonly Dictionary<TypeDefinition, List<MethodDefinition>> preserved_methods = new Dictionary<TypeDefinition, List<MethodDefinition>> ();
+               readonly HashSet<IMetadataTokenProvider> public_api = new HashSet<IMetadataTokenProvider> ();
+               readonly Dictionary<MethodDefinition, List<MethodDefinition>> override_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+               readonly Dictionary<MethodDefinition, List<MethodDefinition>> base_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
 
-               public static AssemblyAction GetAction (AssemblyDefinition assembly)
+               readonly Dictionary<object, Dictionary<IMetadataTokenProvider, object>> custom_annotations = new Dictionary<object, Dictionary<IMetadataTokenProvider, object>> ();
+
+               public AssemblyAction GetAction (AssemblyDefinition assembly)
                {
-                       return (AssemblyAction) GetAction (AsProvider (assembly));
+                       AssemblyAction action;
+                       if (assembly_actions.TryGetValue (assembly, out action))
+                               return action;
+
+                       throw new NotSupportedException ();
                }
 
-               public static MethodAction GetAction (MethodDefinition method)
+               public MethodAction GetAction (MethodDefinition method)
                {
-                       var action = GetAction (AsProvider (method));
-                       return action == null ? MethodAction.Nothing : (MethodAction) action;
+                       MethodAction action;
+                       if (method_actions.TryGetValue (method, out action))
+                               return action;
+
+                       return MethodAction.Nothing;
                }
 
-               static object GetAction (IAnnotationProvider provider)
+               public void SetAction (AssemblyDefinition assembly, AssemblyAction action)
                {
-                       return provider.Annotations [_actionKey];
+                       assembly_actions [assembly] = action;
                }
 
-               public static bool HasAction (IAnnotationProvider provider)
+               public bool HasAction (AssemblyDefinition assembly)
                {
-                       return provider.Annotations.Contains (_actionKey);
+                       return assembly_actions.ContainsKey (assembly);
                }
 
-               public static void SetAction (AssemblyDefinition assembly, AssemblyAction action)
+               public void SetAction (MethodDefinition method, MethodAction action)
                {
-                       SetAction (AsProvider (assembly), action);
+                       method_actions [method] = action;
                }
 
-               public static void SetAction (MethodDefinition method, MethodAction action)
+               public void Mark (IMetadataTokenProvider provider)
                {
-                       SetAction (AsProvider (method), action);
+                       marked.Add (provider);
                }
 
-               static void SetAction (IAnnotationProvider provider, object action)
+               public bool IsMarked (IMetadataTokenProvider provider)
                {
-                       provider.Annotations [_actionKey] = action;
+                       return marked.Contains (provider);
                }
 
-               public static void Mark (IAnnotationProvider provider)
+               public void Processed (IMetadataTokenProvider provider)
                {
-                       provider.Annotations [_markedKey] = _markedKey;
+                       processed.Add (provider);
                }
 
-               public static bool IsMarked (IAnnotationProvider provider)
+               public bool IsProcessed (IMetadataTokenProvider provider)
                {
-                       return provider.Annotations.Contains (_markedKey);
+                       return processed.Contains (provider);
                }
 
-               public static void Processed (IAnnotationProvider provider)
+               public bool IsPreserved (TypeDefinition type)
                {
-                       provider.Annotations [_processedKey] = _processedKey;
+                       return preserved_types.ContainsKey (type);
                }
 
-               public static bool IsProcessed (IAnnotationProvider provider)
+               public void SetPreserve (TypeDefinition type, TypePreserve preserve)
                {
-                       return provider.Annotations.Contains (_processedKey);
+                       preserved_types [type] = preserve;
                }
 
-               public static bool IsPreserved (TypeDefinition type)
+               public TypePreserve GetPreserve (TypeDefinition type)
                {
-                       return AsProvider (type).Annotations.Contains (_preservedKey);
+                       TypePreserve preserve;
+                       if (preserved_types.TryGetValue (type, out preserve))
+                               return preserve;
+
+                       throw new NotSupportedException ();
                }
 
-               public static void SetPreserve (TypeDefinition type, TypePreserve preserve)
+               public void SetPublic (IMetadataTokenProvider provider)
                {
-                       AsProvider (type).Annotations [_preservedKey] = preserve;
+                       public_api.Add (provider);
                }
 
-               public static TypePreserve GetPreserve (TypeDefinition type)
+               public bool IsPublic (IMetadataTokenProvider provider)
+               {
+                       return public_api.Contains (provider);
+               }
+
+               public void AddOverride (MethodDefinition @base, MethodDefinition @override)
+               {
+                       var methods = GetOverrides (@base);
+                       if (methods == null) {
+                               methods = new List<MethodDefinition> ();
+                               override_methods [@base] = methods;
+                       }
+
+                       methods.Add (@override);
+               }
+
+               public List<MethodDefinition> GetOverrides (MethodDefinition method)
+               {
+                       List<MethodDefinition> overrides;
+                       if (override_methods.TryGetValue (method, out overrides))
+                               return overrides;
+
+                       return null;
+               }
+
+               public void AddBaseMethod (MethodDefinition method, MethodDefinition @base)
+               {
+                       var methods = GetBaseMethods (method);
+                       if (methods == null) {
+                               methods = new List<MethodDefinition> ();
+                               base_methods [method] = methods;
+                       }
+
+                       methods.Add (@base);
+               }
+
+               public List<MethodDefinition> GetBaseMethods (MethodDefinition method)
+               {
+                       List<MethodDefinition> bases;
+                       if (base_methods.TryGetValue (method, out bases))
+                               return bases;
+
+                       return null;
+               }
+
+               public List<MethodDefinition> GetPreservedMethods (TypeDefinition type)
+               {
+                       List<MethodDefinition> preserved;
+                       if (preserved_methods.TryGetValue (type, out preserved))
+                               return preserved;
+
+                       return null;
+               }
+
+               public void AddPreservedMethod (TypeDefinition type, MethodDefinition method)
+               {
+                       var methods = GetPreservedMethods (type);
+                       if (methods == null) {
+                               methods = new List<MethodDefinition> ();
+                               preserved_methods [type] = methods;
+                       }
+
+                       methods.Add (method);
+               }
+
+               public Dictionary<IMetadataTokenProvider, object> GetCustomAnnotations (object key)
+               {
+                       Dictionary<IMetadataTokenProvider, object> slots;
+                       if (custom_annotations.TryGetValue (key, out slots))
+                               return slots;
+
+                       slots = new Dictionary<IMetadataTokenProvider, object> ();
+                       custom_annotations.Add (key, slots);
+                       return slots;
+               }
+       }
+
+       /*
+       public class Annotations {
+
+               static readonly Dictionary<AssemblyDefinition, AssemblyAction> assembly_actions = new Dictionary<AssemblyDefinition, AssemblyAction> ();
+               static readonly Dictionary<MethodDefinition, MethodAction> method_actions = new Dictionary<MethodDefinition, MethodAction> ();
+               static readonly HashSet<IMetadataTokenProvider> marked = new HashSet<IMetadataTokenProvider> ();
+               static readonly HashSet<IMetadataTokenProvider> processed = new HashSet<IMetadataTokenProvider> ();
+               static readonly Dictionary<TypeDefinition, TypePreserve> preserved_types = new Dictionary<TypeDefinition, TypePreserve> ();
+               static readonly Dictionary<TypeDefinition, List<MethodDefinition>> preserved_methods = new Dictionary<TypeDefinition, List<MethodDefinition>> ();
+               static readonly HashSet<IMetadataTokenProvider> public_api = new HashSet<IMetadataTokenProvider> ();
+               static readonly Dictionary<MethodDefinition, List<MethodDefinition>> override_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+               static readonly Dictionary<MethodDefinition, List<MethodDefinition>> base_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+
+               public static AssemblyAction GetAction (AssemblyDefinition assembly)
+               {
+                       AssemblyAction action;
+                       if (assembly_actions.TryGetValue (assembly, out action))
+                               return action;
+
+                       throw new NotSupportedException ();
+               }
+
+               public static MethodAction GetAction (MethodDefinition method)
+               {
+                       MethodAction action;
+                       if (method_actions.TryGetValue (method, out action))
+                               return action;
+
+                       return MethodAction.Nothing;
+               }
+
+               public static void SetAction (AssemblyDefinition assembly, AssemblyAction action)
+               {
+                       assembly_actions [assembly] = action;
+               }
+
+               public static bool HasAction (AssemblyDefinition assembly)
                {
-                       return (TypePreserve) AsProvider (type).Annotations [_preservedKey];
+                       return assembly_actions.ContainsKey (assembly);
                }
 
-               public static void SetPublic (IAnnotationProvider provider)
+               public static void SetAction (MethodDefinition method, MethodAction action)
                {
-                       provider.Annotations [_publicKey] = _publicKey;
+                       method_actions [method] = action;
                }
 
-               public static bool IsPublic (IAnnotationProvider provider)
+               public static void Mark (IMetadataTokenProvider provider)
                {
-                       return provider.Annotations.Contains (_publicKey);
+                       marked.Add (provider);
                }
 
-               static IAnnotationProvider AsProvider (object obj)
+               public static bool IsMarked (IMetadataTokenProvider provider)
                {
-                       return (IAnnotationProvider) obj;
+                       return marked.Contains (provider);
                }
 
-               public static bool HasSymbols (AssemblyDefinition assembly)
+               public static void Processed (IMetadataTokenProvider provider)
                {
-                       return AsProvider (assembly).Annotations.Contains (_symbolsKey);
+                       processed.Add (provider);
                }
 
-               public static void SetHasSymbols (AssemblyDefinition assembly)
+               public static bool IsProcessed (IMetadataTokenProvider provider)
                {
-                       AsProvider (assembly).Annotations [_symbolsKey] = _symbolsKey;
+                       return processed.Contains (provider);
+               }
+
+               public static bool IsPreserved (TypeDefinition type)
+               {
+                       return preserved_types.ContainsKey (type);
+               }
+
+               public static void SetPreserve (TypeDefinition type, TypePreserve preserve)
+               {
+                       preserved_types [type] = preserve;
+               }
+
+               public static TypePreserve GetPreserve (TypeDefinition type)
+               {
+                       TypePreserve preserve;
+                       if (preserved_types.TryGetValue (type, out preserve))
+                               return preserve;
+
+                       throw new NotSupportedException ();
+               }
+
+               public static void SetPublic (IMetadataTokenProvider provider)
+               {
+                       public_api.Add (provider);
+               }
+
+               public static bool IsPublic (IMetadataTokenProvider provider)
+               {
+                       return public_api.Contains (provider);
                }
 
                public static void AddOverride (MethodDefinition @base, MethodDefinition @override)
                {
-                       ArrayList methods = (ArrayList) GetOverrides (@base);
+                       var methods = GetOverrides (@base);
                        if (methods == null) {
-                               methods = new ArrayList ();
-                               AsProvider (@base).Annotations.Add (_overrideKey, methods);
+                               methods = new List<MethodDefinition> ();
+                               override_methods [@base] = methods;
                        }
 
                        methods.Add (@override);
                }
 
-               public static IList GetOverrides (MethodDefinition method)
+               public static List<MethodDefinition> GetOverrides (MethodDefinition method)
                {
-                       return (IList) AsProvider (method).Annotations [_overrideKey];
+                       List<MethodDefinition> overrides;
+                       if (override_methods.TryGetValue (method, out overrides))
+                               return overrides;
+
+                       return null;
                }
 
                public static void AddBaseMethod (MethodDefinition method, MethodDefinition @base)
                {
-                       ArrayList methods = (ArrayList) GetBaseMethods (method);
+                       var methods = GetBaseMethods (method);
                        if (methods == null) {
-                               methods = new ArrayList ();
-                               AsProvider (method).Annotations.Add (_baseKey, methods);
+                               methods = new List<MethodDefinition> ();
+                               base_methods [method] = methods;
                        }
 
                        methods.Add (@base);
                }
 
-               public static IList GetBaseMethods (MethodDefinition method)
+               public static List<MethodDefinition> GetBaseMethods (MethodDefinition method)
                {
-                       return (IList) AsProvider (method).Annotations [_baseKey];
+                       List<MethodDefinition> bases;
+                       if (base_methods.TryGetValue (method, out bases))
+                               return bases;
+
+                       return null;
                }
 
-               public static IList GetPreservedMethods (TypeDefinition type)
+               public static List<MethodDefinition> GetPreservedMethods (TypeDefinition type)
                {
-                       return (IList) AsProvider (type).Annotations [_preservedMethodsKey];
+                       List<MethodDefinition> preserved;
+                       if (preserved_methods.TryGetValue (type, out preserved))
+                               return preserved;
+
+                       return null;
                }
 
                public static void AddPreservedMethod (TypeDefinition type, MethodDefinition method)
                {
-                       ArrayList methods = (ArrayList) GetPreservedMethods (type);
+                       var methods = GetPreservedMethods (type);
                        if (methods == null) {
-                               methods = new ArrayList ();
-                               AsProvider (type).Annotations.Add (_preservedMethodsKey, methods);
+                               methods = new List<MethodDefinition> ();
+                               preserved_methods [type] = methods;
                        }
 
                        methods.Add (method);
@@ -192,5 +360,5 @@ namespace Mono.Linker {
                private Annotations ()
                {
                }
-       }
+       }*/
 }
index f203638e99e50e4644d0c43970aa6f3dcfc5d774..ccd3c4af1127ff94e517c1140c57c71f8e1e2305 100644 (file)
@@ -28,7 +28,7 @@
 
 using System;
 using System.Collections;
-
+using System.IO;
 using Mono.Cecil;
 
 namespace Mono.Linker {
@@ -56,7 +56,6 @@ namespace Mono.Linker {
                        AssemblyDefinition asm = (AssemblyDefinition) _assemblies [name.Name];
                        if (asm == null) {
                                asm = base.Resolve (name);
-                               asm.Resolver = this;
                                _assemblies [name.Name] = asm;
                        }
 
@@ -66,7 +65,7 @@ namespace Mono.Linker {
                public void CacheAssembly (AssemblyDefinition assembly)
                {
                        _assemblies [assembly.Name.Name] = assembly;
-                       assembly.Resolver = this;
+                       base.AddSearchDirectory (Path.GetDirectoryName (assembly.MainModule.FullyQualifiedName));
                }
        }
 }
index 4873df001bf5e96fd8ad5bf64c212a1a6e286ffd..e1edf53953658a0540e9109de86d70a70eed970b 100644 (file)
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
 using System.Collections;
 using System.IO;
 using Mono.Cecil;
@@ -43,10 +44,16 @@ namespace Mono.Linker {
 
                AssemblyResolver _resolver;
 
+               AnnotationStore _annotations;
+
                public Pipeline Pipeline {
                        get { return _pipeline; }
                }
 
+               public AnnotationStore Annotations {
+                       get { return _annotations; }
+               }
+
                public string OutputDirectory {
                        get { return _outputDirectory; }
                        set { _outputDirectory = value; }
@@ -81,38 +88,39 @@ namespace Mono.Linker {
                        _resolver = resolver;
                        _actions = new Hashtable ();
                        _parameters = new Hashtable ();
+                       _annotations = new AnnotationStore ();
                }
 
-               public TypeDefinition GetType (string type)
+               public TypeDefinition GetType (string fullName)
                {
-                       int pos = type.IndexOf (",");
-                       type = type.Replace ("+", "/");
+                       int pos = fullName.IndexOf (",");
+                       fullName = fullName.Replace ("+", "/");
                        if (pos == -1) {
-                               foreach (AssemblyDefinition asm in GetAssemblies ())
-                                       if (asm.MainModule.Types.Contains (type))
-                                               return asm.MainModule.Types [type];
+                               foreach (AssemblyDefinition asm in GetAssemblies ()) {
+                                       var type = asm.MainModule.GetType (fullName);
+                                       if (type != null)
+                                               return type;
+                               }
 
                                return null;
                        }
 
-                       string asmname = type.Substring (pos + 1);
-                       type = type.Substring (0, pos);
+                       string asmname = fullName.Substring (pos + 1);
+                       fullName = fullName.Substring (0, pos);
                        AssemblyDefinition assembly = Resolve (AssemblyNameReference.Parse (asmname));
-                       return assembly.MainModule.Types [type];
+                       return assembly.MainModule.GetType (fullName);
                }
 
                public AssemblyDefinition Resolve (string name)
                {
                        if (File.Exists (name)) {
-                               AssemblyDefinition assembly = AssemblyFactory.GetAssembly (name);
+                               AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly (name);
                                _resolver.CacheAssembly (assembly);
                                SafeLoadSymbols (assembly);
                                return assembly;
-                       } else {
-                               AssemblyNameReference reference = new AssemblyNameReference ();
-                               reference.Name = name;
-                               return Resolve (reference);
                        }
+
+                       return Resolve (new AssemblyNameReference (name, new Version ()));
                }
 
                public AssemblyDefinition Resolve (IMetadataScope scope)
@@ -135,16 +143,16 @@ namespace Mono.Linker {
                                return;
 
                        try {
-                               assembly.MainModule.LoadSymbols ();
-                               Annotations.SetHasSymbols (assembly);
+                               // throw new NotImplementedException ();
+                               // assembly.MainModule.LoadSymbols ();
                        } catch {
                                return; // resharper loves this
                        }
                }
 
-               static bool SeenFirstTime (AssemblyDefinition assembly)
+               bool SeenFirstTime (AssemblyDefinition assembly)
                {
-                       return !Annotations.HasAction (assembly);
+                       return !_annotations.HasAction (assembly);
                }
 
                static AssemblyNameReference GetReference (IMetadataScope scope)
@@ -170,7 +178,7 @@ namespace Mono.Linker {
                        else if (IsCore (name))
                                action = _coreAction;
 
-                       Annotations.SetAction (assembly, action);
+                       _annotations.SetAction (assembly, action);
                }
 
                static bool IsCore (AssemblyNameReference name)
index 8b2c487ec6ffa47ee9b47ea14ee9f1f4fa9f5092..d8f4365ff8eb47f38807333f13a7a254c2b9bdbb 100644 (file)
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Diagnostics;
 
 using Mono.Linker.Steps;
 
@@ -81,6 +82,19 @@ namespace Mono.Linker {
                        }
                }
 
+               public void AddStepAfter (IStep target, IStep step)
+               {
+                       for (int i = 0; i < _steps.Count; i++) {
+                               if (_steps [i] == target) {
+                                       if (i == _steps.Count - 1)
+                                               _steps.Add (step);
+                                       else
+                                               _steps.Insert (i + 1, step);
+                                       return;
+                               }
+                       }
+               }
+
                public void RemoveStep (Type target)
                {
                        for (int i = 0; i < _steps.Count; i++) {
diff --git a/mcs/tools/linker/Mono.Linker/TypeParser.cs b/mcs/tools/linker/Mono.Linker/TypeParser.cs
deleted file mode 100644 (file)
index 101e3e8..0000000
+++ /dev/null
@@ -1,444 +0,0 @@
-//
-// TypeParser.cs
-//
-// Author:
-//   Jb Evain (jbevain@gmail.com)
-//
-// Copyright (c) 2008 - 2010 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-using Mono.Cecil;
-
-namespace Mono.Linker {
-
-       class TypeParser {
-
-               class Type {
-                       public const int Ptr = -1;
-                       public const int ByRef = -2;
-                       public const int SzArray = -3;
-
-                       public string type_fullname;
-                       public string [] nested_names;
-                       public int arity;
-                       public int [] specs;
-                       public Type [] generic_arguments;
-                       public string assembly;
-               }
-
-               readonly string fullname;
-               readonly int length;
-
-               int position;
-
-               TypeParser (string fullname)
-               {
-                       this.fullname = fullname;
-                       this.length = fullname.Length;
-               }
-
-               Type ParseType (bool fq_name)
-               {
-                       var type = new Type ();
-                       type.type_fullname = ParsePart ();
-
-                       type.nested_names = ParseNestedNames ();
-
-                       if (TryGetArity (type))
-                               type.generic_arguments = ParseGenericArguments (type.arity);
-
-                       type.specs = ParseSpecs ();
-
-                       if (fq_name)
-                               type.assembly = ParseAssemblyName ();
-
-                       return type;
-               }
-
-               static bool TryGetArity (Type type)
-               {
-                       int arity = 0;
-
-                       TryAddArity (type.type_fullname, ref arity);
-
-                       var nested_names = type.nested_names;
-                       if (!IsNullOrEmpty (nested_names)) {
-                               for (int i = 0; i < nested_names.Length; i++)
-                                       TryAddArity (nested_names [i], ref arity);
-                       }
-
-                       type.arity = arity;
-                       return arity > 0;
-               }
-
-               static bool TryGetArity (string name, out int arity)
-               {
-                       arity = 0;
-                       var index = name.LastIndexOf ('`');
-                       if (index == -1)
-                               return false;
-
-                       return int.TryParse (name.Substring (index + 1), out arity);
-               }
-
-               static void TryAddArity (string name, ref int arity)
-               {
-                       int type_arity;
-                       if (!TryGetArity (name, out type_arity))
-                               return;
-
-                       arity += type_arity;
-               }
-
-               string ParsePart ()
-               {
-                       int start = position;
-                       while (position < length && !IsDelimiter (fullname [position]))
-                               position++;
-
-                       return fullname.Substring (start, position - start);
-               }
-
-               static bool IsDelimiter (char chr)
-               {
-                       return "+,[]*&".IndexOf (chr) != -1;
-               }
-
-               void TryParseWhiteSpace ()
-               {
-                       while (position < length && Char.IsWhiteSpace (fullname [position]))
-                               position++;
-               }
-
-               string [] ParseNestedNames ()
-               {
-                       string [] nested_names = null;
-                       while (TryParse ('+'))
-                               Add (ref nested_names, ParsePart ());
-
-                       return nested_names;
-               }
-
-               bool TryParse (char chr)
-               {
-                       if (position < length && fullname [position] == chr) {
-                               position++;
-                               return true;
-                       }
-
-                       return false;
-               }
-
-               static void Add<T> (ref T [] array, T item)
-               {
-                       if (array == null) {
-                               array = new [] { item };
-                               return;
-                       }
-
-                       Array.Resize (ref array, array.Length + 1);
-                       array [array.Length - 1] = item;
-               }
-
-               int [] ParseSpecs ()
-               {
-                       int [] specs = null;
-
-                       while (position < length) {
-                               switch (fullname [position]) {
-                               case '*':
-                                       position++;
-                                       Add (ref specs, Type.Ptr);
-                                       break;
-                               case '&':
-                                       position++;
-                                       Add (ref specs, Type.ByRef);
-                                       break;
-                               case '[':
-                                       position++;
-                                       switch (fullname [position]) {
-                                       case ']':
-                                               position++;
-                                               Add (ref specs, Type.SzArray);
-                                               break;
-                                       case '*':
-                                               position++;
-                                               Add (ref specs, 1);
-                                               break;
-                                       default:
-                                               var rank = 1;
-                                               while (TryParse (','))
-                                                       rank++;
-
-                                               Add (ref specs, rank);
-
-                                               TryParse (']');
-                                               break;
-                                       }
-                                       break;
-                               default:
-                                       return specs;
-                               }
-                       }
-
-                       return specs;
-               }
-
-               Type [] ParseGenericArguments (int arity)
-               {
-                       Type [] generic_arguments = null;
-
-                       if (position == length || fullname [position] != '[')
-                               return generic_arguments;
-
-                       TryParse ('[');
-
-                       for (int i = 0; i < arity; i++) {
-                               var fq_argument = TryParse ('[');
-                               Add (ref generic_arguments, ParseType (fq_argument));
-                               if (fq_argument)
-                                       TryParse (']');
-
-                               TryParse (',');
-                               TryParseWhiteSpace ();
-                       }
-
-                       TryParse (']');
-
-                       return generic_arguments;
-               }
-
-               string ParseAssemblyName ()
-               {
-                       if (!TryParse (','))
-                               return string.Empty;
-
-                       TryParseWhiteSpace ();
-
-                       var start = position;
-                       while (position < length) {
-                               var chr = fullname [position];
-                               if (chr == '[' || chr == ']')
-                                       break;
-
-                               position++;
-                       }
-
-                       return fullname.Substring (start, position - start);
-               }
-
-               public static TypeReference ParseType (ModuleDefinition module, string fullname)
-               {
-                       if (fullname == null)
-                               return null;
-
-                       var parser = new TypeParser (fullname);
-                       return GetTypeReference (module, parser.ParseType (true));
-               }
-
-               static TypeReference GetTypeReference (ModuleDefinition module, Type type_info)
-               {
-                       TypeReference type;
-                       if (!TryGetDefinition (module, type_info, out type))
-                               type = CreateReference (type_info, module, GetMetadataScope (module, type_info));
-
-                       return CreateSpecs (type, type_info);
-               }
-
-               static TypeReference CreateSpecs (TypeReference type, Type type_info)
-               {
-                       type = TryCreateGenericInstanceType (type, type_info);
-
-                       var specs = type_info.specs;
-                       if (IsNullOrEmpty (specs))
-                               return type;
-
-                       for (int i = 0; i < specs.Length; i++) {
-                               switch (specs [i]) {
-                               case Type.Ptr:
-                                       type = new PointerType (type);
-                                       break;
-                               case Type.ByRef:
-                                       type = new ReferenceType (type);
-                                       break;
-                               case Type.SzArray:
-                                       type = new ArrayType (type);
-                                       break;
-                               default:
-                                       var array = new ArrayType (type);
-                                       array.Dimensions.Clear ();
-
-                                       for (int j = 0; j < specs [i]; j++)
-                                               array.Dimensions.Add (new ArrayDimension (0, 0));
-
-                                       type = array;
-                                       break;
-                               }
-                       }
-
-                       return type;
-               }
-
-               static TypeReference TryCreateGenericInstanceType (TypeReference type, Type type_info)
-               {
-                       var generic_arguments = type_info.generic_arguments;
-                       if (IsNullOrEmpty (generic_arguments))
-                               return type;
-
-                       var instance = new GenericInstanceType (type);
-                       for (int i = 0; i < generic_arguments.Length; i++)
-                               instance.GenericArguments.Add (GetTypeReference (type.Module, generic_arguments [i]));
-
-                       return instance;
-               }
-
-               public static void SplitFullName (string fullname, out string @namespace, out string name)
-               {
-                       var last_dot = fullname.LastIndexOf ('.');
-
-                       if (last_dot == -1) {
-                               @namespace = string.Empty;
-                               name = fullname;
-                       } else {
-                               @namespace = fullname.Substring (0, last_dot);
-                               name = fullname.Substring (last_dot + 1);
-                       }
-               }
-
-               static TypeReference CreateReference (Type type_info, ModuleDefinition module, IMetadataScope scope)
-               {
-                       string @namespace, name;
-                       SplitFullName (type_info.type_fullname, out @namespace, out name);
-
-                       var type = new TypeReference (name, @namespace, scope, false) {
-                               Module = module,
-                       };
-
-                       AdjustGenericParameters (type);
-
-                       var nested_names = type_info.nested_names;
-                       if (IsNullOrEmpty (nested_names))
-                               return type;
-
-                       for (int i = 0; i < nested_names.Length; i++) {
-                               type = new TypeReference (nested_names [i], string.Empty, null, false) {
-                                       DeclaringType = type,
-                                       Module = module,
-                               };
-
-                               AdjustGenericParameters (type);
-                       }
-
-                       return type;
-               }
-
-               static void AdjustGenericParameters (TypeReference type)
-               {
-                       int arity;
-                       if (!TryGetArity (type.Name, out arity))
-                               return;
-
-                       for (int i = 0; i < arity; i++)
-                               type.GenericParameters.Add (new GenericParameter (null, type));
-               }
-
-               static IMetadataScope GetMetadataScope (ModuleDefinition module, Type type_info)
-               {
-                       if (string.IsNullOrEmpty (type_info.assembly))
-                               return GetCorlib (module);
-
-                       return MatchReference (module, AssemblyNameReference.Parse (type_info.assembly));
-               }
-
-               static AssemblyNameReference GetCorlib (ModuleDefinition module)
-               {
-                       foreach (AssemblyNameReference reference in module.AssemblyReferences)
-                               if (reference.Name == "mscorlib")
-                                       return reference;
-
-                       return null;
-               }
-
-               static AssemblyNameReference MatchReference (ModuleDefinition module, AssemblyNameReference pattern)
-               {
-                       var references = module.AssemblyReferences;
-
-                       for (int i = 0; i < references.Count; i++) {
-                               var reference = references [i];
-                               if (reference.FullName == pattern.FullName)
-                                       return reference;
-                       }
-
-                       return pattern;
-               }
-
-               static bool TryGetDefinition (ModuleDefinition module, Type type_info, out TypeReference type)
-               {
-                       type = null;
-                       if (!TryCurrentModule (module, type_info))
-                               return false;
-
-                       var typedef = module.Types [type_info.type_fullname];
-                       if (typedef == null)
-                               return false;
-
-                       var nested_names = type_info.nested_names;
-                       if (!IsNullOrEmpty (nested_names)) {
-                               for (int i = 0; i < nested_names.Length; i++)
-                                       typedef = GetNestedType (typedef, nested_names [i]);
-                       }
-
-                       type = typedef;
-                       return true;
-               }
-
-               static bool TryCurrentModule (ModuleDefinition module, Type type_info)
-               {
-                       if (string.IsNullOrEmpty (type_info.assembly))
-                               return true;
-
-                       if (module.Assembly != null && module.Assembly.Name.FullName == type_info.assembly)
-                               return true;
-
-                       return false;
-               }
-
-               static TypeDefinition GetNestedType (TypeDefinition type, string nestedTypeName)
-               {
-                       if (!type.HasNestedTypes)
-                               return null;
-
-                       foreach (TypeDefinition nested_type in type.NestedTypes)
-                               if (nested_type.Name == nestedTypeName)
-                                       return nested_type;
-
-                       return null;
-               }
-
-               static bool IsNullOrEmpty<T> (T [] array)
-               {
-                       return array == null || array.Length == 0;
-               }
-       }
-}
index 9316eed489c4b7d21e5cb5830fd108c469054934..bb16e219c40d08ba8da82b4b92e95e745a125a4d 100644 (file)
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Linq;
 using System.Text;
 using System.Xml.XPath;
 
@@ -73,9 +74,9 @@ namespace Mono.Linker {
 
                AssemblyDefinition GetAssembly (XPathNavigator nav)
                {
-                       AssemblyNameReference name = new AssemblyNameReference ();
-                       name.Name = GetName (nav);
-                       name.Version = new Version (GetAttribute (nav, "version"));
+                       AssemblyNameReference name = new AssemblyNameReference (
+                               GetName (nav),
+                               new Version (GetAttribute (nav, "version")));
 
                        AssemblyDefinition assembly = _context.Resolve (name);
                        ProcessReferences (assembly);
@@ -119,7 +120,7 @@ namespace Mono.Linker {
                {
                        string name = GetClassName (nav);
 
-                       TypeDefinition type = _assembly.MainModule.Types [name];
+                       TypeDefinition type = _assembly.MainModule.GetType (name);
                        if (type == null)
                                return;
 
@@ -156,7 +157,7 @@ namespace Mono.Linker {
                {
                        TypeDefinition declaring = PeekType ();
 
-                       FieldDefinition field = declaring.Fields.GetField (GetName (nav));
+                       FieldDefinition field = declaring.Fields.FirstOrDefault (f => f.Name == GetName (nav));
                        if (field != null)
                                _visitor.OnField (nav, field);
 
@@ -192,11 +193,6 @@ namespace Mono.Linker {
                        return GetMethod (PeekType ().Methods, signature);
                }
 
-               MethodDefinition GetConstructor (string signature)
-               {
-                       return GetMethod (PeekType ().Constructors, signature);
-               }
-
                static MethodDefinition GetMethod (ICollection methods, string signature)
                {
                        foreach (MethodDefinition method in methods)
@@ -223,7 +219,7 @@ namespace Mono.Linker {
 
                        string returntype = GetAttribute (nav, "returntype");
                        if (returntype == null || returntype.Length == 0)
-                               returntype = Constants.Void;
+                               returntype = "System.Void";
 
                        _signature.Append (NormalizeTypeName (returntype));
                        _signature.Append (" ");
@@ -278,7 +274,7 @@ namespace Mono.Linker {
 
                        string signature = GetMethodSignature ();
 
-                       MethodDefinition ctor = GetConstructor (signature);
+                       MethodDefinition ctor = GetMethod (signature);
                        if (ctor != null)
                                _visitor.OnConstructor (nav, ctor);
 
@@ -290,9 +286,9 @@ namespace Mono.Linker {
                        string name = GetName (nav);
                        TypeDefinition type = PeekType ();
 
-                       PropertyDefinition [] props = type.Properties.GetProperties (name);
-                       if (props != null && props.Length > 0)
-                               _visitor.OnProperty (nav, props [0]);
+                       var property = type.Properties.FirstOrDefault (p => p.Name == name);
+                       if (property != null)
+                               _visitor.OnProperty (nav, property);
 
                        ProcessAttributes (nav);
                        ProcessMethods (nav);
@@ -303,7 +299,7 @@ namespace Mono.Linker {
                        string name = GetName (nav);
                        TypeDefinition type = PeekType ();
 
-                       EventDefinition evt = type.Events.GetEvent (name);
+                       EventDefinition evt = type.Events.FirstOrDefault (e => e.Name == name);
                        if (evt != null)
                                _visitor.OnEvent (nav, evt);
 
index a18e9095d77d346c0a147288eaaae0856eb0de3f..588cf4ae490d82edc130eb3b542df263ce471738 100644 (file)
@@ -2,7 +2,6 @@
 ./Mono.Linker/AssemblyInfo.cs
 ./Mono.Linker/AssemblyResolver.cs
 ./Mono.Linker/TypePreserve.cs
-./Mono.Linker/TypeParser.cs
 ./Mono.Linker/Annotations.cs
 ./Mono.Linker/LinkContext.cs
 ./Mono.Linker/AssemblyAction.cs
index 87dc7ac79397f7e6810944f358412ff8d0839f79..46a8878df177a2bc77b69e18e1b9bfb5169b1090 100644 (file)
@@ -66,7 +66,7 @@ include ../../build/executable.make
 $(PROGRAM) : Makefile
 
 MONO = \
-       MONO_PATH="$(topdir)/class/lib/2.0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" \
+       MONO_PATH="$(topdir)/class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" \
        $(RUNTIME) $(RUNTIME_FLAGS)
 
 dist-local: dist-default dist-tests
index ad1ba9d76ae832a258c585cd8964d6e9761301b0..9929998565c9e1f63eafd7ff4d33c760156b5dde 100644 (file)
@@ -47,13 +47,13 @@ namespace Mono.Documentation {
                internal ExceptionSources (TypeReference exception)
                {
                        Exception = exception;
-                       SourcesList = new List<IMemberReference> ();
-                       Sources = new ReadOnlyCollection<IMemberReference> (SourcesList);
+                       SourcesList = new List<MemberReference> ();
+                       Sources = new ReadOnlyCollection<MemberReference> (SourcesList);
                }
 
                public TypeReference Exception { get; private set; }
-               public ReadOnlyCollection<IMemberReference> Sources { get; private set; }
-               internal List<IMemberReference> SourcesList;
+               public ReadOnlyCollection<MemberReference> Sources { get; private set; }
+               internal List<MemberReference> SourcesList;
        }
 
 
@@ -72,11 +72,11 @@ namespace Mono.Documentation {
                        this.locations = locations;
                }
 
-               public IEnumerable<ExceptionSources> this [IMemberReference member] {
+               public IEnumerable<ExceptionSources> this [MemberReference member] {
                        get {
                                if (member == null)
                                        throw new ArgumentNullException ("member");
-                               IMemberReference memberDef = member.Resolve ();
+                               MemberReference memberDef = member.Resolve ();
                                if (memberDef == null) {
                                        ArrayType array = member.DeclaringType as ArrayType;
                                        if (array != null && array.Rank > 1) {
@@ -105,13 +105,13 @@ namespace Mono.Documentation {
                        }
                }
 
-               MethodBody[] GetMethodBodies (IMemberReference member)
+               MethodBody[] GetMethodBodies (MemberReference member)
                {
                        if (member is MethodReference) {
                                return new[]{ (((MethodReference) member).Resolve ()).Body };
                        }
                        if (member is PropertyReference) {
-                               PropertyDefinition prop = ((PropertyReference) member).Resolve ();
+                               PropertyDefinition prop = (PropertyDefinition) member;
                                return new[]{
                                        prop.GetMethod != null ? prop.GetMethod.Body : null,
                                        prop.SetMethod != null ? prop.SetMethod.Body : null,
@@ -120,7 +120,7 @@ namespace Mono.Documentation {
                        if (member is FieldReference)
                                return new MethodBody[]{};
                        if (member is EventReference) {
-                               EventDefinition ev = ((EventReference) member).Resolve ();
+                               EventDefinition ev = (EventDefinition) member;
                                return new[]{
                                        ev.AddMethod != null ? ev.AddMethod.Body : null,
                                        ev.InvokeMethod != null ? ev.InvokeMethod.Body : null, 
@@ -140,7 +140,7 @@ namespace Mono.Documentation {
                                                if ((locations & ExceptionLocations.Assembly) == 0 && 
                                                                (locations & ExceptionLocations.DependentAssemblies) == 0)
                                                        break;
-                                               IMemberReference memberRef = ((IMemberReference) instruction.Operand);
+                                               MemberReference memberRef = ((MemberReference) instruction.Operand);
                                                if (((locations & ExceptionLocations.Assembly) != 0 && 
                                                                        body.Method.DeclaringType.Scope.Name == memberRef.DeclaringType.Scope.Name) ||
                                                                ((locations & ExceptionLocations.DependentAssemblies) != 0 && 
@@ -158,7 +158,7 @@ namespace Mono.Documentation {
                                                if (IsExceptionConstructor (ctor)) {
                                                        AddExceptions (body, instruction,
                                                                        new TypeReference[]{ctor.DeclaringType},
-                                                                       new IMemberReference[]{body.Method},
+                                                                       new MemberReference[]{body.Method},
                                                                        exceptions);
                                                }
                                                break;
@@ -167,7 +167,7 @@ namespace Mono.Documentation {
                        }
                }
 
-               void AddExceptions (MethodBody body, Instruction instruction, IEnumerable<TypeReference> add, IEnumerable<IMemberReference> sources,
+               void AddExceptions (MethodBody body, Instruction instruction, IEnumerable<TypeReference> add, IEnumerable<MemberReference> sources,
                                Dictionary<string, ExceptionSources> exceptions)
                {
                        var handlers = body.ExceptionHandlers.Cast<ExceptionHandler> ()
index afe6d612dea3975644aed7e4454d41fbe884c2f0..35dae5a55d9742fc088ff90b01d375380ec0dd4d 100644 (file)
@@ -214,13 +214,12 @@ class MDocUpdater : MDocCommand
        {
                AssemblyDefinition assembly = null;
                try {
-                       assembly = AssemblyFactory.GetAssembly (name);
+                       assembly = AssemblyDefinition.ReadAssembly (name, new ReaderParameters { AssemblyResolver = assemblyResolver });
                } catch (System.IO.FileNotFoundException) { }
 
                if (assembly == null)
                        throw new InvalidOperationException("Assembly " + name + " not found.");
 
-               assembly.Resolver = assemblyResolver;
                return assembly;
        }
 
@@ -873,7 +872,7 @@ class MDocUpdater : MDocCommand
                        MyXmlNodeList todelete = new MyXmlNodeList ();
                        foreach (DocsNodeInfo info in docEnum.GetDocumentationMembers (basefile, type)) {
                                XmlElement oldmember  = info.Node;
-                               IMemberReference oldmember2 = info.Member;
+                               MemberReference oldmember2 = info.Member;
                                string sig = oldmember2 != null ? memberFormatters [0].GetDeclaration (oldmember2) : null;
 
                                // Interface implementations and overrides are deleted from the docs
@@ -912,7 +911,7 @@ class MDocUpdater : MDocCommand
                
                if (!DocUtils.IsDelegate (type)) {
                        XmlNode members = WriteElement (basefile.DocumentElement, "Members");
-                       foreach (IMemberReference m in type.GetMembers()) {
+                       foreach (MemberReference m in type.GetMembers()) {
                                if (m is TypeDefinition) continue;
                                
                                string sig = memberFormatters [0].GetDeclaration (m);
@@ -1193,12 +1192,12 @@ class MDocUpdater : MDocCommand
                        WriteElementText(root, "Base/BaseTypeName", basetypename);
                        
                        // Document how this type instantiates the generic parameters of its base type
-                       TypeReference origBase = type.BaseType.GetOriginalType ();
+                       TypeReference origBase = type.BaseType.GetElementType ();
                        if (origBase.IsGenericType ()) {
                                ClearElement(basenode, "BaseTypeArguments");
                                GenericInstanceType baseInst             = type.BaseType as GenericInstanceType;
-                               GenericArgumentCollection baseGenArgs    = baseInst == null ? null : baseInst.GenericArguments;
-                               GenericParameterCollection baseGenParams = origBase.GenericParameters;
+                               IList<TypeReference> baseGenArgs    = baseInst == null ? null : baseInst.GenericArguments;
+                               IList<GenericParameter> baseGenParams = origBase.GenericParameters;
                                if (baseGenArgs.Count != baseGenParams.Count)
                                        throw new InvalidOperationException ("internal error: number of generic arguments doesn't match number of generic parameters.");
                                for (int i = 0; baseGenArgs != null && i < baseGenArgs.Count; i++) {
@@ -1284,7 +1283,7 @@ class MDocUpdater : MDocCommand
        private void UpdateMember (DocsNodeInfo info)
        {
                XmlElement me = (XmlElement) info.Node;
-               IMemberReference mi = info.Member;
+               MemberReference mi = info.Member;
 
                foreach (MemberFormatter f in memberFormatters) {
                        string element = "MemberSignature[@Language='" + f.Language + "']";
@@ -1362,7 +1361,7 @@ class MDocUpdater : MDocCommand
                }
        }
 
-       IEnumerable<string> GetCustomAttributes (IMemberReference mi)
+       IEnumerable<string> GetCustomAttributes (MemberReference mi)
        {
                IEnumerable<string> attrs = Enumerable.Empty<string>();
 
@@ -1370,18 +1369,16 @@ class MDocUpdater : MDocCommand
                if (p != null)
                        attrs = attrs.Concat (GetCustomAttributes (p.CustomAttributes, ""));
 
-               PropertyReference pr = mi as PropertyReference;
-               if (pr != null) {
-                       PropertyDefinition pd = pr.Resolve ();
+               PropertyDefinition pd = mi as PropertyDefinition;
+               if (pd != null) {
                        if (pd.GetMethod != null)
                                attrs = attrs.Concat (GetCustomAttributes (pd.GetMethod.CustomAttributes, "get: "));
                        if (pd.SetMethod != null)
                                attrs = attrs.Concat (GetCustomAttributes (pd.SetMethod.CustomAttributes, "set: "));
                }
 
-               EventReference er = mi as EventReference;
-               if (er != null) {
-                       EventDefinition ed = er.Resolve ();
+               EventDefinition ed = mi as EventDefinition;
+               if (ed != null) {
                        if (ed.AddMethod != null)
                                attrs = attrs.Concat (GetCustomAttributes (ed.AddMethod.CustomAttributes, "add: "));
                        if (ed.RemoveMethod != null)
@@ -1391,38 +1388,33 @@ class MDocUpdater : MDocCommand
                return attrs;
        }
 
-       IEnumerable<string> GetCustomAttributes (CustomAttributeCollection attributes, string prefix)
+       IEnumerable<string> GetCustomAttributes (IList<CustomAttribute> attributes, string prefix)
        {
-               foreach (CustomAttribute attribute in attributes.Cast<CustomAttribute> ()
-                               .OrderBy (ca => ca.Constructor.DeclaringType.FullName)) {
-                       if (!attribute.Resolve ()) {
-                               // skip?
-                               Warning ("warning: could not resolve type {0}.",
-                                               attribute.Constructor.DeclaringType.FullName);
-                       }
-                       TypeDefinition attrType = attribute.Constructor.DeclaringType as TypeDefinition;
+               foreach (CustomAttribute attribute in attributes.OrderBy (ca => ca.AttributeType.FullName)) {
+
+                       TypeDefinition attrType = attribute.AttributeType as TypeDefinition;
                        if (attrType != null && !IsPublic (attrType))
                                continue;
-                       if (slashdocFormatter.GetName (attribute.Constructor.DeclaringType) == null)
+                       if (slashdocFormatter.GetName (attribute.AttributeType) == null)
                                continue;
                        
-                       if (Array.IndexOf (IgnorableAttributes, attribute.Constructor.DeclaringType.FullName) >= 0)
+                       if (Array.IndexOf (IgnorableAttributes, attribute.AttributeType.FullName) >= 0)
                                continue;
                        
                        StringList fields = new StringList ();
 
-                       ParameterDefinitionCollection parameters = attribute.Constructor.Parameters;
-                       for (int i = 0; i < attribute.ConstructorParameters.Count; ++i) {
+                       for (int i = 0; i < attribute.ConstructorArguments.Count; ++i) {
+                               CustomAttributeArgument argument = attribute.ConstructorArguments [i];
                                fields.Add (MakeAttributesValueString (
-                                               attribute.ConstructorParameters [i],
-                                               parameters [i].ParameterType));
+                                               argument.Value,
+                                               argument.Type));
                        }
                        var namedArgs =
-                               (from de in attribute.Fields.Cast<DictionaryEntry> ()
-                                select new { Type=attribute.GetFieldType (de.Key.ToString ()), Name=de.Key, Value=de.Value })
+                               (from namedArg in attribute.Fields
+                                select new { Type=namedArg.Argument.Type, Name=namedArg.Name, Value=namedArg.Argument.Value })
                                .Concat (
-                                               (from de in attribute.Properties.Cast<DictionaryEntry> ()
-                                                select new { Type=attribute.GetPropertyType (de.Key.ToString ()), Name=de.Key, Value=de.Value }))
+                                               (from namedArg in attribute.Properties
+                                                select new { Type=namedArg.Argument.Type, Name=namedArg.Name, Value=namedArg.Argument.Value }))
                                .OrderBy (v => v.Name);
                        foreach (var d in namedArgs)
                                fields.Add (string.Format ("{0}={1}", d.Name, 
@@ -1504,7 +1496,7 @@ class MDocUpdater : MDocCommand
                }
                else {
                        GenericParameter gp = (GenericParameter) info.Parameters [0].ParameterType;
-                       ConstraintCollection constraints = gp.Constraints;
+                       IList<TypeReference> constraints = gp.Constraints;
                        if (constraints.Count == 0)
                                AppendElementAttributeText (targets, "Target", "Type", "System.Object");
                        else
@@ -1611,7 +1603,7 @@ class MDocUpdater : MDocCommand
        private void MakeDocNode (DocsNodeInfo info)
        {
                List<GenericParameter> genericParams      = info.GenericParameters;
-               ParameterDefinitionCollection parameters  = info.Parameters;
+               IList<ParameterDefinition> parameters  = info.Parameters;
                TypeReference returntype                  = info.ReturnType;
                bool returnisreturn         = info.ReturnIsReturn;
                XmlElement e                = info.Node;
@@ -1806,7 +1798,7 @@ class MDocUpdater : MDocCommand
                }
        }
        
-       private void UpdateExceptions (XmlNode docs, IMemberReference member)
+       private void UpdateExceptions (XmlNode docs, MemberReference member)
        {
                foreach (var source in new ExceptionLookup (exceptions.Value)[member]) {
                        string cref = slashdocFormatter.GetDeclaration (source.Exception);
@@ -1837,7 +1829,7 @@ class MDocUpdater : MDocCommand
                                n.ParentNode.RemoveChild(n);
        }
        
-       private static bool UpdateAssemblyVersions (XmlElement root, IMemberReference member, bool add)
+       private static bool UpdateAssemblyVersions (XmlElement root, MemberReference member, bool add)
        {
                TypeDefinition type = member as TypeDefinition;
                if (type == null)
@@ -1947,8 +1939,7 @@ class MDocUpdater : MDocCommand
                long c = ToInt64 (v);
                if (values.ContainsKey (c))
                        return typename + "." + values [c];
-               if (valueDef.CustomAttributes.Cast<CustomAttribute> ()
-                               .Any (ca => ca.Constructor.DeclaringType.FullName == "System.FlagsAttribute")) {
+               if (valueDef.CustomAttributes.Any (ca => ca.AttributeType.FullName == "System.FlagsAttribute")) {
                        return string.Join (" | ",
                                        (from i in values.Keys
                                         where (c & i) != 0
@@ -1962,7 +1953,7 @@ class MDocUpdater : MDocCommand
        {
                var values = new Dictionary<long, string> ();
                foreach (var f in 
-                               (from f in type.Fields.Cast<FieldDefinition> ()
+                               (from f in type.Fields
                                 where !(f.IsRuntimeSpecialName || f.IsSpecialName)
                                 select f)) {
                        values [ToInt64 (f.Constant)] = f.Name;
@@ -1977,7 +1968,7 @@ class MDocUpdater : MDocCommand
                return Convert.ToInt64 (value);
        }
        
-       private void MakeParameters (XmlElement root, ParameterDefinitionCollection parameters)
+       private void MakeParameters (XmlElement root, IList<ParameterDefinition> parameters)
        {
                XmlElement e = WriteElement(root, "Parameters");
                e.RemoveAll();
@@ -1986,7 +1977,7 @@ class MDocUpdater : MDocCommand
                        e.AppendChild(pe);
                        pe.SetAttribute("Name", p.Name);
                        pe.SetAttribute("Type", GetDocParameterType (p.ParameterType));
-                       if (p.ParameterType is ReferenceType) {
+                       if (p.ParameterType is ByReferenceType) {
                                if (p.IsOut) pe.SetAttribute("RefType", "out");
                                else pe.SetAttribute("RefType", "ref");
                        }
@@ -1994,7 +1985,7 @@ class MDocUpdater : MDocCommand
                }
        }
        
-       private void MakeTypeParameters (XmlElement root, GenericParameterCollection typeParams)
+       private void MakeTypeParameters (XmlElement root, IList<GenericParameter> typeParams)
        {
                if (typeParams == null || typeParams.Count == 0) {
                        XmlElement f = (XmlElement) root.SelectSingleNode ("TypeParameters");
@@ -2010,7 +2001,7 @@ class MDocUpdater : MDocCommand
                        pe.SetAttribute("Name", t.Name);
                        MakeAttributes (pe, GetCustomAttributes (t.CustomAttributes, ""));
                        XmlElement ce = (XmlElement) e.SelectSingleNode ("Constraints");
-                       ConstraintCollection constraints = t.Constraints;
+                       IList<TypeReference> constraints = t.Constraints;
                        GenericParameterAttributes attrs = t.Attributes;
                        if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0) {
                                if (ce != null)
@@ -2042,13 +2033,13 @@ class MDocUpdater : MDocCommand
                }
        }
 
-       private void MakeParameters (XmlElement root, IMemberReference mi)
+       private void MakeParameters (XmlElement root, MemberReference mi)
        {
                if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
                        MakeParameters (root, ((MethodDefinition)mi).Parameters);
                else if (mi is MethodDefinition) {
                        MethodDefinition mb = (MethodDefinition) mi;
-                       ParameterDefinitionCollection parameters = mb.Parameters;
+                       IList<ParameterDefinition> parameters = mb.Parameters;
                        MakeParameters(root, parameters);
                        if (parameters.Count > 0 && DocUtils.IsExtensionMethod (mb)) {
                                XmlElement p = (XmlElement) root.SelectSingleNode ("Parameters/Parameter[position()=1]");
@@ -2056,7 +2047,7 @@ class MDocUpdater : MDocCommand
                        }
                }
                else if (mi is PropertyDefinition) {
-                       ParameterDefinitionCollection parameters = ((PropertyDefinition)mi).Parameters;
+                       IList<ParameterDefinition> parameters = ((PropertyDefinition)mi).Parameters;
                        if (parameters.Count > 0)
                                MakeParameters(root, parameters);
                        else
@@ -2072,7 +2063,7 @@ class MDocUpdater : MDocCommand
                return GetDocTypeFullName (type).Replace ("@", "&");
        }
 
-       private void MakeReturnValue (XmlElement root, TypeReference type, CustomAttributeCollection attributes) 
+       private void MakeReturnValue (XmlElement root, TypeReference type, IList<CustomAttribute> attributes) 
        {
                XmlElement e = WriteElement(root, "ReturnValue");
                e.RemoveAll();
@@ -2081,12 +2072,12 @@ class MDocUpdater : MDocCommand
                        MakeAttributes(e, GetCustomAttributes (attributes, ""));
        }
        
-       private void MakeReturnValue (XmlElement root, IMemberReference mi)
+       private void MakeReturnValue (XmlElement root, MemberReference mi)
        {
                if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
                        return;
                else if (mi is MethodDefinition)
-                       MakeReturnValue (root, ((MethodDefinition)mi).ReturnType.ReturnType, ((MethodDefinition)mi).ReturnType.CustomAttributes);
+                       MakeReturnValue (root, ((MethodDefinition)mi).ReturnType, ((MethodDefinition)mi).MethodReturnType.CustomAttributes);
                else if (mi is PropertyDefinition)
                        MakeReturnValue (root, ((PropertyDefinition)mi).PropertyType, null);
                else if (mi is FieldDefinition)
@@ -2099,7 +2090,7 @@ class MDocUpdater : MDocCommand
        
        private XmlElement MakeMember(XmlDocument doc, DocsNodeInfo info)
        {
-               IMemberReference mi = info.Member;
+               MemberReference mi = info.Member;
                if (mi is TypeDefinition) return null;
 
                string sigs = memberFormatters [0].GetDeclaration (mi);
@@ -2129,7 +2120,7 @@ class MDocUpdater : MDocCommand
                return me;
        }
 
-       internal static string GetMemberName (IMemberReference mi)
+       internal static string GetMemberName (MemberReference mi)
        {
                MethodDefinition mb = mi as MethodDefinition;
                if (mb == null) {
@@ -2150,7 +2141,7 @@ class MDocUpdater : MDocCommand
                        sb.Append (ifaceMethod.Name);
                }
                if (mb.IsGenericMethod ()) {
-                       GenericParameterCollection typeParams = mb.GenericParameters;
+                       IList<GenericParameter> typeParams = mb.GenericParameters;
                        if (typeParams.Count > 0) {
                                sb.Append ("<");
                                sb.Append (typeParams [0].Name);
@@ -2163,12 +2154,12 @@ class MDocUpdater : MDocCommand
        }
        
        /// SIGNATURE GENERATION FUNCTIONS
-       internal static bool IsPrivate (IMemberReference mi)
+       internal static bool IsPrivate (MemberReference mi)
        {
                return memberFormatters [0].GetDeclaration (mi) == null;
        }
 
-       internal static string GetMemberType (IMemberReference mi)
+       internal static string GetMemberType (MemberReference mi)
        {
                if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
                        return "Constructor";
@@ -2237,7 +2228,7 @@ class MDocUpdater : MDocCommand
                return xpath.ToString ();
        }
 
-       public static string GetXPathForMember (IMemberReference member)
+       public static string GetXPathForMember (MemberReference member)
        {
                StringBuilder xpath = new StringBuilder ();
                xpath.Append ("//Type[@FullName=\"")
@@ -2247,7 +2238,7 @@ class MDocUpdater : MDocCommand
                        .Append (GetMemberName (member))
                        .Append ("\"]");
 
-               ParameterDefinitionCollection parameters = null;
+               IList<ParameterDefinition> parameters = null;
                if (member is MethodDefinition)
                        parameters = ((MethodDefinition) member).Parameters;
                else if (member is PropertyDefinition) {
@@ -2268,28 +2259,28 @@ class MDocUpdater : MDocCommand
 }
 
 static class CecilExtensions {
-       public static IEnumerable<IMemberReference> GetMembers (this TypeDefinition type)
+       public static IEnumerable<MemberReference> GetMembers (this TypeDefinition type)
        {
-               foreach (var c in type.Constructors)
-                       yield return (IMemberReference) c;
+               foreach (var c in type.Methods.Where (m => m.IsConstructor))
+                       yield return (MemberReference) c;
                foreach (var e in type.Events)
-                       yield return (IMemberReference) e;
+                       yield return (MemberReference) e;
                foreach (var f in type.Fields)
-                       yield return (IMemberReference) f;
-               foreach (var m in type.Methods)
-                       yield return (IMemberReference) m;
+                       yield return (MemberReference) f;
+               foreach (var m in type.Methods.Where (m => !m.IsConstructor))
+                       yield return (MemberReference) m;
                foreach (var t in type.NestedTypes)
-                       yield return (IMemberReference) t;
+                       yield return (MemberReference) t;
                foreach (var p in type.Properties)
-                       yield return (IMemberReference) p;
+                       yield return (MemberReference) p;
        }
 
-       public static IEnumerable<IMemberReference> GetMembers (this TypeDefinition type, string member)
+       public static IEnumerable<MemberReference> GetMembers (this TypeDefinition type, string member)
        {
                return GetMembers (type).Where (m => m.Name == member);
        }
 
-       public static IMemberReference GetMember (this TypeDefinition type, string member)
+       public static MemberReference GetMember (this TypeDefinition type, string member)
        {
                return GetMembers (type, member).EnsureZeroOrOne ();
        }
@@ -2303,31 +2294,29 @@ static class CecilExtensions {
 
        public static MethodDefinition GetMethod (this TypeDefinition type, string method)
        {
-               return type.Methods.Cast<MethodDefinition> ()
+               return type.Methods
                        .Where (m => m.Name == method)
                        .EnsureZeroOrOne ();
        }
 
-       public static IEnumerable<IMemberReference> GetDefaultMembers (this TypeReference type)
+       public static IEnumerable<MemberReference> GetDefaultMembers (this TypeReference type)
        {
                TypeDefinition def = type as TypeDefinition;
                if (def == null)
-                       return new IMemberReference [0];
-               CustomAttribute defMemberAttr = type.CustomAttributes.Cast<CustomAttribute> ()
-                               .Where (c => c.Constructor.DeclaringType.FullName == "System.Reflection.DefaultMemberAttribute")
-                               .FirstOrDefault ();
+                       return new MemberReference [0];
+               CustomAttribute defMemberAttr = def.CustomAttributes
+                               .FirstOrDefault (c => c.AttributeType.FullName == "System.Reflection.DefaultMemberAttribute");
                if (defMemberAttr == null)
-                       return new IMemberReference [0];
-               string name = (string) defMemberAttr.ConstructorParameters [0];
-               return def.Properties.Cast<PropertyDefinition> ()
+                       return new MemberReference [0];
+               string name = (string) defMemberAttr.ConstructorArguments [0].Value;
+               return def.Properties
                                .Where (p => p.Name == name)
-                               .Select (p => (IMemberReference) p);
+                               .Select (p => (MemberReference) p);
        }
 
        public static IEnumerable<TypeDefinition> GetTypes (this AssemblyDefinition assembly)
        {
-               return assembly.Modules.Cast<ModuleDefinition> ()
-                               .SelectMany (md => md.Types.Cast<TypeDefinition> ());
+               return assembly.Modules.SelectMany (md => md.GetAllTypes ());
        }
 
        public static TypeDefinition GetType (this AssemblyDefinition assembly, string type)
@@ -2347,23 +2336,23 @@ static class CecilExtensions {
                return method.GenericParameters.Count > 0;
        }
 
-       public static IMemberReference Resolve (this IMemberReference member)
+       public static MemberReference Resolve (this MemberReference member)
        {
-               EventReference er = member as EventReference;
-               if (er != null)
-                       return er.Resolve ();
                FieldReference fr = member as FieldReference;
                if (fr != null)
                        return fr.Resolve ();
                MethodReference mr = member as MethodReference;
                if (mr != null)
                        return mr.Resolve ();
-               PropertyReference pr = member as PropertyReference;
-               if (pr != null)
-                       return pr.Resolve ();
                TypeReference tr = member as TypeReference;
                if (tr != null)
                        return tr.Resolve ();
+               PropertyReference pr = member as PropertyReference;
+               if (pr != null)
+                       return pr;
+               EventReference er = member as EventReference;
+               if (er != null)
+                       return er;
                throw new NotSupportedException ("Cannot find definition for " + member.ToString ());
        }
 
@@ -2371,7 +2360,23 @@ static class CecilExtensions {
        {
                if (!type.IsEnum)
                        return type;
-               return type.Fields.Cast<FieldDefinition>().First (f => f.Name == "value__").FieldType;
+               return type.Fields.First (f => f.Name == "value__").FieldType;
+       }
+
+       public static IEnumerable<TypeDefinition> GetAllTypes (this ModuleDefinition self)
+       {
+               return self.Types.SelectMany (t => t.GetAllTypes ());
+       }
+
+       static IEnumerable<TypeDefinition> GetAllTypes (this TypeDefinition self)
+       {
+               yield return self;
+
+               if (!self.HasNestedTypes)
+                       yield break;
+
+               foreach (var type in self.NestedTypes.SelectMany (t => t.GetAllTypes ()))
+                       yield return type;
        }
 }
 
@@ -2435,8 +2440,8 @@ static class DocUtils {
 
        public static string GetNamespace (TypeReference type)
        {
-               if (type.GetOriginalType ().IsNested)
-                       type = type.GetOriginalType ();
+               if (type.GetElementType ().IsNested)
+                       type = type.GetElementType ();
                while (type != null && type.IsNested)
                        type = type.DeclaringType;
                if (type == null)
@@ -2456,12 +2461,10 @@ static class DocUtils {
        public static bool IsExtensionMethod (MethodDefinition method)
        {
                return
-                       method.CustomAttributes.Cast<CustomAttribute> ()
-                                       .Where (m => m.Constructor.DeclaringType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
-                                       .Any () &&
-                       method.DeclaringType.CustomAttributes.Cast<CustomAttribute> ()
-                                       .Where (m => m.Constructor.DeclaringType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
-                                       .Any ();
+                       method.CustomAttributes
+                                       .Any (m => m.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
+                       && method.DeclaringType.CustomAttributes
+                                       .Any (m => m.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute");
        }
 
        public static bool IsDelegate (TypeDefinition type)
@@ -2549,7 +2552,7 @@ class DocsNodeInfo {
                SetType (type);
        }
 
-       public DocsNodeInfo (XmlElement node, IMemberReference member)
+       public DocsNodeInfo (XmlElement node, MemberReference member)
                : this (node)
        {
                SetMemberInfo (member);
@@ -2560,7 +2563,7 @@ class DocsNodeInfo {
                if (type == null)
                        throw new ArgumentNullException ("type");
                Type = type;
-               GenericParameters = new List<GenericParameter> (type.GenericParameters.Cast<GenericParameter> ());
+               GenericParameters = new List<GenericParameter> (type.GenericParameters);
                List<TypeReference> declTypes = DocUtils.GetDeclaringTypes (type);
                int maxGenArgs = DocUtils.GetGenericArgumentCount (type);
                for (int i = 0; i < declTypes.Count - 1; ++i) {
@@ -2572,12 +2575,12 @@ class DocsNodeInfo {
                }
                if (DocUtils.IsDelegate (type)) {
                        Parameters = type.GetMethod("Invoke").Parameters;
-                       ReturnType = type.GetMethod("Invoke").ReturnType.ReturnType;
+                       ReturnType = type.GetMethod("Invoke").ReturnType;
                        ReturnIsReturn = true;
                }
        }
 
-       void SetMemberInfo (IMemberReference member)
+       void SetMemberInfo (MemberReference member)
        {
                if (member == null)
                        throw new ArgumentNullException ("member");
@@ -2589,7 +2592,7 @@ class DocsNodeInfo {
                        MethodReference mr = (MethodReference) member;
                        Parameters = mr.Parameters;
                        if (mr.IsGenericMethod ()) {
-                               GenericParameters = new List<GenericParameter> (mr.GenericParameters.Cast<GenericParameter> ());
+                               GenericParameters = new List<GenericParameter> (mr.GenericParameters);
                        }
                }
                else if (member is PropertyDefinition) {
@@ -2597,7 +2600,7 @@ class DocsNodeInfo {
                }
                        
                if (member is MethodDefinition) {
-                       ReturnType = ((MethodDefinition) member).ReturnType.ReturnType;
+                       ReturnType = ((MethodDefinition) member).ReturnType;
                } else if (member is PropertyDefinition) {
                        ReturnType = ((PropertyDefinition) member).PropertyType;
                        ReturnIsReturn = false;
@@ -2610,11 +2613,11 @@ class DocsNodeInfo {
 
        public TypeReference ReturnType;
        public List<GenericParameter> GenericParameters;
-       public ParameterDefinitionCollection Parameters;
+       public IList<ParameterDefinition> Parameters;
        public bool ReturnIsReturn;
        public XmlElement Node;
        public bool AddRemarks = true;
-       public IMemberReference Member;
+       public MemberReference Member;
        public TypeDefinition Type;
 }
 
@@ -2645,7 +2648,7 @@ class DocumentationEnumerator {
                                oldmember.RemoveAttribute ("__monodocer-seen__");
                                continue;
                        }
-                       IMemberReference m = GetMember (type, new DocumentationMember (oldmember));
+                       MemberReference m = GetMember (type, new DocumentationMember (oldmember));
                        if (m == null) {
                                yield return new DocsNodeInfo (oldmember);
                        }
@@ -2655,7 +2658,7 @@ class DocumentationEnumerator {
                }
        }
 
-       protected static IMemberReference GetMember (TypeDefinition type, DocumentationMember member)
+       protected static MemberReference GetMember (TypeDefinition type, DocumentationMember member)
        {
                string membertype = member.MemberType;
                
@@ -2665,22 +2668,22 @@ class DocumentationEnumerator {
                string[] docTypeParams = GetTypeParameters (docName);
 
                // Loop through all members in this type with the same name
-               foreach (IMemberReference mi in GetReflectionMembers (type, docName)) {
+               foreach (MemberReference mi in GetReflectionMembers (type, docName)) {
                        if (mi is TypeDefinition) continue;
                        if (MDocUpdater.GetMemberType(mi) != membertype) continue;
 
                        if (MDocUpdater.IsPrivate (mi))
                                continue;
 
-                       ParameterDefinitionCollection pis = null;
+                       IList<ParameterDefinition> pis = null;
                        string[] typeParams = null;
                        if (mi is MethodDefinition) {
                                MethodDefinition mb = (MethodDefinition) mi;
                                pis = mb.Parameters;
                                if (docTypeParams != null && mb.IsGenericMethod ()) {
-                                       GenericParameterCollection args = mb.GenericParameters;
+                                       IList<GenericParameter> args = mb.GenericParameters;
                                        if (args.Count == docTypeParams.Length) {
-                                               typeParams = args.Cast<GenericParameter> ().Select (p => p.Name).ToArray ();
+                                               typeParams = args.Select (p => p.Name).ToArray ();
                                        }
                                }
                        }
@@ -2696,7 +2699,7 @@ class DocumentationEnumerator {
                        if (mDef != null && !mDef.IsConstructor) {
                                // Casting operators can overload based on return type.
                                if (returntype != GetReplacedString (
-                                                       MDocUpdater.GetDocTypeFullName (((MethodDefinition)mi).ReturnType.ReturnType), 
+                                                       MDocUpdater.GetDocTypeFullName (((MethodDefinition)mi).ReturnType), 
                                                        typeParams, docTypeParams)) {
                                        continue;
                                }
@@ -2742,7 +2745,7 @@ class DocumentationEnumerator {
                return types.ToArray ();
        }
 
-       protected static IEnumerable<IMemberReference> GetReflectionMembers (TypeDefinition type, string docName)
+       protected static IEnumerable<MemberReference> GetReflectionMembers (TypeDefinition type, string docName)
        {
                // need to worry about 4 forms of //@MemberName values:
                //  1. "Normal" (non-generic) member names: GetEnumerator
@@ -2761,12 +2764,12 @@ class DocumentationEnumerator {
                //    this as (1) or (2).
                if (docName.IndexOf ('<') == -1 && docName.IndexOf ('[') == -1) {
                        // Cases 1 & 2
-                       foreach (IMemberReference mi in type.GetMembers (docName))
+                       foreach (MemberReference mi in type.GetMembers (docName))
                                yield return mi;
                        if (CountChars (docName, '.') > 0)
                                // might be a property; try only type.member instead of
                                // namespace.type.member.
-                               foreach (IMemberReference mi in 
+                               foreach (MemberReference mi in 
                                                type.GetMembers (DocUtils.GetTypeDotMember (docName)))
                                        yield return mi;
                        yield break;
@@ -2800,11 +2803,11 @@ class DocumentationEnumerator {
                }
                string refName = startLt == -1 ? docName : docName.Substring (0, startLt);
                // case 3
-               foreach (IMemberReference mi in type.GetMembers (refName))
+               foreach (MemberReference mi in type.GetMembers (refName))
                        yield return mi;
 
                // case 4
-               foreach (IMemberReference mi in type.GetMembers (refName.Substring (startType + 1)))
+               foreach (MemberReference mi in type.GetMembers (refName.Substring (startType + 1)))
                        yield return mi;
 
                // If we _still_ haven't found it, we've hit another generic naming issue:
@@ -2818,7 +2821,7 @@ class DocumentationEnumerator {
                // over all member names, convert them into CSC format, and compare... :-(
                if (numDot == 0)
                        yield break;
-               foreach (IMemberReference mi in type.GetMembers ()) {
+               foreach (MemberReference mi in type.GetMembers ()) {
                        if (MDocUpdater.GetMemberName (mi) == docName)
                                yield return mi;
                }
@@ -2931,7 +2934,7 @@ class EcmaDocumentationEnumerator : DocumentationEnumerator {
                                        DocumentationMember dm = new DocumentationMember (ecmadocs);
                                        string xp = MDocUpdater.GetXPathForMember (dm);
                                        XmlElement oldmember = (XmlElement) basefile.SelectSingleNode (xp);
-                                       IMemberReference m;
+                                       MemberReference m;
                                        if (oldmember == null) {
                                                m = GetMember (type, dm);
                                                if (m == null) {
@@ -3083,7 +3086,7 @@ class MsxdocDocumentationImporter : DocumentationImporter {
                }
        }
 
-       private XmlNode GetDocs (IMemberReference member)
+       private XmlNode GetDocs (MemberReference member)
        {
                string slashdocsig = MDocUpdater.slashdocFormatter.GetDeclaration (member);
                if (slashdocsig != null)
@@ -3264,7 +3267,7 @@ public abstract class MemberFormatter {
                get {return "";}
        }
 
-       public virtual string GetName (IMemberReference member)
+       public virtual string GetName (MemberReference member)
        {
                TypeReference type = member as TypeReference;
                if (type != null)
@@ -3304,7 +3307,7 @@ public abstract class MemberFormatter {
        {
                if (type is ArrayType) {
                        TypeSpecification spec = type as TypeSpecification;
-                       _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+                       _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
                                        .Append (ArrayDelimeters [0]);
                        var origState = MemberFormatterState;
                        MemberFormatterState = MemberFormatterState.WithinArray;
@@ -3315,7 +3318,7 @@ public abstract class MemberFormatter {
                        MemberFormatterState = origState;
                        return buf.Append (ArrayDelimeters [1]);
                }
-               if (type is ReferenceType) {
+               if (type is ByReferenceType) {
                        return AppendRefTypeName (buf, type);
                }
                if (type is PointerType) {
@@ -3368,7 +3371,7 @@ public abstract class MemberFormatter {
        protected virtual StringBuilder AppendRefTypeName (StringBuilder buf, TypeReference type)
        {
                TypeSpecification spec = type as TypeSpecification;
-               return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+               return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
                                .Append (RefTypeModifier);
        }
 
@@ -3379,7 +3382,7 @@ public abstract class MemberFormatter {
        protected virtual StringBuilder AppendPointerTypeName (StringBuilder buf, TypeReference type)
        {
                TypeSpecification spec = type as TypeSpecification;
-               return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+               return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
                                .Append (PointerModifier);
        }
 
@@ -3394,7 +3397,7 @@ public abstract class MemberFormatter {
        protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type)
        {
                List<TypeReference> decls = DocUtils.GetDeclaringTypes (
-                               type is GenericInstanceType ? type.GetOriginalType () : type);
+                               type is GenericInstanceType ? type.GetElementType () : type);
                List<TypeReference> genArgs = GetGenericArguments (type);
                int argIdx = 0;
                int prev = 0;
@@ -3464,7 +3467,7 @@ public abstract class MemberFormatter {
                return e.Name;
        }
 
-       public virtual string GetDeclaration (IMemberReference member)
+       public virtual string GetDeclaration (MemberReference member)
        {
                if (member == null)
                        throw new ArgumentNullException ("member");
@@ -3520,7 +3523,7 @@ public abstract class MemberFormatter {
 
                if (buf.Length != 0)
                        buf.Append (" ");
-               buf.Append (GetTypeName (method.ReturnType)).Append (" ");
+               buf.Append (GetTypeName (method.MethodReturnType)).Append (" ");
 
                AppendMethodName (buf, method);
                AppendGenericMethod (buf, method).Append (" ");
@@ -3559,7 +3562,7 @@ public abstract class MemberFormatter {
                return buf;
        }
 
-       protected virtual StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters)
+       protected virtual StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
        {
                return buf;
        }
@@ -3667,7 +3670,7 @@ class ILFullMemberFormatter : MemberFormatter {
                        buf.Append ("struct ");
                if ((attrs & GenericParameterAttributes.DefaultConstructorConstraint) != 0)
                        buf.Append (".ctor ");
-               ConstraintCollection constraints = type.Constraints;
+               IList<TypeReference> constraints = type.Constraints;
                MemberFormatterState = 0;
                if (constraints.Count > 0) {
                        var full = new ILFullMemberFormatter ();
@@ -3727,7 +3730,7 @@ class ILFullMemberFormatter : MemberFormatter {
                                buf.Append (full.GetName (type.BaseType).Substring ("class ".Length));
                }
                bool first = true;
-               foreach (var name in type.Interfaces.Cast<TypeReference>()
+               foreach (var name in type.Interfaces
                                .Select (i => full.GetName (i))
                                .OrderBy (n => n)) {
                        if (first) {
@@ -3746,7 +3749,7 @@ class ILFullMemberFormatter : MemberFormatter {
        protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type)
        {
                List<TypeReference> decls = DocUtils.GetDeclaringTypes (
-                               type is GenericInstanceType ? type.GetOriginalType () : type);
+                               type is GenericInstanceType ? type.GetElementType () : type);
                bool first = true;
                foreach (var decl in decls) {
                        TypeReference declDef = decl.Resolve () ?? decl;
@@ -3836,13 +3839,13 @@ class ILFullMemberFormatter : MemberFormatter {
                        buf.Append ("virtual ");
                if (!method.IsStatic)
                        buf.Append ("instance ");
-               _AppendTypeName (buf, method.ReturnType.ReturnType);
+               _AppendTypeName (buf, method.ReturnType);
                buf.Append (' ')
                        .Append (method.Name);
                if (method.IsGenericMethod ()) {
                        var state = MemberFormatterState;
                        MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
-                       GenericParameterCollection args = method.GenericParameters;
+                       IList<GenericParameter> args = method.GenericParameters;
                        if (args.Count > 0) {
                                buf.Append ("<");
                                _AppendTypeName (buf, args [0]);
@@ -3923,7 +3926,7 @@ class ILFullMemberFormatter : MemberFormatter {
        protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
        {
                if (method.IsGenericMethod ()) {
-                       GenericParameterCollection args = method.GenericParameters;
+                       IList<GenericParameter> args = method.GenericParameters;
                        if (args.Count > 0) {
                                buf.Append ("<");
                                buf.Append (args [0].Name);
@@ -3935,12 +3938,12 @@ class ILFullMemberFormatter : MemberFormatter {
                return buf;
        }
 
-       protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters)
+       protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
        {
                return AppendParameters (buf, method, parameters, '(', ')');
        }
 
-       private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters, char begin, char end)
+       private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters, char begin, char end)
        {
                buf.Append (begin);
 
@@ -3959,7 +3962,7 @@ class ILFullMemberFormatter : MemberFormatter {
 
        private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
        {
-               if (parameter.ParameterType is ReferenceType) {
+               if (parameter.ParameterType is ByReferenceType) {
                        if (parameter.IsOut)
                                buf.Append ("out ");
                        else
@@ -4193,7 +4196,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
                if (DocUtils.IsDelegate (type)) {
                        buf.Append("delegate ");
                        MethodDefinition invoke = type.GetMethod ("Invoke");
-                       buf.Append (full.GetName (invoke.ReturnType.ReturnType)).Append (" ");
+                       buf.Append (full.GetName (invoke.ReturnType)).Append (" ");
                        buf.Append (GetName (type));
                        AppendParameters (buf, invoke, invoke.Parameters);
                        AppendGenericTypeConstraints (buf, type);
@@ -4280,11 +4283,11 @@ class CSharpFullMemberFormatter : MemberFormatter {
                return AppendConstraints (buf, type.GenericParameters);
        }
 
-       private StringBuilder AppendConstraints (StringBuilder buf, GenericParameterCollection genArgs)
+       private StringBuilder AppendConstraints (StringBuilder buf, IList<GenericParameter> genArgs)
        {
                foreach (GenericParameter genArg in genArgs) {
                        GenericParameterAttributes attrs = genArg.Attributes;
-                       ConstraintCollection constraints = genArg.Constraints;
+                       IList<TypeReference> constraints = genArg.Constraints;
                        if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0)
                                continue;
 
@@ -4417,7 +4420,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
        protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
        {
                if (method.IsGenericMethod ()) {
-                       GenericParameterCollection args = method.GenericParameters;
+                       IList<GenericParameter> args = method.GenericParameters;
                        if (args.Count > 0) {
                                buf.Append ("<");
                                buf.Append (args [0].Name);
@@ -4429,12 +4432,12 @@ class CSharpFullMemberFormatter : MemberFormatter {
                return buf;
        }
 
-       protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters)
+       protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
        {
                return AppendParameters (buf, method, parameters, '(', ')');
        }
 
-       private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters, char begin, char end)
+       private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters, char begin, char end)
        {
                buf.Append (begin);
 
@@ -4453,7 +4456,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
 
        private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
        {
-               if (parameter.ParameterType is ReferenceType) {
+               if (parameter.ParameterType is ByReferenceType) {
                        if (parameter.IsOut)
                                buf.Append ("out ");
                        else
@@ -4514,9 +4517,9 @@ class CSharpFullMemberFormatter : MemberFormatter {
 
                buf.Append (GetName (property.PropertyType)).Append (' ');
 
-               IEnumerable<IMemberReference> defs = property.DeclaringType.GetDefaultMembers ();
+               IEnumerable<MemberReference> defs = property.DeclaringType.GetDefaultMembers ();
                string name = property.Name;
-               foreach (IMemberReference mi in defs) {
+               foreach (MemberReference mi in defs) {
                        if (mi == property) {
                                name = "this";
                                break;
@@ -4664,7 +4667,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                if (type is GenericParameter) {
                        int l = buf.Length;
                        if (genDeclType != null) {
-                               GenericParameterCollection genArgs = genDeclType.GenericParameters;
+                               IList<GenericParameter> genArgs = genDeclType.GenericParameters;
                                for (int i = 0; i < genArgs.Count; ++i) {
                                        if (genArgs [i].Name == type.Name) {
                                                buf.Append ('`').Append (i);
@@ -4673,7 +4676,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                                }
                        }
                        if (genDeclMethod != null) {
-                               GenericParameterCollection genArgs = null;
+                               IList<GenericParameter> genArgs = null;
                                if (genDeclMethod.IsGenericMethod ()) {
                                        genArgs = genDeclMethod.GenericParameters;
                                        for (int i = 0; i < genArgs.Count; ++i) {
@@ -4739,7 +4742,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                return buf;
        }
 
-       public override string GetDeclaration (IMemberReference member)
+       public override string GetDeclaration (MemberReference member)
        {
                TypeReference r = member as TypeReference;
                if (r != null) {
@@ -4777,11 +4780,11 @@ class SlashDocMemberFormatter : MemberFormatter {
                buf.Append ('.');
                buf.Append (name.Replace (".", "#"));
                if (method.IsGenericMethod ()) {
-                       GenericParameterCollection genArgs = method.GenericParameters;
+                       IList<GenericParameter> genArgs = method.GenericParameters;
                        if (genArgs.Count > 0)
                                buf.Append ("``").Append (genArgs.Count);
                }
-               ParameterDefinitionCollection parameters = method.Parameters;
+               IList<ParameterDefinition> parameters = method.Parameters;
                try {
                        genDeclType   = method.DeclaringType;
                        genDeclMethod = method;
@@ -4794,7 +4797,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                return buf.ToString ();
        }
 
-       private StringBuilder AppendParameters (StringBuilder buf, GenericParameterCollection genArgs, ParameterDefinitionCollection parameters)
+       private StringBuilder AppendParameters (StringBuilder buf, IList<GenericParameter> genArgs, IList<ParameterDefinition> parameters)
        {
                if (parameters.Count == 0)
                        return buf;
@@ -4810,7 +4813,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                return buf.Append (')');
        }
 
-       private StringBuilder AppendParameter (StringBuilder buf, GenericParameterCollection genArgs, ParameterDefinition parameter)
+       private StringBuilder AppendParameter (StringBuilder buf, IList<GenericParameter> genArgs, ParameterDefinition parameter)
        {
                AddTypeCount = false;
                buf.Append (GetTypeName (parameter.ParameterType));
@@ -4844,11 +4847,11 @@ class SlashDocMemberFormatter : MemberFormatter {
                buf.Append (GetName (property.DeclaringType));
                buf.Append ('.');
                buf.Append (name);
-               ParameterDefinitionCollection parameters = property.Parameters;
+               IList<ParameterDefinition> parameters = property.Parameters;
                if (parameters.Count > 0) {
                        genDeclType = property.DeclaringType;
                        buf.Append ('(');
-                       GenericParameterCollection genArgs = property.DeclaringType.GenericParameters;
+                       IList<GenericParameter> genArgs = property.DeclaringType.GenericParameters;
                        AppendParameter (buf, genArgs, parameters [0]);
                        for (int i = 1; i < parameters.Count; ++i) {
                                 buf.Append (',');
@@ -4896,7 +4899,7 @@ class SlashDocMemberFormatter : MemberFormatter {
                if (method.Name == "op_Implicit" || method.Name == "op_Explicit") {
                        genDeclType = method.DeclaringType;
                        genDeclMethod = method;
-                       name += "~" + GetName (method.ReturnType.ReturnType);
+                       name += "~" + GetName (method.ReturnType);
                        genDeclType = null;
                        genDeclMethod = null;
                }
index 0a37c9c4478be489d033a2d4634f17debb1ad1a9..bdec17678153d8d8088615d8acd30a75274d2aff 100644 (file)
@@ -146,7 +146,7 @@ namespace Pdb2Mdb {
                        if (!File.Exists (asm))
                                Usage ();
 
-                       var assembly = AssemblyFactory.GetAssembly (asm);
+                       var assembly = AssemblyDefinition.ReadAssembly (asm);
 
                        var pdb = assembly.Name.Name + ".pdb";
 
index cfe379c11de1ee685e5692a4d91137bc951c2fbd..422de82f6216eb48c9eceee10c058cc82160d17d 100644 (file)
@@ -9,10 +9,11 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
 using System.Security;
-using System.Security.Permissions;
+using SSP = System.Security.Permissions;
 using System.Text;
 
 using Mono.Cecil;
@@ -22,6 +23,110 @@ using Mono.Cecil;
 
 namespace Mono.Tools {
 
+       static class SecurityDeclarationRocks {
+
+               public static PermissionSet ToPermissionSet (this SecurityDeclaration self)
+               {
+                       if (self == null)
+                               throw new ArgumentNullException ("self");
+
+                       PermissionSet set;
+                       if (TryProcessPermissionSetAttribute (self, out set))
+                               return set;
+
+                       return CreatePermissionSet (self);
+               }
+
+               static bool TryProcessPermissionSetAttribute (SecurityDeclaration declaration, out PermissionSet set)
+               {
+                       set = null;
+
+                       if (!declaration.HasSecurityAttributes && declaration.SecurityAttributes.Count != 1)
+                               return false;
+
+                       var security_attribute = declaration.SecurityAttributes [0];
+                       var attribute_type = security_attribute.AttributeType;
+
+                       if (attribute_type.Name != "PermissionSetAttribute" || attribute_type.Namespace != "System.Security.Permissions")
+                               return false;
+
+                       var named_argument = security_attribute.Properties [0];
+                       if (named_argument.Name != "XML")
+                               throw new NotSupportedException ();
+
+                       var attribute = new SSP.PermissionSetAttribute ((SSP.SecurityAction) declaration.Action);
+                       attribute.XML = (string) named_argument.Argument.Value;
+
+                       set = attribute.CreatePermissionSet ();
+                       return true;
+               }
+
+               static PermissionSet CreatePermissionSet (SecurityDeclaration declaration)
+               {
+                       var set = new PermissionSet (SSP.PermissionState.None);
+
+                       foreach (var attribute in declaration.SecurityAttributes) {
+                               var permission = CreatePermission (declaration, attribute);
+                               set.AddPermission (permission);
+                       }
+
+                       return set;
+               }
+
+               static IPermission CreatePermission (SecurityDeclaration declaration, SecurityAttribute attribute)
+               {
+                       var attribute_type = Type.GetType (attribute.AttributeType.FullName);
+                       if (attribute_type == null)
+                               throw new ArgumentException ();
+
+                       var security_attribute = CreateSecurityAttribute (attribute_type, declaration);
+                       if (security_attribute == null)
+                               throw new InvalidOperationException ();
+
+                       CompleteSecurityAttribute (security_attribute, attribute);
+
+                       return security_attribute.CreatePermission ();
+               }
+
+               static void CompleteSecurityAttribute (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+               {
+                       if (attribute.HasFields)
+                               CompleteSecurityAttributeFields (security_attribute, attribute);
+
+                       if (attribute.HasProperties)
+                               CompleteSecurityAttributeProperties (security_attribute, attribute);
+               }
+
+               static void CompleteSecurityAttributeFields (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+               {
+                       var type = security_attribute.GetType ();
+
+                       foreach (var named_argument in attribute.Fields)
+                               type.GetField (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value);
+               }
+
+               static void CompleteSecurityAttributeProperties (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+               {
+                       var type = security_attribute.GetType ();
+
+                       foreach (var named_argument in attribute.Properties)
+                               type.GetProperty (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value, null);
+               }
+
+               static SSP.SecurityAttribute CreateSecurityAttribute (Type attribute_type, SecurityDeclaration declaration)
+               {
+                       SSP.SecurityAttribute security_attribute;
+                       try {
+                               security_attribute = (SSP.SecurityAttribute) Activator.CreateInstance (
+                                       attribute_type, new object [] { (SSP.SecurityAction) declaration.Action });
+                       } catch (MissingMethodException) {
+                               security_attribute = (SSP.SecurityAttribute) Activator.CreateInstance (attribute_type, new object [0]);
+                       }
+
+                       return security_attribute;
+               }
+       }
+
        class SecurityElementComparer : IComparer {
 
                public int Compare (object x, object y)
@@ -101,17 +206,17 @@ namespace Mono.Tools {
                        foreach (SecurityDeclaration decl in ad.SecurityDeclarations) {
                                switch (decl.Action) {
                                case Mono.Cecil.SecurityAction.RequestMinimum:
-                                       minimal = decl.PermissionSet.ToString ();
+                                       minimal = decl.ToPermissionSet ().ToString ();
                                        break;
                                case Mono.Cecil.SecurityAction.RequestOptional:
-                                       optional = decl.PermissionSet.ToString ();
+                                       optional = decl.ToPermissionSet ().ToString ();
                                        break;
                                case Mono.Cecil.SecurityAction.RequestRefuse:
-                                       refused = decl.PermissionSet.ToString ();
+                                       refused = decl.ToPermissionSet ().ToString ();
                                        break;
                                default:
                                        tw.WriteLine ("Invalid assembly level declaration {0}{1}{2}",
-                                               decl.Action, Environment.NewLine, decl.PermissionSet);
+                                               decl.Action, Environment.NewLine, decl.ToPermissionSet ());
                                        result = false;
                                        break;
                                }
@@ -126,11 +231,11 @@ namespace Mono.Tools {
                        return result;
                }
 
-               static void ShowSecurity (TextWriter tw, string header, SecurityDeclarationCollection declarations)
+               static void ShowSecurity (TextWriter tw, string header, IEnumerable<SecurityDeclaration> declarations)
                {
                        foreach (SecurityDeclaration declsec in declarations) {
                                tw.WriteLine ("{0} {1} Permission Set:{2}{3}", header,
-                                       declsec.Action, Environment.NewLine, declsec.PermissionSet);
+                                       declsec.Action, Environment.NewLine, declsec.ToPermissionSet ());
                        }
                }
 
@@ -164,13 +269,13 @@ namespace Mono.Tools {
                        se.AddAttribute (attr, value);
                }
 
-               static SecurityElement AddSecurityXml (SecurityDeclarationCollection declarations)
+               static SecurityElement AddSecurityXml (IEnumerable<SecurityDeclaration> declarations)
                {
                        ArrayList list = new ArrayList ();
                        foreach (SecurityDeclaration declsec in declarations) {
                                SecurityElement child = new SecurityElement ("Action");
                                AddAttribute (child, "Name", declsec.Action.ToString ());
-                               child.AddChild (declsec.PermissionSet.ToXml ());
+                               child.AddChild (declsec.ToPermissionSet ().ToXml ());
                                list.Add (child);
                        }
                        // sort actions
@@ -270,7 +375,7 @@ namespace Mono.Tools {
                                        return 0;
 
                                string assemblyName = args [args.Length - 1];
-                               AssemblyDefinition ad = AssemblyFactory.GetAssembly (assemblyName);
+                               AssemblyDefinition ad = AssemblyDefinition.ReadAssembly (assemblyName);
                                if (ad != null) {
                                        bool complete = false;
                                        
index f849690e2364497db40ffde3b116ac738afca684..b3de3da911736990e4d7f8fbe7df40bc3248825b 100644 (file)
@@ -5,7 +5,7 @@ include ../../build/rules.make
 CECIL = $(topdir)/class/lib/$(PROFILE)/Mono.Cecil.dll
 LINKER = $(topdir)/class/lib/$(PROFILE)/monolinker.exe
 
-LOCAL_MCS_FLAGS = -r:System.dll -r:System.Xml.dll -r:$(LINKER) -r:$(CECIL)
+LOCAL_MCS_FLAGS = -r:System.dll -r:System.Core.dll -r:System.Xml.dll -r:$(LINKER) -r:$(CECIL)
 
 LIBRARY = Mono.Tuner.dll
 
index b983ed7ca2f1ae07b39695d20eb0542bea892814..30c5ac4b9db6d1ca21840af28eaaed038f54a17c 100644 (file)
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 
 using Mono.Linker;
 using Mono.Linker.Steps;
@@ -38,6 +39,8 @@ namespace Mono.Tuner {
 
        public class AdjustVisibility : BaseStep {
 
+               static readonly object internalized_key = new object ();
+
                protected override void ProcessAssembly (AssemblyDefinition assembly)
                {
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -46,13 +49,13 @@ namespace Mono.Tuner {
                        ProcessTypes (assembly.MainModule.Types);
                }
 
-               static void ProcessTypes (ICollection types)
+               void ProcessTypes (ICollection types)
                {
                        foreach (TypeDefinition type in types)
                                ProcessType (type);
                }
 
-               static void ProcessType (TypeDefinition type)
+               void ProcessType (TypeDefinition type)
                {
                        if (!IsPublic (type))
                                return;
@@ -66,7 +69,6 @@ namespace Mono.Tuner {
                                return;
 
                        ProcessFields (type.Fields);
-                       ProcessMethods (type.Constructors);
                        ProcessMethods (type.Methods);
                }
 
@@ -75,7 +77,7 @@ namespace Mono.Tuner {
                        return type.DeclaringType == null ? type.IsPublic : type.IsNestedPublic;
                }
 
-               static void SetInternalVisibility (TypeDefinition type)
+               void SetInternalVisibility (TypeDefinition type)
                {
                        type.Attributes &= ~TypeAttributes.VisibilityMask;
                        if (type.DeclaringType == null)
@@ -86,13 +88,13 @@ namespace Mono.Tuner {
                        MarkInternalized (type);
                }
 
-               static void ProcessMethods (ICollection methods)
+               void ProcessMethods (ICollection methods)
                {
                        foreach (MethodDefinition method in methods)
                                ProcessMethod (method);
                }
 
-               static void ProcessMethod (MethodDefinition method)
+               void ProcessMethod (MethodDefinition method)
                {
                        if (IsMarkedAsPublic (method))
                                return;
@@ -103,15 +105,15 @@ namespace Mono.Tuner {
                                SetProtectedAndInternalVisibility (method);
                }
 
-               static void SetInternalVisibility (MethodDefinition method)
+               void SetInternalVisibility (MethodDefinition method)
                {
                        method.Attributes &= ~MethodAttributes.MemberAccessMask;
-                       method.Attributes |= MethodAttributes.Assem;
+                       method.Attributes |= MethodAttributes.Assembly;
 
                        MarkInternalized (method);
                }
 
-               static void SetProtectedAndInternalVisibility (MethodDefinition method)
+               void SetProtectedAndInternalVisibility (MethodDefinition method)
                {
                        method.Attributes &= ~MethodAttributes.MemberAccessMask;
                        method.Attributes |= MethodAttributes.FamANDAssem;
@@ -119,18 +121,18 @@ namespace Mono.Tuner {
                        MarkInternalized (method);
                }
 
-               static bool IsMarkedAsPublic (IAnnotationProvider provider)
+               bool IsMarkedAsPublic (IMetadataTokenProvider provider)
                {
                        return Annotations.IsPublic (provider);
                }
 
-               static void ProcessFields (FieldDefinitionCollection fields)
+               void ProcessFields (IEnumerable<FieldDefinition> fields)
                {
                        foreach (FieldDefinition field in fields)
                                ProcessField (field);
                }
 
-               static void ProcessField (FieldDefinition field)
+               void ProcessField (FieldDefinition field)
                {
                        if (IsMarkedAsPublic (field))
                                return;
@@ -141,7 +143,7 @@ namespace Mono.Tuner {
                                SetProtectedAndInternalVisibility (field);
                }
 
-               static void SetInternalVisibility (FieldDefinition field)
+               void SetInternalVisibility (FieldDefinition field)
                {
                        field.Attributes &= ~FieldAttributes.FieldAccessMask;
                        field.Attributes |= FieldAttributes.Assembly;
@@ -149,7 +151,7 @@ namespace Mono.Tuner {
                        MarkInternalized (field);
                }
 
-               static void SetProtectedAndInternalVisibility (FieldDefinition field)
+               void SetProtectedAndInternalVisibility (FieldDefinition field)
                {
                        field.Attributes &= ~FieldAttributes.FieldAccessMask;
                        field.Attributes |= FieldAttributes.FamANDAssem;
@@ -157,9 +159,9 @@ namespace Mono.Tuner {
                        MarkInternalized (field);
                }
 
-               static void MarkInternalized (IAnnotationProvider provider)
+               void MarkInternalized (IMetadataTokenProvider provider)
                {
-                       TunerAnnotations.Internalized (provider);
+                       TunerAnnotations.Internalized (Context, provider);
                }
        }
 }
index ce9d2a91f5430aafd20d550b309c92efc0015d4c..144702556aa2fb68ecbffdf649779bad3fdd0b92 100644 (file)
@@ -81,7 +81,6 @@ namespace Mono.Tuner {
                        CheckInterfaces (type);
 
                        CheckFields (type);
-                       CheckConstructors (type);
                        CheckMethods (type);
                }
 
@@ -114,10 +113,10 @@ namespace Mono.Tuner {
                                if (!IsInternalsVisibleToAttribute (attribute))
                                        continue;
 
-                               if (attribute.ConstructorParameters.Count == 0)
+                               if (attribute.ConstructorArguments.Count == 0)
                                        continue;
 
-                               string signature = (string) attribute.ConstructorParameters [0];
+                               string signature = (string) attribute.ConstructorArguments [0].Value;
 
                                if (InternalsVisibleToSignatureMatch (signature, candidate.Name))
                                        return true;
@@ -162,7 +161,7 @@ namespace Mono.Tuner {
                        if (reference == null)
                                return true;
 
-                       if (reference is GenericParameter || reference.GetOriginalType () is GenericParameter)
+                       if (reference is GenericParameter || reference.GetElementType () is GenericParameter)
                                return true;
 
                        TypeDefinition other = reference.Resolve ();
@@ -298,11 +297,6 @@ namespace Mono.Tuner {
                        }
                }
 
-               void CheckConstructors (TypeDefinition type)
-               {
-                       CheckMethods (type, type.Constructors);
-               }
-
                void CheckMethods (TypeDefinition type)
                {
                        CheckMethods (type, type.Methods);
@@ -311,15 +305,15 @@ namespace Mono.Tuner {
                void CheckMethods (TypeDefinition type, ICollection methods)
                {
                        foreach (MethodDefinition method in methods) {
-                               if (!IsVisibleFrom (type, method.ReturnType.ReturnType)) {
+                               if (!IsVisibleFrom (type, method.ReturnType)) {
                                        ReportError ("Method return type `{0}` in method `{1}` is not visible",
-                                               method.ReturnType.ReturnType, method);
+                                               method.ReturnType, method);
                                }
 
                                foreach (ParameterDefinition parameter in method.Parameters) {
                                        if (!IsVisibleFrom (type, parameter.ParameterType)) {
                                                ReportError ("Parameter `{0}` of type `{1}` in method `{2}` is not visible.",
-                                                       parameter.Sequence, parameter.ParameterType, method);
+                                                       parameter.Index, parameter.ParameterType, method);
                                        }
                                }
 
index d06fd354b49dd390dd9fc72cd5389dc2cc95e6a8..19a334a5ccb356a1e93a9aca9e5b910cec07dafc 100644 (file)
@@ -77,9 +77,6 @@ namespace Mono.Tuner {
                        if (type.HasMethods)
                                ProcessMethods (type.Methods);
 
-                       if (type.HasConstructors)
-                               ProcessMethods (type.Constructors);
-
                        if (type.HasEvents)
                                ProcessEvents (type.Events);
 
@@ -105,7 +102,7 @@ namespace Mono.Tuner {
                {
                        ProcessGenericParameters (method);
 
-                       Filter (method.ReturnType);
+                       Filter (method.MethodReturnType);
 
                        if (method.HasParameters)
                                ProcessParameters (method.Parameters);
index 0d4bac44e1e88b4103c2e87bf1592fe7c8b5ad95..e3edf0d5fa2b2f90c81b272e95bb97eed1b0cc45 100644 (file)
@@ -29,6 +29,7 @@
 using System;
 using System.Collections;
 using System.IO;
+using System.Linq;
 using System.Text;
 
 using Mono.Linker;
@@ -101,17 +102,13 @@ namespace Mono.Tuner {
                        foreach (TypeDefinition type in _assembly.MainModule.Types) {
                                RemoveSecurityAttributes (type);
 
-                               if (type.HasConstructors)
-                                       foreach (MethodDefinition ctor in type.Constructors)
-                                               RemoveSecurityAttributes (ctor);
-
                                if (type.HasMethods)
                                        foreach (MethodDefinition method in type.Methods)
                                                RemoveSecurityAttributes (method);
                        }
                }
 
-               static void RemoveSecurityDeclarations (IHasSecurity provider)
+               static void RemoveSecurityDeclarations (ISecurityDeclarationProvider provider)
                {
                        // also remove already existing CAS security declarations
 
@@ -126,12 +123,12 @@ namespace Mono.Tuner {
 
                static void RemoveSecurityAttributes (ICustomAttributeProvider provider)
                {
-                       RemoveSecurityDeclarations (provider as IHasSecurity);
+                       RemoveSecurityDeclarations (provider as ISecurityDeclarationProvider);
 
                        if (!provider.HasCustomAttributes)
                                return;
 
-                       CustomAttributeCollection attributes = provider.CustomAttributes;
+                       var attributes = provider.CustomAttributes;
                        for (int i = 0; i < attributes.Count; i++) {
                                CustomAttribute attribute = attributes [i];
                                switch (attribute.Constructor.DeclaringType.FullName) {
@@ -231,7 +228,7 @@ namespace Mono.Tuner {
                        if (HasSecurityAttribute (provider, type))
                                return;
 
-                       CustomAttributeCollection attributes = provider.CustomAttributes;
+                       var attributes = provider.CustomAttributes;
                        switch (type) {
                        case AttributeType.Critical:
                                attributes.Add (CreateCriticalAttribute ());
@@ -279,7 +276,7 @@ namespace Mono.Tuner {
 
                TypeDefinition GetType (string fullname)
                {
-                       return _assembly.MainModule.Types [fullname];
+                       return _assembly.MainModule.GetType (fullname);
                }
 
                MethodDefinition GetMethod (string signature)
@@ -306,9 +303,7 @@ namespace Mono.Tuner {
                        if (type == null)
                                return null;
 
-                       return method_name.StartsWith (".c") ?
-                               GetMethod (type.Constructors, signature) :
-                               GetMethod (type.Methods, signature);
+                       return GetMethod (type.Methods, signature);
                }
 
                static MethodDefinition GetMethod (IEnumerable methods, string signature)
@@ -322,10 +317,13 @@ namespace Mono.Tuner {
 
                static string GetFullName (MethodReference method)
                {
-                       int sentinel = method.GetSentinel ();
+                       var sentinel = method.Parameters.FirstOrDefault (p => p.ParameterType.IsSentinel);
+                       var sentinel_pos = -1;
+                       if (sentinel != null)
+                               sentinel_pos = method.Parameters.IndexOf (sentinel);
 
                        StringBuilder sb = new StringBuilder ();
-                       sb.Append (method.ReturnType.ReturnType.FullName);
+                       sb.Append (method.ReturnType.FullName);
                        sb.Append (" ");
                        sb.Append (method.DeclaringType.FullName);
                        sb.Append ("::");
@@ -345,7 +343,7 @@ namespace Mono.Tuner {
                                        if (i > 0)
                                                sb.Append (",");
 
-                                       if (i == sentinel)
+                                       if (i == sentinel_pos)
                                                sb.Append ("...,");
 
                                        sb.Append (method.Parameters [i].ParameterType.FullName);
@@ -357,7 +355,7 @@ namespace Mono.Tuner {
 
                static MethodDefinition GetDefaultConstructor (TypeDefinition type)
                {
-                       foreach (MethodDefinition ctor in type.Constructors)
+                       foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
                                if (ctor.Parameters.Count == 0)
                                        return ctor;
 
@@ -372,7 +370,7 @@ namespace Mono.Tuner {
                        TypeDefinition safe_critical_type = Context.GetType (_safe_critical);
                        if (safe_critical_type == null)
                                throw new InvalidOperationException (String.Format ("{0} type not found", _safe_critical));
-                       
+
                        _safe_critical_ctor = GetDefaultConstructor (safe_critical_type);
                        return _safe_critical_ctor;
                }
@@ -385,7 +383,7 @@ namespace Mono.Tuner {
                        TypeDefinition critical_type = Context.GetType (_critical);
                        if (critical_type == null)
                                throw new InvalidOperationException (String.Format ("{0} type not found", _critical));
-                       
+
                        _critical_ctor = GetDefaultConstructor (critical_type);
                        return _critical_ctor;
                }
index d48bafe3206bede39c979b72293f62fc138cf389..63a82b28dcb188eab16f8785ac8dccd7ee034027 100644 (file)
@@ -38,7 +38,7 @@ using Mono.Cecil;
 namespace Mono.Tuner {
 
        public class MoonlightA11yAssemblyStep : MoonlightAssemblyStep {
-               
+
                protected override void CustomizePipeline (Pipeline pipeline)
                {
                        pipeline.RemoveStep (typeof (LoadI18nAssemblies));
@@ -49,6 +49,6 @@ namespace Mono.Tuner {
                        pipeline.RemoveStep (typeof (RegenerateGuidStep));
                        pipeline.AddStepBefore (typeof (OutputStep), new MoonlightA11yProcessor ());
                }
-               
+
        }
 }
index 01118798c988e4c20ff3076cb73ecdcb7b7a5f7a..17db23b2a8bb961119809affdeb856ba7244a3b2 100644 (file)
@@ -74,19 +74,19 @@ namespace Mono.Tuner {
                        if (types != null && types.Count > 0) {
                                writer.WriteStartElement("assembly");
                                writer.WriteAttributeString ("fullname", assembly.Name.Name);
-                               
+
                                foreach (TypeDefinition type in types.Keys) {
                                        IList members = types [type];
                                        if (members != null && members.Count > 0) {
                                                writer.WriteStartElement("type");
                                                writer.WriteAttributeString ("fullname", type.FullName);
 
-                                               foreach (IAnnotationProvider member in members) {
+                                               foreach (IMetadataTokenProvider member in members) {
                                                        MethodDefinition method = member as MethodDefinition;
                                                        if (method != null) {
                                                                writer.WriteStartElement("method");
-                                                               writer.WriteAttributeString ("signature", 
-                                                                                            method.ReturnType.ReturnType.FullName + " " +
+                                                               writer.WriteAttributeString ("signature",
+                                                                                            method.ReturnType.FullName + " " +
                                                                                             method.Name + GetMethodParams (method));
                                                                writer.WriteEndElement ();
                                                                continue;
@@ -102,11 +102,11 @@ namespace Mono.Tuner {
                                                writer.WriteEndElement ();
                                        }
                                }
-                               
+
                                writer.WriteEndElement ();
                                Console.WriteLine ();
                        }
-                       
+
                }
 
                protected override void EndProcess ()
@@ -149,16 +149,16 @@ namespace Mono.Tuner {
                                IList used_providers = FilterPublicMembers (ScanType (type));
                                if (used_providers.Count > 0)
                                        members_used [type] = used_providers;
-                               else if (IsInternal (type, true) && 
+                               else if (IsInternal (type, true) &&
                                         Annotations.IsMarked (type))
                                        throw new NotSupportedException (String.Format ("The type {0} is used while its API is not", type.ToString ()));
                        }
                        return members_used;
                }
 
-               static IList ScanType (TypeDefinition type)
+               IList ScanType (TypeDefinition type)
                {
-                       return ExtractUsedProviders (type.Methods, type.Constructors, type.Fields);
+                       return ExtractUsedProviders (type.Methods, type.Fields);
                }
 
                static IList FilterPublicMembers (IList members)
@@ -177,12 +177,12 @@ namespace Mono.Tuner {
                {
                        if (master_infos.Length == 0)
                                throw new Exception ("No masterinfo files found in current directory");
-                       
+
                        foreach (string file in master_infos) {
                                if (file.EndsWith (name + ".info"))
                                        return file;
                        }
-                       
+
                        return null;
                }
 
@@ -198,12 +198,12 @@ namespace Mono.Tuner {
                        }
                        return String.Format (xpath_init, parent_type.Namespace, parent_type.Name) + xpath;
                }
-               
+
                static bool IsInternal (MemberReference member, bool master_info)
                {
                        TypeDefinition type = null;
                        string master_info_file = null;
-                       
+
                        if (member is TypeDefinition) {
                                type = member as TypeDefinition;
                                if (!master_info)
@@ -224,7 +224,7 @@ namespace Mono.Tuner {
 
                        MethodDefinition method = member as MethodDefinition;
                        FieldDefinition field = member as FieldDefinition;
-       
+
                        if (field == null && method == null)
                                throw new System.NotSupportedException ("Members to scan should be methods or fields");
 
@@ -246,7 +246,7 @@ namespace Mono.Tuner {
                                name = field.Name;
                        else {
                                name = method.ToString ();
-                               
+
                                //lame, I know...
                                name = WackyOutArgs (WackyCommas (name.Substring (name.IndexOf ("::") + 2)
                                                    .Replace ("/", "+") // nested classes
@@ -258,7 +258,7 @@ namespace Mono.Tuner {
 
                        return !NodeExists (master_info_file, xpath_type + String.Format ("/properties/*/*/*[@name='{0}']", name));
                }
-               
+
                //at some point I want to get rid of this method and ask cecil's maintainer to spew commas in a uniform way...
                static string WackyCommas (string method)
                {
@@ -310,14 +310,14 @@ namespace Mono.Tuner {
                        return nav.SelectSingleNode (xpath) != null;
                }
 
-               static IList /*List<IAnnotationProvider>*/ ExtractUsedProviders (params IList[] members)
+               IList /*List<IAnnotationProvider>*/ ExtractUsedProviders (params IList[] members)
                {
                        IList used = new ArrayList ();
                        if (members == null || members.Length == 0)
                                return used;
 
                        foreach (IList members_list in members)
-                               foreach (IAnnotationProvider provider in members_list)
+                               foreach (IMetadataTokenProvider provider in members_list)
                                        if (Annotations.IsMarked (provider))
                                                used.Add (provider);
 
index ad7fe39654813fc50e03c8550dd4b08c1f103f4a..d8d9e54bea80a23dea9de398f5ac0acf2b5663bb 100644 (file)
 
 
 using System;
+using System.Linq;
 
 using Mono.Cecil;
 
 using Mono.Linker;
 
 namespace Mono.Tuner {
-       
+
        public class MoonlightA11yProcessor : InjectSecurityAttributes {
-               
+
                protected override bool ConditionToProcess ()
                {
                        return true;
                }
-               
+
                protected override void ProcessAssembly (AssemblyDefinition assembly)
                {
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -54,45 +55,45 @@ namespace Mono.Tuner {
 
                        // add [SecurityCritical]
                        AddSecurityAttributes ();
-                       
+
                        // convert all public members into internal
                        MakeApiInternal ();
                }
-               
+
                void MakeApiInternal ()
                {
                        foreach (TypeDefinition type in _assembly.MainModule.Types) {
                                if (type.IsPublic)
                                        type.IsPublic = false;
 
-                               if (type.HasConstructors && !type.Name.EndsWith ("Adapter"))
-                                       foreach (MethodDefinition ctor in type.Constructors)
+                               if (type.HasMethods && !type.Name.EndsWith ("Adapter"))
+                                       foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
                                                if (ctor.IsPublic)
                                                        ctor.IsAssembly = true;
 
                                if (type.HasMethods)
-                                       foreach (MethodDefinition method in type.Methods)
+                                       foreach (MethodDefinition method in type.Methods.Where (m => !m.IsConstructor))
                                                if (method.IsPublic)
                                                        method.IsAssembly = true;
                        }
                }
-               
+
                void AddSecurityAttributes ()
                {
                        foreach (TypeDefinition type in _assembly.MainModule.Types) {
                                AddCriticalAttribute (type);
 
-                               if (type.HasConstructors)
-                                       foreach (MethodDefinition ctor in type.Constructors)
+                               if (type.HasMethods)
+                                       foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
                                                AddCriticalAttribute (ctor);
 
                                if (type.HasMethods)
-                                       foreach (MethodDefinition method in type.Methods) {
+                                       foreach (MethodDefinition method in type.Methods.Where (m => !m.IsConstructor)) {
                                                MethodDefinition parent = null;
-                                       
+
                                                //TODO: take in account generic params
                                                if (!method.HasGenericParameters) {
-                                                       
+
                                                        /*
                                                         * we need to scan base methods because the CoreCLR complains about SC attribs added
                                                         * to overriden methods whose base (virtual or interface) method is not marked as SC
@@ -112,16 +113,16 @@ namespace Mono.Tuner {
 
                                                        AddCriticalAttribute (method);
                                }
-                               
+
                        }
                }
-               
+
                MethodDefinition GetBaseMethod (TypeDefinition finalType, MethodDefinition final)
                {
                        // both GetOverridenMethod and GetInterfaceMethod return null if there is no base method
                        return GetOverridenMethod (finalType, final) ?? GetInterfaceMethod (finalType, final);
                }
-               
+
                //note: will not return abstract methods
                MethodDefinition GetOverridenMethod (TypeDefinition finalType, MethodDefinition final)
                {
@@ -130,11 +131,11 @@ namespace Mono.Tuner {
                                foreach (MethodDefinition method in baseType.Resolve ().Methods) {
                                        if (!method.IsVirtual || method.Name != final.Name)
                                                continue;
-                                       
+
                                        //TODO: should we discard them?
                                        if (method.IsAbstract)
                                                continue;
-                                       
+
                                        if (HasSameSignature (method, final))
                                                return method;
                                }
@@ -142,7 +143,7 @@ namespace Mono.Tuner {
                        }
                        return null;
                }
-               
+
                MethodDefinition GetInterfaceMethod (TypeDefinition finalType, MethodDefinition final)
                {
                        TypeDefinition baseType = finalType;
@@ -157,12 +158,12 @@ namespace Mono.Tuner {
                        }
                        return null;
                }
-               
+
                bool HasSameSignature (MethodDefinition method1, MethodDefinition method2)
                {
-                       if (method1.ReturnType.ReturnType.FullName != method2.ReturnType.ReturnType.FullName)
+                       if (method1.ReturnType.FullName != method2.ReturnType.FullName)
                                return false;
-                       
+
                        if (method1.Parameters.Count != method2.Parameters.Count)
                                return false;
 
@@ -171,7 +172,7 @@ namespace Mono.Tuner {
                                    method2.Parameters [i].ParameterType.FullName)
                                        return false;
                        }
-                       
+
                        return true;
                }
        }
index cba710b88bd98ee58bd424cf28011aa282da2415..fc98536f52fcd5ba5fd557570ded1f0ea63e3e21 100644 (file)
@@ -42,13 +42,13 @@ namespace Mono.Tuner {
                public void Process (LinkContext context)
                {
                        CustomizePipeline (context.Pipeline);
-                       ProcessAssemblies (context.GetAssemblies ());
+                       ProcessAssemblies (context);
                }
 
-               static void ProcessAssemblies (AssemblyDefinition [] assemblies)
+               static void ProcessAssemblies (LinkContext context)
                {
-                       foreach (AssemblyDefinition assembly in assemblies)
-                               Annotations.SetAction (assembly, AssemblyAction.Link);
+                       foreach (AssemblyDefinition assembly in context.GetAssemblies ())
+                               context.Annotations.SetAction (assembly, AssemblyAction.Link);
                }
 
                protected virtual void CustomizePipeline (Pipeline pipeline)
index 9380e578deedb170570193c254007d03c4027f2a..374395bac8afba79a3190e91b2196510fc1fcea5 100644 (file)
@@ -45,7 +45,7 @@ namespace Mono.Tuner {
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
                                return;
 
-                       Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.Image.FileInformation);
+                       Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.FullyQualifiedName);
 
                        if (!DisplayInternalized ())
                                return;
@@ -63,22 +63,21 @@ namespace Mono.Tuner {
                        }
                }
 
-               static void ProcessType (TypeDefinition type)
+               void ProcessType (TypeDefinition type)
                {
                        ProcessCollection (type.Fields);
-                       ProcessCollection (type.Constructors);
                        ProcessCollection (type.Methods);
                }
 
-               static void ProcessCollection (ICollection collection)
+               void ProcessCollection (ICollection collection)
                {
-                       foreach (IAnnotationProvider provider in collection)
+                       foreach (IMetadataTokenProvider provider in collection)
                                ProcessProvider (provider);
                }
 
-               static void ProcessProvider (IAnnotationProvider provider)
+               void ProcessProvider (IMetadataTokenProvider provider)
                {
-                       if (!TunerAnnotations.IsInternalized (provider))
+                       if (!TunerAnnotations.IsInternalized (Context, provider))
                                return;
 
                        Console.WriteLine ("[internalized] {0}", provider);
index 13fcc45484369d7a0085032a4024762509199203..1266c9d31a207864ecebed3d53ec17fff4b38b00 100644 (file)
@@ -54,7 +54,7 @@ namespace Mono.Tuner {
 
                protected override void ProcessAssembly (AssemblyDefinition assembly)
                {
-                       if (assembly.Name.Name == Constants.Corlib)
+                       if (assembly.Name.Name == "mscorlib")
                                return;
 
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -86,11 +86,11 @@ namespace Mono.Tuner {
                        RemoveSerializableFlag (type);
 
                        RemoveInterface (type, _ISerializable);
-                       RemoveConstructor (type, _SerializationInfo, _StreamingContext);
+                       RemoveMethod (type, ".ctor", _SerializationInfo, _StreamingContext);
                        RemoveInterfaceMethod (type, _ISerializable, _GetObjectData, _SerializationInfo, _StreamingContext);
 
                        RemoveInterface (type, _IDeserializationCallback);
-                       RemoveInterfaceMethod (type, _IDeserializationCallback, _OnDeserialization, Constants.Object);
+                       RemoveInterfaceMethod (type, _IDeserializationCallback, _OnDeserialization, "System.Object");
 
                        RemoveField (type);
                }
@@ -128,11 +128,6 @@ namespace Mono.Tuner {
                        RemoveMethod (type.Methods, name, parameters);
                }
 
-               static void RemoveConstructor (TypeDefinition type, params string [] parameters)
-               {
-                       RemoveMethod (type.Constructors, MethodDefinition.Ctor, parameters);
-               }
-
                static void RemoveMethod (IList container, string name, params string [] parameters)
                {
                        for (int i = 0; i < container.Count; i++) {
index 8271fa6e1ae111c53ed065249c322b70c96c44b1..2107ac4a0f59a82a78a30af7299a7dfac0a00ecf 100644 (file)
@@ -27,6 +27,7 @@
 //
 
 using Mono.Cecil;
+using Mono.Linker;
 
 namespace Mono.Tuner {
 
@@ -34,14 +35,17 @@ namespace Mono.Tuner {
 
                static readonly object _internalizedKey = new object ();
 
-               public static void Internalized (IAnnotationProvider provider)
+               public static void Internalized (LinkContext context, IMetadataTokenProvider provider)
                {
-                       provider.Annotations [_internalizedKey] = _internalizedKey;
+                       var annotations = context.Annotations.GetCustomAnnotations (_internalizedKey);
+                       annotations [provider] = _internalizedKey;
                }
 
-               public static bool IsInternalized (IAnnotationProvider provider)
+               public static bool IsInternalized (LinkContext context, IMetadataTokenProvider provider)
                {
-                       return provider.Annotations.Contains (_internalizedKey);
+                       var annotations = context.Annotations.GetCustomAnnotations (_internalizedKey);
+
+                       return annotations.ContainsKey (provider);
                }
 
                private TunerAnnotations ()