public static void Analyze <Label, Local, Parameter, Method, Field, Type, Expression, Variable>( IMethodDriver <Label, Local, Parameter, Method, Field, Type, Expression, Variable> driver, bool doDebug ) where Variable : IEquatable <Variable> { TypeBindings <Label, Local, Parameter, Method, Field, Type, Expression, Variable> .Analysis analysis = new TypeBindings <Label, Local, Parameter, Method, Field, Type, Expression, Variable> .Analysis(driver.MetaDataDecoder); analysis.Debug = doDebug; driver.CreateForward(analysis, doDebug)(analysis.InitialValue(driver.KeyNumber)); }
/// <summary> /// Main interface method of the analyzer. It returns state machine information, given a method driver. /// </summary> /// <param name="fullMethodName">The name of the method, should always be "MoveNext".</param> /// <param name="driver">A method analysis driver.</param> /// <returns></returns> public StateMachineInformation <Local> AnalyzeMoveNext <Local, Parameter, Method, Field, Property, Type, Attribute, Assembly, Expression, Variable, ILogOptions>( string fullMethodName, IMethodDriver <APC, Local, Parameter, Method, Field, Property, Type, Attribute, Assembly, Expression, Variable, ILogOptions> driver ) where Variable : IEquatable <Variable> where Expression : IEquatable <Expression> where Type : IEquatable <Type> where ILogOptions : IFrameworkLogOptions { TypeBindings <Local, Parameter, Method, Field, Property, Type, Attribute, Assembly, Expression, Variable, ILogOptions> .Analysis analysis = new TypeBindings <Local, Parameter, Method, Field, Property, Type, Attribute, Assembly, Expression, Variable, ILogOptions> .Analysis(driver, this); driver.CreateForward(analysis)(analysis.InitialValue()); return(analysis.MoveNextPreAnalysisResult); }