//private string WriteCSharpFromAST(IExpression expression) { // SourceEmitterOutputString sourceEmitterOutput = new SourceEmitterOutputString(); // SourceEmitter CSSourceEmitter = new SourceEmitter(sourceEmitterOutput); // ExpressionSimplifier es = new ExpressionSimplifier(); // expression = es.Rewrite(expression); // CSSourceEmitter.Traverse(expression); // return sourceEmitterOutput.Data; //} //private string WriteVBFromAST(IExpression expression) { // var sourceEmitterOutput = new VBSourceEmitter.SourceEmitterOutputString(); // var VBSourceEmitter = new VBSourceEmitter.SourceEmitter(this.host, sourceEmitterOutput); // var es = new ExpressionSimplifier(); // expression = es.Rewrite(expression); // VBSourceEmitter.Traverse(expression); // return sourceEmitterOutput.Data; //} /// <summary> /// Writes the exception thrown by this IPrecondition into an "exception" xml element. /// </summary> public void WriteExceptionTo(XmlWriter writer) { if (String.IsNullOrEmpty(this.exception)) return; writer.WriteStartElement("exception"); writer.WriteAttributeString("cref", this.exception); if (!String.IsNullOrEmpty(this.precondition.OriginalSource)) writer.WriteString(BooleanExpressionHelper.NegatePredicate(this.precondition.OriginalSource)); else { this.docTracker.WriteLine("Warning: Writing exception, but no OriginalSource found."); //Emit the condition instead of the OriginalSource SourceEmitterOutputString sourceEmitterOutput = new SourceEmitterOutputString(); SourceEmitter CSSourceEmitter = new SourceEmitter(sourceEmitterOutput); ExpressionSimplifier es = new ExpressionSimplifier(); LogicalNot logicalNot = new LogicalNot(); logicalNot.Operand = this.precondition.Condition; var condition = es.Rewrite(logicalNot); CSSourceEmitter.Traverse(condition); writer.WriteString(sourceEmitterOutput.Data); } writer.WriteEndElement(); }
/// <summary> /// /// </summary> /// <param name="expression"></param> /// <returns></returns> protected string WriteCSharpFromAST(IExpression expression) { Contract.Requires(expression != null); SourceEmitterOutputString sourceEmitterOutput = new SourceEmitterOutputString(); SourceEmitter CSSourceEmitter = new SourceEmitter(sourceEmitterOutput); ExpressionSimplifier es = new ExpressionSimplifier(); expression = es.Rewrite(expression); CSSourceEmitter.Traverse(expression); return sourceEmitterOutput.Data; }
/// <summary> /// /// </summary> /// <param name="expression"></param> /// <returns></returns> protected string WriteNeutralFromAST(IExpression expression) { Contract.Requires(expression != null); var sourceEmitterOutput = new SourceEmitterOutputString(); var sourceEmitter = new NeutralSourceEmitter(sourceEmitterOutput); var es = new ExpressionSimplifier(); expression = es.Rewrite(expression); sourceEmitter.Traverse(expression); return sourceEmitterOutput.Data; }
public SourceEmitter GetSourceEmitter(CodeLanguage lang, IModule module, SourceEmitterOutputString output) { var moduleInfo = _moduleInfoList.Single(m => m.Module.Name.UniqueKey == module.Name.UniqueKey); var reader = moduleInfo.PdbReader; return new VisualSourceEmitter(output, _host, reader, noIL: lang == CodeLanguage.CSharp, printCompilerGeneratedMembers: false); }
public string Visualize(CodeLanguage language, IMethodDefinition method, ICciModuleSource moduSource) { if (method == null) { return "No method to visualize."; } _log.Info("Visualize: " + method); var module = (IModule)TypeHelper.GetDefiningUnit(method.ContainingTypeDefinition); var sourceEmitterOutput = new SourceEmitterOutputString(); var sourceEmitter = moduSource.GetSourceEmitter(language, module, sourceEmitterOutput); sourceEmitter.Traverse(method); return sourceEmitterOutput.Data; }
public string Visualize(CodeLanguage language, ICciModuleSource modules) { var sb = new StringBuilder(); foreach (var assembly in modules.Modules) { var sourceEmitterOutput = new SourceEmitterOutputString(); var sourceEmitter = modules.GetSourceEmitter(language, assembly.Module, sourceEmitterOutput); sourceEmitter.Traverse(assembly.Module); sb.Append(sourceEmitterOutput.Data); } return sb.ToString(); }
public static string PrintIndexer(IMethodDefinition method, bool isGetter) { Contract.Requires(method != null); var sourceEmitterOutput = new SourceEmitterOutputString(); var csSourceEmitter = new SourceEmitter(sourceEmitterOutput); var indexerSignatureBuilder = new StringBuilder(); csSourceEmitter.Traverse(method.Type); indexerSignatureBuilder.Append(sourceEmitterOutput.Data); sourceEmitterOutput.ClearData(); indexerSignatureBuilder.Append(" "); // Indexers are always identified with a 'this' keyword, but might have an interface prefix string id = method.Name.Value; int lastDot = id.LastIndexOf('.'); if (lastDot != -1) indexerSignatureBuilder.Append(id.Substring(0, lastDot + 1)); indexerSignatureBuilder.Append("this"); indexerSignatureBuilder.Append("["); bool fFirstParameter = true; var parms = method.Parameters; if (!isGetter) { // Use the setter's names except for the final 'value' parameter var l = new List<IParameterDefinition>(method.Parameters); if (l.Count > 0) { l.RemoveAt(l.Count - 1); } parms = l; } foreach (IParameterDefinition parameterDefinition in parms) { if (!fFirstParameter) indexerSignatureBuilder.Append(", "); Contract.Assume(parameterDefinition != null); csSourceEmitter.Traverse(parameterDefinition); indexerSignatureBuilder.Append(sourceEmitterOutput.Data); sourceEmitterOutput.ClearData(); fFirstParameter = false; } indexerSignatureBuilder.Append("]"); return indexerSignatureBuilder.ToString(); }
public string Visualize(CodeLanguage language, IMethodDefinition mainMethod, System.Collections.Generic.List<IMethodDefinition> addMethods, ICciModuleSource moduSource) { if (mainMethod == null) { return "No method to visualize."; } _log.Info("Visualize: " + mainMethod); var module = (IModule)TypeHelper.GetDefiningUnit(addMethods[0].ContainingTypeDefinition); var sourceEmitterOutput = new SourceEmitterOutputString(); var sourceEmitter = moduSource.GetSourceEmitter(language, module, sourceEmitterOutput); sourceEmitter.Traverse(addMethods[0]); return sourceEmitterOutput.Data; }