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
- PowerModeChangedEventArgs.cs
- Soap12ProtocolReflector.cs
- Baml6Assembly.cs
- ParagraphVisual.cs
- PersonalizationAdministration.cs
- Funcletizer.cs
- ExpressionBuilder.cs
- XslAstAnalyzer.cs
- CollectionChangedEventManager.cs
- CreateUserWizardStep.cs
- XamlParser.cs
- SqlIdentifier.cs
- XmlAnyElementAttributes.cs
- AsyncCompletedEventArgs.cs
- URL.cs
- XmlDataSourceView.cs
- XmlSerializationGeneratedCode.cs
- SecurityChannel.cs
- XmlQueryContext.cs
- ParameterBuilder.cs
- MetadataItemEmitter.cs
- TdsParserStateObject.cs
- PropertyRecord.cs
- XPathNodePointer.cs
- PointAnimationUsingKeyFrames.cs
- SmtpException.cs
- LocalClientSecuritySettingsElement.cs
- AutomationAttributeInfo.cs
- VirtualDirectoryMapping.cs
- ExternalDataExchangeService.cs
- ComponentCommands.cs
- SpecialNameAttribute.cs
- OracleParameter.cs
- Misc.cs
- StringDictionaryWithComparer.cs
- HideDisabledControlAdapter.cs
- BindingEntityInfo.cs
- Matrix3D.cs
- ApplicationException.cs
- Fault.cs
- NamedElement.cs
- HttpModule.cs
- LocationUpdates.cs
- MdiWindowListStrip.cs
- Opcode.cs
- SearchForVirtualItemEventArgs.cs
- LoginView.cs
- Pkcs9Attribute.cs
- UriTemplateClientFormatter.cs
- SHA256.cs
- FileDialogPermission.cs
- CallbackHandler.cs
- ListSortDescriptionCollection.cs
- ListViewSortEventArgs.cs
- jithelpers.cs
- HttpListenerResponse.cs
- ErrorHandlerModule.cs
- Geometry3D.cs
- DoneReceivingAsyncResult.cs
- Parameter.cs
- TreeNodeBindingCollection.cs
- Subtree.cs
- PreparingEnlistment.cs
- QueuePathEditor.cs
- AuthorizationSection.cs
- FlowDocumentReader.cs
- PaperSource.cs
- Monitor.cs
- AtlasWeb.Designer.cs
- AssemblyInfo.cs
- AutomationElementIdentifiers.cs
- DBSchemaRow.cs
- EnumType.cs
- PropertyCollection.cs
- GenericEnumerator.cs
- WebPartEditorApplyVerb.cs
- Thickness.cs
- AccessedThroughPropertyAttribute.cs
- FlowThrottle.cs
- Bits.cs
- SecUtil.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- ExtenderProvidedPropertyAttribute.cs
- TextPenaltyModule.cs
- SplineKeyFrames.cs
- TimeSpanSecondsConverter.cs
- XDeferredAxisSource.cs
- CompressedStack.cs
- CodeNamespace.cs
- WinInetCache.cs
- SerializationObjectManager.cs
- HtmlInputCheckBox.cs
- NumberSubstitution.cs
- UmAlQuraCalendar.cs
- ConfigXmlSignificantWhitespace.cs
- MenuItem.cs
- ConfigPathUtility.cs
- DispatcherTimer.cs
- GenericAuthenticationEventArgs.cs
- ComponentConverter.cs