Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ByteAnimationBase.cs
- SurrogateEncoder.cs
- HeaderCollection.cs
- PrintingPermission.cs
- HeaderCollection.cs
- ChangeInterceptorAttribute.cs
- CustomErrorsSectionWrapper.cs
- WebZone.cs
- DataRecordInternal.cs
- ApplyTemplatesAction.cs
- HtmlLink.cs
- XmlCharType.cs
- HiddenFieldPageStatePersister.cs
- PipeException.cs
- ImageCodecInfo.cs
- RectangleGeometry.cs
- RowToParametersTransformer.cs
- HelpProvider.cs
- CommandExpr.cs
- NewExpression.cs
- remotingproxy.cs
- WebPartConnectionsConnectVerb.cs
- GC.cs
- PersonalizablePropertyEntry.cs
- BaseServiceProvider.cs
- StringResourceManager.cs
- EdmType.cs
- ComplexType.cs
- DrawingAttributes.cs
- SocketPermission.cs
- CultureSpecificStringDictionary.cs
- WebPartManager.cs
- NotifyIcon.cs
- InkCollectionBehavior.cs
- UserControlFileEditor.cs
- DBSqlParserTableCollection.cs
- GPStream.cs
- WebPart.cs
- InfoCardKeyedHashAlgorithm.cs
- UrlMappingCollection.cs
- DocumentPropertiesDialog.cs
- XmlCharCheckingWriter.cs
- ConnectionManagementSection.cs
- WindowsTooltip.cs
- smtpconnection.cs
- SchemaUtility.cs
- ComponentDesigner.cs
- ReaderOutput.cs
- LogExtent.cs
- UIntPtr.cs
- Soap12FormatExtensions.cs
- NGCPageContentCollectionSerializerAsync.cs
- DataReceivedEventArgs.cs
- __TransparentProxy.cs
- ButtonBase.cs
- ButtonBase.cs
- XmlNamespaceMappingCollection.cs
- PropertyManager.cs
- PresentationSource.cs
- SelectionHighlightInfo.cs
- ExportException.cs
- RepeatButtonAutomationPeer.cs
- TabRenderer.cs
- RowCache.cs
- WebExceptionStatus.cs
- BamlVersionHeader.cs
- XmlSchemaParticle.cs
- GeneralTransformCollection.cs
- RequestResizeEvent.cs
- PreservationFileReader.cs
- ListViewInsertEventArgs.cs
- OdbcReferenceCollection.cs
- SubordinateTransaction.cs
- InputQueue.cs
- IsolatedStorageException.cs
- FloatSumAggregationOperator.cs
- TextTrailingWordEllipsis.cs
- SqlSupersetValidator.cs
- MachineKeyConverter.cs
- PeerCollaboration.cs
- LoginName.cs
- RoutedPropertyChangedEventArgs.cs
- TrackingExtract.cs
- FtpRequestCacheValidator.cs
- ConnectionPoolManager.cs
- Filter.cs
- ProfileInfo.cs
- HttpSocketManager.cs
- CompilerErrorCollection.cs
- CheckBoxField.cs
- InstanceNotReadyException.cs
- LineServicesCallbacks.cs
- FillErrorEventArgs.cs
- PartialTrustVisibleAssembliesSection.cs
- XmlCodeExporter.cs
- SoapSchemaImporter.cs
- MappingMetadataHelper.cs
- Int32Animation.cs
- Lazy.cs
- TdsParserHelperClasses.cs