summaryrefslogtreecommitdiff
path: root/BCT/BytecodeTranslator/TraverserFactory.cs
diff options
context:
space:
mode:
authorGravatar t-espave <unknown>2011-08-16 16:51:01 -0700
committerGravatar t-espave <unknown>2011-08-16 16:51:01 -0700
commitbbb739908334dd16d72c06e2ca142bdc48c6387c (patch)
treec68a6712654dc4680ab98e425f078bdb42504e24 /BCT/BytecodeTranslator/TraverserFactory.cs
parent0d002019c9764ee517658459554f099116a930a5 (diff)
(bct) skeleton of plugin infrastructure. for now the code is essentially the same
I will open a plugin branch to make more deeper changes until everything is stable
Diffstat (limited to 'BCT/BytecodeTranslator/TraverserFactory.cs')
-rw-r--r--BCT/BytecodeTranslator/TraverserFactory.cs7
1 files changed, 5 insertions, 2 deletions
diff --git a/BCT/BytecodeTranslator/TraverserFactory.cs b/BCT/BytecodeTranslator/TraverserFactory.cs
index fac00e42..472cbb0a 100644
--- a/BCT/BytecodeTranslator/TraverserFactory.cs
+++ b/BCT/BytecodeTranslator/TraverserFactory.cs
@@ -17,19 +17,22 @@ using Microsoft.Cci.ILToCodeModel;
using TranslationPlugins;
using Bpl = Microsoft.Boogie;
+using BytecodeTranslator.TranslationPlugins;
namespace BytecodeTranslator {
public abstract class TraverserFactory {
public int Priority { get; set; }
+ public abstract Translator getTranslator(Sink sink, IDictionary<IUnit, IContractProvider> contractProviders, IDictionary<IUnit, PdbReader> reader);
+
public virtual MetadataTraverser MakeMetadataTraverser(Sink sink,
IDictionary<IUnit, IContractProvider> contractProviders, // TODO: remove this parameter?
IDictionary<IUnit, PdbReader> sourceLocationProviders)
{
- return new MetadataTraverser(sink, sourceLocationProviders);
+ return new MetadataTraverser(sink, sourceLocationProviders, this);
}
public virtual StatementTraverser MakeStatementTraverser(Sink sink, PdbReader/*?*/ pdbReader, bool contractContext) {
- return new StatementTraverser(sink, pdbReader, contractContext);
+ return new StatementTraverser(sink, pdbReader, contractContext, this);
}
public virtual ExpressionTraverser MakeExpressionTraverser(Sink sink, StatementTraverser/*?*/ statementTraverser, bool contractContext) {