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
- RequestCacheEntry.cs
- MemoryResponseElement.cs
- ContextItem.cs
- UnsafeNetInfoNativeMethods.cs
- ProjectionCamera.cs
- NoneExcludedImageIndexConverter.cs
- CodeChecksumPragma.cs
- TokenizerHelper.cs
- InputLangChangeEvent.cs
- IssuedTokenParametersEndpointAddressElement.cs
- FocusTracker.cs
- BatchParser.cs
- InputLangChangeEvent.cs
- webclient.cs
- DataGridCellsPanel.cs
- ScriptManagerProxy.cs
- DataGridViewElement.cs
- IDQuery.cs
- CustomPopupPlacement.cs
- SqlConnectionStringBuilder.cs
- CharKeyFrameCollection.cs
- SerialPinChanges.cs
- DocumentApplicationJournalEntry.cs
- DataGridViewColumn.cs
- ListViewUpdatedEventArgs.cs
- ActiveXHost.cs
- Literal.cs
- Panel.cs
- ProgressBarRenderer.cs
- Cell.cs
- XmlMtomWriter.cs
- ConfigurationStrings.cs
- IntSumAggregationOperator.cs
- DbConnectionPoolOptions.cs
- XappLauncher.cs
- DataSourceUtil.cs
- itemelement.cs
- OutArgumentConverter.cs
- BitmapCodecInfo.cs
- GridViewRowPresenter.cs
- TimerElapsedEvenArgs.cs
- PresentationTraceSources.cs
- WebBrowserHelper.cs
- newinstructionaction.cs
- XmlSerializerImportOptions.cs
- ApplicationServiceManager.cs
- Base64Encoder.cs
- SocketManager.cs
- UnionExpr.cs
- UrlAuthFailedErrorFormatter.cs
- Thread.cs
- PartialClassGenerationTaskInternal.cs
- WorkflowDesignerColors.cs
- EventLogPermissionEntryCollection.cs
- OleAutBinder.cs
- FormViewModeEventArgs.cs
- GenericUriParser.cs
- DataGridLinkButton.cs
- BaseTemplateParser.cs
- VoiceInfo.cs
- SeekStoryboard.cs
- BamlMapTable.cs
- CollectionConverter.cs
- ResourceDictionaryCollection.cs
- _HelperAsyncResults.cs
- AccessedThroughPropertyAttribute.cs
- FormViewActionList.cs
- FontSizeConverter.cs
- TextServicesHost.cs
- ValidationManager.cs
- ProfileBuildProvider.cs
- CustomCategoryAttribute.cs
- ToolboxComponentsCreatedEventArgs.cs
- PolicyLevel.cs
- WindowsContainer.cs
- ParameterElement.cs
- DoubleAnimationBase.cs
- HttpRuntime.cs
- LocationUpdates.cs
- DetailsViewInsertEventArgs.cs
- WebPartDisplayModeEventArgs.cs
- XmlResolver.cs
- DiscardableAttribute.cs
- XmlText.cs
- ActiveXSite.cs
- PolicyValidator.cs
- DesigntimeLicenseContextSerializer.cs
- ViewRendering.cs
- ResolveCriteria11.cs
- CompModHelpers.cs
- RenderingEventArgs.cs
- AssociationSetEnd.cs
- RegistrationServices.cs
- WebPartVerb.cs
- ThemeableAttribute.cs
- GradientStopCollection.cs
- shaper.cs
- ScalarOps.cs
- ThousandthOfEmRealDoubles.cs
- WebPartZoneBase.cs