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
- SchemaEntity.cs
- Int32Rect.cs
- MulticastOption.cs
- Int32RectValueSerializer.cs
- MenuStrip.cs
- BlockUIContainer.cs
- _Events.cs
- ConnectionStringsExpressionBuilder.cs
- HatchBrush.cs
- MailMessageEventArgs.cs
- XmlSchemaSequence.cs
- DataGridCell.cs
- WebPartConnectionsConnectVerb.cs
- GridViewAutoFormat.cs
- AsyncCompletedEventArgs.cs
- TypeBuilderInstantiation.cs
- StylusDevice.cs
- OverlappedAsyncResult.cs
- AppDomainFactory.cs
- DesignerSerializationVisibilityAttribute.cs
- Vector3DAnimationBase.cs
- ConnectivityStatus.cs
- Soap11ServerProtocol.cs
- BamlBinaryWriter.cs
- PlanCompilerUtil.cs
- Point3D.cs
- XmlWriter.cs
- GifBitmapEncoder.cs
- StrokeSerializer.cs
- MediaContext.cs
- DataControlLinkButton.cs
- BaseParser.cs
- MultiTrigger.cs
- SimpleModelProvider.cs
- PropertyReferenceExtension.cs
- FontDifferentiator.cs
- validation.cs
- ReachSerializer.cs
- XmlNodeList.cs
- EventData.cs
- ReferenceEqualityComparer.cs
- SqlMetaData.cs
- WebBrowsableAttribute.cs
- XPathAxisIterator.cs
- PropertyMapper.cs
- KeyPullup.cs
- SqlDataReader.cs
- ColumnWidthChangingEvent.cs
- LayoutManager.cs
- PlatformCulture.cs
- TreeNodeClickEventArgs.cs
- GlyphingCache.cs
- FixedPosition.cs
- MobileComponentEditorPage.cs
- TemplatePropertyEntry.cs
- CookieParameter.cs
- ToolConsole.cs
- ButtonFieldBase.cs
- TaskExceptionHolder.cs
- SafeBitVector32.cs
- HashAlgorithm.cs
- Menu.cs
- ContentWrapperAttribute.cs
- Helper.cs
- _NativeSSPI.cs
- PeerNameRegistration.cs
- BreakSafeBase.cs
- COM2ExtendedUITypeEditor.cs
- AsyncInvokeOperation.cs
- Token.cs
- CodeMemberProperty.cs
- Frame.cs
- TimeZone.cs
- CacheDependency.cs
- LinqDataSourceDisposeEventArgs.cs
- DesignOnlyAttribute.cs
- AvTrace.cs
- XPathConvert.cs
- ManifestBasedResourceGroveler.cs
- SvcMapFile.cs
- ReadOnlyObservableCollection.cs
- MultiView.cs
- MappingException.cs
- EventLogPermissionEntryCollection.cs
- XmlCodeExporter.cs
- COM2IDispatchConverter.cs
- PublisherIdentityPermission.cs
- DbExpressionVisitor_TResultType.cs
- DocumentProperties.cs
- AstNode.cs
- MyContact.cs
- SafeLibraryHandle.cs
- Label.cs
- PtsHelper.cs
- HtmlHead.cs
- PropVariant.cs
- ValidationEventArgs.cs
- CompressionTransform.cs
- BodyGlyph.cs
- InputLanguageManager.cs