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 /Mono.Cecil.Cil
parentcdcf60a09aa11ba4cda05c45a420a73ae0de24f8 (diff)
parent7c8e1ad42527080fabf8832aba03e184bf965b29 (diff)
Merge pull request #358 from jbevain/writer-for-reader
Make symbols readers and writers provide their counterpart
Diffstat (limited to 'Mono.Cecil.Cil')
-rw-r--r--Mono.Cecil.Cil/PortablePdb.cs20
-rw-r--r--Mono.Cecil.Cil/Symbols.cs43
2 files changed, 28 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)