Inheritance: SourceEmitterOutputTextWriter
コード例 #1
0
    //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();
    }
コード例 #2
0
    /// <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;
    }
コード例 #3
0
    /// <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;
    }
コード例 #4
0
 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);
 }
コード例 #5
0
 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;
 }
コード例 #6
0
        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();
        }
コード例 #7
0
 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();
 }
コード例 #8
0
        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;
        }