public override void ToTextTree(LinearComposer log) { log.AppendLine("{"); log.IncreaseIndentation(); var flag = false; foreach (var pair in _chidNodesDictionary) { if (flag) { log.Append(", "); } else { flag = true; } log.Append(Key + " : "); pair.Value.ToTextTree(log); } log.DecreaseIndentation(); log.AppendAtNewLine("}"); }
private string GenerateClassCode() { var composer = new LinearComposer(); composer.AppendLineAtNewLine(GenerateDeclareCoefsText()); composer.AppendLineAtNewLine(GenerateAbstractCoefsText()); composer.AppendAtNewLine( MainCodeTemplate, "mv_class_name", ClassData.ClassName, "mv_class_id", ClassData.ClassId, "frame", CurrentFrameName, "double", GMacLanguage.ScalarTypeName, "iszero_code", GenerateIsZeroCode(), "norm2_code", GenerateNorm2Code(), "isequal_cases", GenerateAbstractMethodCases("IsEqual"), "op_cases", GenerateAbstractMethodCases("OP"), "gp_cases", GenerateAbstractMethodCases("GP"), "lcp_cases", GenerateAbstractMethodCases("LCP"), "rcp_cases", GenerateAbstractMethodCases("RCP"), "sp_cases", GenerateAbstractMethodCases("SP"), "add_cases", GenerateAbstractMethodCases("Add"), "subtract_cases", GenerateAbstractMethodCases("Subtract") ); return(composer.ToString()); }
public override void ToString(LinearComposer textBuilder) { textBuilder.AppendLine("{"); textBuilder.IncreaseIndentation(); var flag = false; foreach (var pair in _nodes) { if (flag) { textBuilder.AppendLine(","); } else { flag = true; } textBuilder.Append(pair.Key.ToString()); pair.Value.ToString(textBuilder); } textBuilder.DecreaseIndentation(); textBuilder.AppendAtNewLine("}"); }
/// <summary> /// Generate a string containing some statistics about the final text inside /// the files of this composer /// </summary> /// <returns></returns> public string GenerateStatistics() { var composer = new LinearComposer(); composer .AppendLineAtNewLine("Composer Log:") .AppendLineAtNewLine(_log.ToString()) .AppendLine(); var totalLines = 0; var totalCharacters = 0; foreach (var pair in _fileComposersDictionary) { int linesCount, charsCount; composer.AppendAtNewLine( pair.Value.GenerateStatistics(RootFolder, FilesEncoding, out linesCount, out charsCount) ); totalLines += linesCount; totalCharacters += charsCount; } composer .AppendLine() .AppendAtNewLine("Total Files: ") .AppendLine(_fileComposersDictionary.Count.ToString("###,###,###,###")) .AppendAtNewLine("Total Lines: ") .AppendLine(totalLines.ToString("###,###,###,###")) .AppendAtNewLine("Total Characters: ") .AppendLine(totalCharacters.ToString("###,###,###,###")); return(composer.ToString()); }
public override void ToString(LinearComposer textBuilder) { textBuilder.Append("{"); textBuilder.IncreaseIndentation(); foreach (var item in _branches) { item.ToString(textBuilder); } textBuilder.DecreaseIndentation(); textBuilder.AppendAtNewLine("}"); }
private string GenerateClassCode() { var macroNames = new[] { DefaultMacro.EuclideanBinary.OuterProduct, DefaultMacro.MetricBinary.GeometricProduct, DefaultMacro.MetricBinary.LeftContractionProduct, DefaultMacro.MetricBinary.RightContractionProduct, DefaultMacro.MetricBinary.ScalarProduct }; var composer = new LinearComposer(); if (MvLibraryGenerator.MacroGenDefaults.AllowGenerateMacroCode) { foreach (var macroName in macroNames) { composer.AppendAtNewLine( GenerateProductMethod(macroName) ); } } composer.AppendAtNewLine( GenerateAddMethod() ); composer.AppendAtNewLine( GenerateSubtractMethod() ); composer.AppendAtNewLine( GenerateIsEqualMethod() ); return(composer.ToString()); }
/// <summary> /// This method generates a full report regarding any errors in the structure /// of this AST /// </summary> /// <returns></returns> public string VerifyAst() { var composer = new LinearComposer(); //Chack for macros without a command body foreach (var macro in this.Macros()) { if (macro.SymbolBody == null) { composer .AppendAtNewLine("Macro <") .Append(macro.SymbolAccessName) .AppendLine("> Has null Command Body!"); } } return(composer.ToString()); }
public override string ToString() { var textComposer = new LinearComposer(); var idStack = new Stack <ulong>(); var nodeStack = new Stack <IGMacBinaryTreeNode <T> >(); idStack.Push(0ul); nodeStack.Push(this); while (nodeStack.Count > 0) { var id = idStack.Pop(); var node = nodeStack.Pop(); var level = TreeDepth - node.TreeDepth; if (node.IsLeafNode) { textComposer .AppendAtNewLine("<") .Append(id.PatternToString(level)) .Append("> ") .Append("".PadRight(level * 2, ' ')) .Append("Leaf { ") .Append(node.Value.ToString()) .AppendLine(" }"); continue; } if (node.TreeDepth == TreeDepth) { textComposer .AppendAtNewLine("<") .Append("".PadRight(TreeDepth, '-')) .Append("> ") .AppendLine("Root"); } else { textComposer .AppendAtNewLine("<") .Append( id .PatternToString(TreeDepth) .Substring(0, level) .PadRight(TreeDepth, '-') ) .Append("> ") .Append("".PadRight(level * 2, ' ')) .AppendLine("Node"); } if (node.HasChildNode1) { idStack.Push(id | node.ChildNode1.BitMask); nodeStack.Push(node.ChildNode1); } if (node.HasChildNode0) { idStack.Push(id); nodeStack.Push(node.ChildNode0); } } return(textComposer.ToString()); }
public static void AddTest(string message, MathematicaScalar result) { Log.AppendAtNewLine(message); Log.AppendLine(DescribeScalar(result)); Log.AppendLine(); }
public string ToTreeString() { var textComposer = new LinearComposer(); var levelStack = new Stack <int>(); var idStack = new Stack <int>(); var nodeStack = new Stack <IGaTreeMultivectorNode>(); levelStack.Push(0); idStack.Push(0); nodeStack.Push(this); while (nodeStack.Count > 0) { var level = levelStack.Pop(); var id = idStack.Pop(); var node = nodeStack.Pop(); var leafNode = node as GaTreeMultivectorLeaf; if (!ReferenceEquals(leafNode, null)) { textComposer .AppendAtNewLine("".PadLeft(level * 2, ' ')) .Append("Leaf <") .Append(id.PatternToString(level)) .Append("> { ") .Append(id.BasisBladeName()) .Append(" = ") .Append(leafNode.Value.ExpressionText) .AppendLine(" }"); continue; } if (node.IsRoot) { textComposer .AppendAtNewLine("".PadLeft(level * 2, ' ')) .AppendLine("Multivector"); } else { textComposer .AppendAtNewLine("".PadLeft(level * 2, ' ')) .Append("Node <") .Append(id.PatternToString(level)) .AppendLine(">"); } var rightChild = node.GetRightChild(); if (!ReferenceEquals(rightChild, null)) { levelStack.Push(level + 1); idStack.Push(id); nodeStack.Push(rightChild); } var leftChild = node.GetLeftChild(); if (!ReferenceEquals(leftChild, null)) { levelStack.Push(level + 1); idStack.Push((1 << level) | id); nodeStack.Push(leftChild); } } return(textComposer.ToString()); }