Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / DbgCompiler.cs / 1 / DbgCompiler.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Collections;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl.XsltOld.Debugger;
using System.Diagnostics;
internal class DbgData {
private XPathNavigator styleSheet;
private VariableAction[] variables;
public XPathNavigator StyleSheet { get { return this.styleSheet; } }
public VariableAction[] Variables { get { return this.variables; } }
public DbgData(Compiler compiler) {
DbgCompiler dbgCompiler = (DbgCompiler) compiler;
this.styleSheet = dbgCompiler.Input.Navigator.Clone();
this.variables = dbgCompiler.LocalVariables;
dbgCompiler.Debugger.OnInstructionCompile(this.StyleSheet);
}
internal void ReplaceVariables(VariableAction[] vars) { this.variables = vars; }
// static Empty:
private static DbgData s_nullDbgData = new DbgData();
private DbgData() {
this.styleSheet = null;
this.variables = new VariableAction[0];
}
public static DbgData Empty { get { return s_nullDbgData; } }
}
internal class DbgCompiler : Compiler {
private IXsltDebugger debugger;
public DbgCompiler(IXsltDebugger debugger) {
this.debugger = debugger;
}
public override IXsltDebugger Debugger { get { return this.debugger; } }
// Variables
//
// In XsltDebugger we have to know variables that are visible from each action.
// We keepping two different sets of wariables because global and local variables have different rules of visibility.
// Globals: All global variables are visible avryware (uncalucaled will have null value),
// Duplicated globals from different stilesheets are replaced (by import presidence)
// Locals: Visible only in scope and after it was defined.
// No duplicates posible.
private ArrayList globalVars = new ArrayList();
private ArrayList localVars = new ArrayList();
private VariableAction[] globalVarsCache, localVarsCache;
public virtual VariableAction[] GlobalVariables {
get {
Debug.Assert(this.Debugger != null);
if (this.globalVarsCache == null) {
this.globalVarsCache = (VariableAction[]) this.globalVars.ToArray(typeof(VariableAction));
}
return this.globalVarsCache;
}
}
public virtual VariableAction[] LocalVariables {
get {
Debug.Assert(this.Debugger != null);
if (this.localVarsCache == null) {
this.localVarsCache = (VariableAction[]) this.localVars.ToArray(typeof(VariableAction));
}
return this.localVarsCache;
}
}
private void DefineVariable(VariableAction variable) {
Debug.Assert(this.Debugger != null);
if (variable.IsGlobal) {
for(int i = 0; i < globalVars.Count; i ++) {
VariableAction oldVar = (VariableAction)this.globalVars[i];
if(oldVar.Name == variable.Name) { // Duplicate var definition
if(variable.Stylesheetid < oldVar.Stylesheetid) {
Debug.Assert(variable.VarKey != -1, "Variable was already placed and it should replace prev var.");
this.globalVars[i] = variable;
this.globalVarsCache = null;
}
return;
}
}
this.globalVars.Add(variable);
this.globalVarsCache = null;
}
else {
// local variables never conflict
localVars.Add(variable);
this.localVarsCache = null;
}
}
private void UnDefineVariables(int count) {
Debug.Assert(0 <= count, "This scope can't have more variables than we have in total");
Debug.Assert(count <= this.localVars.Count, "This scope can't have more variables than we have in total");
if(count != 0) {
this.localVars.RemoveRange(this.localVars.Count - count, count);
this.localVarsCache = null;
}
}
internal override void PopScope() {
this.UnDefineVariables(this.ScopeManager.CurrentScope.GetVeriablesCount());
base.PopScope();
}
// ---------------- Actions: ---------------
public override ApplyImportsAction CreateApplyImportsAction() {
ApplyImportsAction action = new ApplyImportsActionDbg();
action.Compile(this);
return action;
}
public override ApplyTemplatesAction CreateApplyTemplatesAction() {
ApplyTemplatesAction action = new ApplyTemplatesActionDbg();
action.Compile(this);
return action;
}
public override AttributeAction CreateAttributeAction() {
AttributeAction action = new AttributeActionDbg();
action.Compile(this);
return action;
}
public override AttributeSetAction CreateAttributeSetAction() {
AttributeSetAction action = new AttributeSetActionDbg();
action.Compile(this);
return action;
}
public override CallTemplateAction CreateCallTemplateAction() {
CallTemplateAction action = new CallTemplateActionDbg();
action.Compile(this);
return action;
}
public override ChooseAction CreateChooseAction() {//!!! don't need to be here
ChooseAction action = new ChooseAction();
action.Compile(this);
return action;
}
public override CommentAction CreateCommentAction() {
CommentAction action = new CommentActionDbg();
action.Compile(this);
return action;
}
public override CopyAction CreateCopyAction() {
CopyAction action = new CopyActionDbg();
action.Compile(this);
return action;
}
public override CopyOfAction CreateCopyOfAction() {
CopyOfAction action = new CopyOfActionDbg();
action.Compile(this);
return action;
}
public override ElementAction CreateElementAction() {
ElementAction action = new ElementActionDbg();
action.Compile(this);
return action;
}
public override ForEachAction CreateForEachAction() {
ForEachAction action = new ForEachActionDbg();
action.Compile(this);
return action;
}
public override IfAction CreateIfAction(IfAction.ConditionType type) {
IfAction action = new IfActionDbg(type);
action.Compile(this);
return action;
}
public override MessageAction CreateMessageAction() {
MessageAction action = new MessageActionDbg();
action.Compile(this);
return action;
}
public override NewInstructionAction CreateNewInstructionAction() {
NewInstructionAction action = new NewInstructionActionDbg();
action.Compile(this);
return action;
}
public override NumberAction CreateNumberAction() {
NumberAction action = new NumberActionDbg();
action.Compile(this);
return action;
}
public override ProcessingInstructionAction CreateProcessingInstructionAction() {
ProcessingInstructionAction action = new ProcessingInstructionActionDbg();
action.Compile(this);
return action;
}
public override void CreateRootAction() {
this.RootAction = new RootActionDbg();
this.RootAction.Compile(this);
}
public override SortAction CreateSortAction() {
SortAction action = new SortActionDbg();
action.Compile(this);
return action;
}
public override TemplateAction CreateTemplateAction() {
TemplateAction action = new TemplateActionDbg();
action.Compile(this);
return action;
}
public override TemplateAction CreateSingleTemplateAction() {
TemplateAction action = new TemplateActionDbg();
action.CompileSingle(this);
return action;
}
public override TextAction CreateTextAction() {
TextAction action = new TextActionDbg();
action.Compile(this);
return action;
}
public override UseAttributeSetsAction CreateUseAttributeSetsAction() {
UseAttributeSetsAction action = new UseAttributeSetsActionDbg();
action.Compile(this);
return action;
}
public override ValueOfAction CreateValueOfAction() {
ValueOfAction action = new ValueOfActionDbg();
action.Compile(this);
return action;
}
public override VariableAction CreateVariableAction(VariableType type) {
VariableAction action = new VariableActionDbg(type);
action.Compile(this);
return action;
}
public override WithParamAction CreateWithParamAction() {
WithParamAction action = new WithParamActionDbg();
action.Compile(this);
return action;
}
// ---------------- Events: ---------------
public override BeginEvent CreateBeginEvent() {
return new BeginEventDbg(this);
}
public override TextEvent CreateTextEvent() {
return new TextEventDbg(this);
}
// Debugger enabled implemetation of most compiled actions
private class ApplyImportsActionDbg : ApplyImportsAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ApplyTemplatesActionDbg : ApplyTemplatesAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class AttributeActionDbg : AttributeAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class AttributeSetActionDbg : AttributeSetAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CallTemplateActionDbg : CallTemplateAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CommentActionDbg : CommentAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CopyActionDbg : CopyAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CopyOfActionDbg : CopyOfAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ElementActionDbg : ElementAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ForEachActionDbg : ForEachAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
}
}
}
private class IfActionDbg : IfAction {
internal IfActionDbg(ConditionType type) : base(type) {}
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class MessageActionDbg : MessageAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class NewInstructionActionDbg : NewInstructionAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class NumberActionDbg : NumberAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ProcessingInstructionActionDbg : ProcessingInstructionAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class RootActionDbg : RootAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
Debug.Assert(compiler.Debugger != null);
string builtIn = compiler.Debugger.GetBuiltInTemplatesUri();
if (builtIn != null && builtIn.Length != 0) {
compiler.AllowBuiltInMode = true;
builtInSheet = compiler.RootAction.CompileImport(compiler, compiler.ResolveUri(builtIn), int.MaxValue);
compiler.AllowBuiltInMode = false;
}
dbgData.ReplaceVariables(((DbgCompiler) compiler).GlobalVariables) ;
}
internal override void Execute(Processor processor, ActionFrame frame) {
if (frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
processor.PushDebuggerStack();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
processor.PopDebuggerStack();
}
}
}
private class SortActionDbg : SortAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class TemplateActionDbg : TemplateAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
}
}
}
private class TextActionDbg : TextAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class UseAttributeSetsActionDbg : UseAttributeSetsAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ValueOfActionDbg : ValueOfAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class VariableActionDbg : VariableAction {
internal VariableActionDbg(VariableType type) : base(type) {}
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
((DbgCompiler) compiler).DefineVariable(this);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class WithParamActionDbg : WithParamAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
// ---------------- Events: ---------------
private class BeginEventDbg : BeginEvent {
private DbgData dbgData;
internal override DbgData DbgData { get { return this.dbgData; } }
public BeginEventDbg(Compiler compiler) : base(compiler) {
dbgData = new DbgData(compiler);
}
public override bool Output(Processor processor, ActionFrame frame) {
this.OnInstructionExecute(processor);
return base.Output(processor, frame);
}
}
private class TextEventDbg : TextEvent {
private DbgData dbgData;
internal override DbgData DbgData { get { return this.dbgData; } }
public TextEventDbg(Compiler compiler) : base(compiler) {
dbgData = new DbgData(compiler);
}
public override bool Output(Processor processor, ActionFrame frame) {
this.OnInstructionExecute(processor);
return base.Output(processor, frame);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Collections;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl.XsltOld.Debugger;
using System.Diagnostics;
internal class DbgData {
private XPathNavigator styleSheet;
private VariableAction[] variables;
public XPathNavigator StyleSheet { get { return this.styleSheet; } }
public VariableAction[] Variables { get { return this.variables; } }
public DbgData(Compiler compiler) {
DbgCompiler dbgCompiler = (DbgCompiler) compiler;
this.styleSheet = dbgCompiler.Input.Navigator.Clone();
this.variables = dbgCompiler.LocalVariables;
dbgCompiler.Debugger.OnInstructionCompile(this.StyleSheet);
}
internal void ReplaceVariables(VariableAction[] vars) { this.variables = vars; }
// static Empty:
private static DbgData s_nullDbgData = new DbgData();
private DbgData() {
this.styleSheet = null;
this.variables = new VariableAction[0];
}
public static DbgData Empty { get { return s_nullDbgData; } }
}
internal class DbgCompiler : Compiler {
private IXsltDebugger debugger;
public DbgCompiler(IXsltDebugger debugger) {
this.debugger = debugger;
}
public override IXsltDebugger Debugger { get { return this.debugger; } }
// Variables
//
// In XsltDebugger we have to know variables that are visible from each action.
// We keepping two different sets of wariables because global and local variables have different rules of visibility.
// Globals: All global variables are visible avryware (uncalucaled will have null value),
// Duplicated globals from different stilesheets are replaced (by import presidence)
// Locals: Visible only in scope and after it was defined.
// No duplicates posible.
private ArrayList globalVars = new ArrayList();
private ArrayList localVars = new ArrayList();
private VariableAction[] globalVarsCache, localVarsCache;
public virtual VariableAction[] GlobalVariables {
get {
Debug.Assert(this.Debugger != null);
if (this.globalVarsCache == null) {
this.globalVarsCache = (VariableAction[]) this.globalVars.ToArray(typeof(VariableAction));
}
return this.globalVarsCache;
}
}
public virtual VariableAction[] LocalVariables {
get {
Debug.Assert(this.Debugger != null);
if (this.localVarsCache == null) {
this.localVarsCache = (VariableAction[]) this.localVars.ToArray(typeof(VariableAction));
}
return this.localVarsCache;
}
}
private void DefineVariable(VariableAction variable) {
Debug.Assert(this.Debugger != null);
if (variable.IsGlobal) {
for(int i = 0; i < globalVars.Count; i ++) {
VariableAction oldVar = (VariableAction)this.globalVars[i];
if(oldVar.Name == variable.Name) { // Duplicate var definition
if(variable.Stylesheetid < oldVar.Stylesheetid) {
Debug.Assert(variable.VarKey != -1, "Variable was already placed and it should replace prev var.");
this.globalVars[i] = variable;
this.globalVarsCache = null;
}
return;
}
}
this.globalVars.Add(variable);
this.globalVarsCache = null;
}
else {
// local variables never conflict
localVars.Add(variable);
this.localVarsCache = null;
}
}
private void UnDefineVariables(int count) {
Debug.Assert(0 <= count, "This scope can't have more variables than we have in total");
Debug.Assert(count <= this.localVars.Count, "This scope can't have more variables than we have in total");
if(count != 0) {
this.localVars.RemoveRange(this.localVars.Count - count, count);
this.localVarsCache = null;
}
}
internal override void PopScope() {
this.UnDefineVariables(this.ScopeManager.CurrentScope.GetVeriablesCount());
base.PopScope();
}
// ---------------- Actions: ---------------
public override ApplyImportsAction CreateApplyImportsAction() {
ApplyImportsAction action = new ApplyImportsActionDbg();
action.Compile(this);
return action;
}
public override ApplyTemplatesAction CreateApplyTemplatesAction() {
ApplyTemplatesAction action = new ApplyTemplatesActionDbg();
action.Compile(this);
return action;
}
public override AttributeAction CreateAttributeAction() {
AttributeAction action = new AttributeActionDbg();
action.Compile(this);
return action;
}
public override AttributeSetAction CreateAttributeSetAction() {
AttributeSetAction action = new AttributeSetActionDbg();
action.Compile(this);
return action;
}
public override CallTemplateAction CreateCallTemplateAction() {
CallTemplateAction action = new CallTemplateActionDbg();
action.Compile(this);
return action;
}
public override ChooseAction CreateChooseAction() {//!!! don't need to be here
ChooseAction action = new ChooseAction();
action.Compile(this);
return action;
}
public override CommentAction CreateCommentAction() {
CommentAction action = new CommentActionDbg();
action.Compile(this);
return action;
}
public override CopyAction CreateCopyAction() {
CopyAction action = new CopyActionDbg();
action.Compile(this);
return action;
}
public override CopyOfAction CreateCopyOfAction() {
CopyOfAction action = new CopyOfActionDbg();
action.Compile(this);
return action;
}
public override ElementAction CreateElementAction() {
ElementAction action = new ElementActionDbg();
action.Compile(this);
return action;
}
public override ForEachAction CreateForEachAction() {
ForEachAction action = new ForEachActionDbg();
action.Compile(this);
return action;
}
public override IfAction CreateIfAction(IfAction.ConditionType type) {
IfAction action = new IfActionDbg(type);
action.Compile(this);
return action;
}
public override MessageAction CreateMessageAction() {
MessageAction action = new MessageActionDbg();
action.Compile(this);
return action;
}
public override NewInstructionAction CreateNewInstructionAction() {
NewInstructionAction action = new NewInstructionActionDbg();
action.Compile(this);
return action;
}
public override NumberAction CreateNumberAction() {
NumberAction action = new NumberActionDbg();
action.Compile(this);
return action;
}
public override ProcessingInstructionAction CreateProcessingInstructionAction() {
ProcessingInstructionAction action = new ProcessingInstructionActionDbg();
action.Compile(this);
return action;
}
public override void CreateRootAction() {
this.RootAction = new RootActionDbg();
this.RootAction.Compile(this);
}
public override SortAction CreateSortAction() {
SortAction action = new SortActionDbg();
action.Compile(this);
return action;
}
public override TemplateAction CreateTemplateAction() {
TemplateAction action = new TemplateActionDbg();
action.Compile(this);
return action;
}
public override TemplateAction CreateSingleTemplateAction() {
TemplateAction action = new TemplateActionDbg();
action.CompileSingle(this);
return action;
}
public override TextAction CreateTextAction() {
TextAction action = new TextActionDbg();
action.Compile(this);
return action;
}
public override UseAttributeSetsAction CreateUseAttributeSetsAction() {
UseAttributeSetsAction action = new UseAttributeSetsActionDbg();
action.Compile(this);
return action;
}
public override ValueOfAction CreateValueOfAction() {
ValueOfAction action = new ValueOfActionDbg();
action.Compile(this);
return action;
}
public override VariableAction CreateVariableAction(VariableType type) {
VariableAction action = new VariableActionDbg(type);
action.Compile(this);
return action;
}
public override WithParamAction CreateWithParamAction() {
WithParamAction action = new WithParamActionDbg();
action.Compile(this);
return action;
}
// ---------------- Events: ---------------
public override BeginEvent CreateBeginEvent() {
return new BeginEventDbg(this);
}
public override TextEvent CreateTextEvent() {
return new TextEventDbg(this);
}
// Debugger enabled implemetation of most compiled actions
private class ApplyImportsActionDbg : ApplyImportsAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ApplyTemplatesActionDbg : ApplyTemplatesAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class AttributeActionDbg : AttributeAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class AttributeSetActionDbg : AttributeSetAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CallTemplateActionDbg : CallTemplateAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CommentActionDbg : CommentAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CopyActionDbg : CopyAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class CopyOfActionDbg : CopyOfAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ElementActionDbg : ElementAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ForEachActionDbg : ForEachAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
}
}
}
private class IfActionDbg : IfAction {
internal IfActionDbg(ConditionType type) : base(type) {}
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class MessageActionDbg : MessageAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class NewInstructionActionDbg : NewInstructionAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class NumberActionDbg : NumberAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ProcessingInstructionActionDbg : ProcessingInstructionAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class RootActionDbg : RootAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
Debug.Assert(compiler.Debugger != null);
string builtIn = compiler.Debugger.GetBuiltInTemplatesUri();
if (builtIn != null && builtIn.Length != 0) {
compiler.AllowBuiltInMode = true;
builtInSheet = compiler.RootAction.CompileImport(compiler, compiler.ResolveUri(builtIn), int.MaxValue);
compiler.AllowBuiltInMode = false;
}
dbgData.ReplaceVariables(((DbgCompiler) compiler).GlobalVariables) ;
}
internal override void Execute(Processor processor, ActionFrame frame) {
if (frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
processor.PushDebuggerStack();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
processor.PopDebuggerStack();
}
}
}
private class SortActionDbg : SortAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class TemplateActionDbg : TemplateAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.PushDebuggerStack();
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
if (frame.State == Finished) {
processor.PopDebuggerStack();
}
}
}
private class TextActionDbg : TextAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class UseAttributeSetsActionDbg : UseAttributeSetsAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class ValueOfActionDbg : ValueOfAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class VariableActionDbg : VariableAction {
internal VariableActionDbg(VariableType type) : base(type) {}
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
((DbgCompiler) compiler).DefineVariable(this);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
private class WithParamActionDbg : WithParamAction {
private DbgData dbgData;
internal override DbgData GetDbgData(ActionFrame frame) { return this.dbgData; }
internal override void Compile(Compiler compiler) {
dbgData = new DbgData(compiler);
base.Compile(compiler);
}
internal override void Execute(Processor processor, ActionFrame frame) {
if(frame.State == Initialized) {
processor.OnInstructionExecute();
}
base.Execute(processor, frame);
}
}
// ---------------- Events: ---------------
private class BeginEventDbg : BeginEvent {
private DbgData dbgData;
internal override DbgData DbgData { get { return this.dbgData; } }
public BeginEventDbg(Compiler compiler) : base(compiler) {
dbgData = new DbgData(compiler);
}
public override bool Output(Processor processor, ActionFrame frame) {
this.OnInstructionExecute(processor);
return base.Output(processor, frame);
}
}
private class TextEventDbg : TextEvent {
private DbgData dbgData;
internal override DbgData DbgData { get { return this.dbgData; } }
public TextEventDbg(Compiler compiler) : base(compiler) {
dbgData = new DbgData(compiler);
}
public override bool Output(Processor processor, ActionFrame frame) {
this.OnInstructionExecute(processor);
return base.Output(processor, frame);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RuleSettingsCollection.cs
- ObjectSpanRewriter.cs
- ToolboxControl.cs
- KeyedCollection.cs
- HttpResponse.cs
- HttpFileCollection.cs
- columnmapfactory.cs
- SupportingTokenChannel.cs
- SmtpNegotiateAuthenticationModule.cs
- FreezableOperations.cs
- FileStream.cs
- ConnectionsZone.cs
- DbDataSourceEnumerator.cs
- XmlTextWriter.cs
- BoolLiteral.cs
- VectorCollectionConverter.cs
- x509store.cs
- SeparatorAutomationPeer.cs
- DbMetaDataCollectionNames.cs
- XmlDataLoader.cs
- ByteStorage.cs
- SymmetricAlgorithm.cs
- UnsafeCollabNativeMethods.cs
- IPAddressCollection.cs
- ConstNode.cs
- ImageFormatConverter.cs
- EntityModelBuildProvider.cs
- DefaultPropertyAttribute.cs
- SqlCacheDependency.cs
- ViewGenResults.cs
- ClusterSafeNativeMethods.cs
- SchemaTableColumn.cs
- XmlSchemaExporter.cs
- CompositionCommandSet.cs
- TextTrailingWordEllipsis.cs
- SparseMemoryStream.cs
- SqlGenerator.cs
- HeaderedItemsControl.cs
- Thread.cs
- XmlTextReader.cs
- VectorAnimationUsingKeyFrames.cs
- VirtualDirectoryMappingCollection.cs
- EntityDataSourceMemberPath.cs
- MsmqChannelListenerBase.cs
- ScrollChrome.cs
- DateTimeConverter.cs
- ControlIdConverter.cs
- SoapDocumentServiceAttribute.cs
- CallSite.cs
- ExpressionQuoter.cs
- HelpKeywordAttribute.cs
- XmlChildEnumerator.cs
- TableStyle.cs
- BrowserCapabilitiesFactoryBase.cs
- CollectionView.cs
- LayoutExceptionEventArgs.cs
- XmlParserContext.cs
- keycontainerpermission.cs
- AstTree.cs
- BaseCollection.cs
- SoapIgnoreAttribute.cs
- MaterialGroup.cs
- LocationInfo.cs
- EntityDataSourceDesignerHelper.cs
- Matrix.cs
- ListViewHitTestInfo.cs
- ConfigurationSettings.cs
- BinaryMessageFormatter.cs
- SoapFault.cs
- CalloutQueueItem.cs
- TemplateKeyConverter.cs
- X509SubjectKeyIdentifierClause.cs
- FileDialog_Vista_Interop.cs
- ReverseInheritProperty.cs
- FileStream.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- VectorCollection.cs
- XhtmlStyleClass.cs
- CryptoApi.cs
- RuntimeWrappedException.cs
- SubMenuStyleCollectionEditor.cs
- OdbcEnvironmentHandle.cs
- WebPartEditorOkVerb.cs
- ListControl.cs
- ControlType.cs
- ButtonPopupAdapter.cs
- CounterCreationDataConverter.cs
- Tool.cs
- HtmlInputFile.cs
- UnsafeNativeMethodsPenimc.cs
- PtsContext.cs
- ModelItemDictionaryImpl.cs
- RedirectionProxy.cs
- SQLRoleProvider.cs
- StringArrayConverter.cs
- TemplateInstanceAttribute.cs
- BitmapEffectOutputConnector.cs
- VisualStyleInformation.cs
- DocumentSequence.cs
- EventHandlersDesigner.cs