Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jbevain@gmail.com>2017-03-17 21:33:50 +0300
committerGitHub <noreply@github.com>2017-03-17 21:33:50 +0300
commitec9be8d214f251bff5e5c5bd458a66c16467131a (patch)
treefcb0f64a254662e4335ca6bc3b89b1467a1ffcd0
parentcdcf60a09aa11ba4cda05c45a420a73ae0de24f8 (diff)
parent7c8e1ad42527080fabf8832aba03e184bf965b29 (diff)
Merge pull request #358 from jbevain/writer-for-reader
Make symbols readers and writers provide their counterpart
-rw-r--r--Mono.Cecil.Cil/PortablePdb.cs20
-rw-r--r--Mono.Cecil.Cil/Symbols.cs43
-rw-r--r--symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs5
-rw-r--r--symbols/mdb/Mono.Cecil.Mdb/MdbWriter.cs5
-rw-r--r--symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs5
-rw-r--r--symbols/pdb/Mono.Cecil.Pdb/NativePdbWriter.cs5
6 files changed, 48 insertions, 35 deletions
diff --git a/Mono.Cecil.Cil/PortablePdb.cs b/Mono.Cecil.Cil/PortablePdb.cs
index b979c7d..7deddae 100644
--- a/Mono.Cecil.Cil/PortablePdb.cs
+++ b/Mono.Cecil.Cil/PortablePdb.cs
@@ -65,6 +65,11 @@ namespace Mono.Cecil.Cil {
this.debug_reader = new MetadataReader (image, module, this.reader);
}
+ public ISymbolWriterProvider GetWriterProvider ()
+ {
+ return new PortablePdbWriterProvider ();
+ }
+
public bool ProcessDebugHeader (ImageDebugHeader header)
{
if (image == module.Image)
@@ -192,6 +197,11 @@ namespace Mono.Cecil.Cil {
this.reader = reader;
}
+ public ISymbolWriterProvider GetWriterProvider ()
+ {
+ return new EmbeddedPortablePdbWriterProvider ();
+ }
+
public bool ProcessDebugHeader (ImageDebugHeader header)
{
return reader.ProcessDebugHeader (header);
@@ -275,6 +285,11 @@ namespace Mono.Cecil.Cil {
this.pdb_metadata.metadata_builder = metadata;
}
+ public ISymbolReaderProvider GetReaderProvider ()
+ {
+ return new PortablePdbReaderProvider ();
+ }
+
public ImageDebugHeader GetDebugHeader ()
{
if (IsEmbedded)
@@ -414,6 +429,11 @@ namespace Mono.Cecil.Cil {
this.writer = writer;
}
+ public ISymbolReaderProvider GetReaderProvider ()
+ {
+ return new EmbeddedPortablePdbReaderProvider ();
+ }
+
public ImageDebugHeader GetDebugHeader ()
{
writer.Dispose ();
diff --git a/Mono.Cecil.Cil/Symbols.cs b/Mono.Cecil.Cil/Symbols.cs
index 726301a..1e4df1e 100644
--- a/Mono.Cecil.Cil/Symbols.cs
+++ b/Mono.Cecil.Cil/Symbols.cs
@@ -678,6 +678,7 @@ namespace Mono.Cecil.Cil {
public interface ISymbolReader : IDisposable {
+ ISymbolWriterProvider GetWriterProvider ();
bool ProcessDebugHeader (ImageDebugHeader header);
MethodDebugInformation Read (MethodDefinition method);
}
@@ -796,11 +797,13 @@ namespace Mono.Cecil.Cil {
{
if (kind == SymbolKind.PortablePdb)
return new PortablePdbReaderProvider ();
+ if (kind == SymbolKind.EmbeddedPortablePdb)
+ return new EmbeddedPortablePdbReaderProvider ();
- var providerName = GetSymbolTypeName (kind, "ReaderProvider");
- var type = GetSymbolType (kind, providerName);
+ var provider_name = GetSymbolTypeName (kind, "ReaderProvider");
+ var type = GetSymbolType (kind, provider_name);
if (type == null)
- throw new TypeLoadException ("Could not find symbol provider type " + providerName);
+ throw new TypeLoadException ("Could not find symbol provider type " + provider_name);
return (ISymbolReaderProvider) Activator.CreateInstance (type);
}
@@ -822,36 +825,6 @@ namespace Mono.Cecil.Cil {
throw new ArgumentException ();
}
-
-#if !READ_ONLY
-
- public static ISymbolWriterProvider GetWriterProvider (SymbolKind kind)
- {
- if (kind == SymbolKind.PortablePdb)
- return new PortablePdbWriterProvider ();
-
- var type = GetSymbolType (kind, GetSymbolTypeName (kind, "WriterProvider"));
- if (type == null)
- return null;
-
- return (ISymbolWriterProvider) Activator.CreateInstance (type);
- }
-
- public static SymbolKind GetSymbolKind (Type type)
- {
- if (type.Name.Contains (SymbolKind.EmbeddedPortablePdb.ToString ()))
- return SymbolKind.EmbeddedPortablePdb;
- if (type.Name.Contains (SymbolKind.PortablePdb.ToString ()))
- return SymbolKind.PortablePdb;
- if (type.Name.Contains (SymbolKind.NativePdb.ToString ()))
- return SymbolKind.NativePdb;
- if (type.Name.Contains (SymbolKind.Mdb.ToString ()))
- return SymbolKind.Mdb;
-
- throw new ArgumentException ();
- }
-
-#endif
}
#endif
@@ -859,6 +832,7 @@ namespace Mono.Cecil.Cil {
public interface ISymbolWriter : IDisposable {
+ ISymbolReaderProvider GetReaderProvider ();
ImageDebugHeader GetDebugHeader ();
void Write (MethodDebugInformation info);
}
@@ -883,8 +857,7 @@ namespace Mono.Cecil.Cil {
if (module.Image != null && module.Image.HasDebugTables ())
return null;
- var reader_kind = SymbolProvider.GetSymbolKind (reader.GetType ());
- return SymbolProvider.GetWriterProvider (reader_kind).GetSymbolWriter (module, fileName);
+ return reader.GetWriterProvider ().GetSymbolWriter (module, fileName);
}
public ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream)
diff --git a/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs b/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs
index 43d92a6..e9782d6 100644
--- a/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs
+++ b/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs
@@ -58,6 +58,11 @@ namespace Mono.Cecil.Mdb {
this.documents = new Dictionary<string, Document> ();
}
+ public ISymbolWriterProvider GetWriterProvider ()
+ {
+ return new MdbWriterProvider ();
+ }
+
public bool ProcessDebugHeader (ImageDebugHeader header)
{
return symbol_file.Guid == module.Mvid;
diff --git a/symbols/mdb/Mono.Cecil.Mdb/MdbWriter.cs b/symbols/mdb/Mono.Cecil.Mdb/MdbWriter.cs
index 6575b51..8c3dbe3 100644
--- a/symbols/mdb/Mono.Cecil.Mdb/MdbWriter.cs
+++ b/symbols/mdb/Mono.Cecil.Mdb/MdbWriter.cs
@@ -48,6 +48,11 @@ namespace Mono.Cecil.Mdb {
this.source_files = new Dictionary<string, SourceFile> ();
}
+ public ISymbolReaderProvider GetReaderProvider ()
+ {
+ return new MdbReaderProvider ();
+ }
+
SourceFile GetSourceFile (Document document)
{
var url = document.Url;
diff --git a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
index 1a5991f..96479cd 100644
--- a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
+++ b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
@@ -34,6 +34,11 @@ namespace Mono.Cecil.Pdb {
this.pdb_file = file;
}
+ public ISymbolWriterProvider GetWriterProvider ()
+ {
+ return new NativePdbWriterProvider ();
+ }
+
/*
uint Magic = 0x53445352;
Guid Signature;
diff --git a/symbols/pdb/Mono.Cecil.Pdb/NativePdbWriter.cs b/symbols/pdb/Mono.Cecil.Pdb/NativePdbWriter.cs
index 65be260..663e34c 100644
--- a/symbols/pdb/Mono.Cecil.Pdb/NativePdbWriter.cs
+++ b/symbols/pdb/Mono.Cecil.Pdb/NativePdbWriter.cs
@@ -32,6 +32,11 @@ namespace Mono.Cecil.Pdb {
this.documents = new Dictionary<string, SymDocumentWriter> ();
}
+ public ISymbolReaderProvider GetReaderProvider ()
+ {
+ return new NativePdbReaderProvider ();
+ }
+
public ImageDebugHeader GetDebugHeader ()
{
ImageDebugDirectory directory;