private void textBox_TextChanged(object sender, TextChangedEventArgs e) { string text = textBox.Text; Stopwatch watch = new Stopwatch(); watch.Start(); List <Token> tList = Tokenizer.TokenizeString(text, false); watch.Stop(); Token[] t = tList.ToArray(); double tokenToTextLength = (double)t.Length / (double)text.Length; string subTitle = watch.ElapsedMilliseconds + " ms - tokenL/textL: " + tokenToTextLength + " (" + t.Length + " / " + text.Length + ")"; tokenStack.Children.Clear(); int i = 0; if (t.Length < 10000) { foreach (var token in t) { ++i; Grid g = new Grid { Background = ChooseBackgroundFromTokenKind(token.Kind), Tag = token }; g.MouseLeftButtonUp += G_MouseLeftButtonUp; g.HorizontalAlignment = HorizontalAlignment.Stretch; g.Children.Add(new TextBlock() { Text = token.Kind.ToString() + " - '" + token.Value + "'", IsHitTestVisible = false }); tokenStack.Children.Add(g); } } termTree.Items.Clear(); watch.Reset(); watch.Start(); SourcepawnCondenser.Condenser c = new SourcepawnCondenser.Condenser(text, ""); var def = c.Condense(); watch.Stop(); subTitle += " - condenser: " + watch.ElapsedMilliseconds.ToString() + " ms"; Title = subTitle; bool expand = ExpandBox.IsChecked.Value; TreeViewItem functionItem = new TreeViewItem() { Header = "functions (" + def.Functions.Count.ToString() + ")", IsExpanded = expand }; foreach (var f in def.Functions) { TreeViewItem item = new TreeViewItem { Header = f.Name, IsExpanded = expand, Tag = f }; item.MouseLeftButtonUp += ItemFunc_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + f.Index.ToString(), Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + f.Length.ToString() }); item.Items.Add(new TreeViewItem() { Header = "Kind: " + f.FunctionKind.ToString(), Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "ReturnType: " + f.ReturnType }); item.Items.Add(new TreeViewItem() { Header = "Comment: >>" + f.CommentString + "<<", Background = Brushes.LightGray }); for (int j = 0; j < f.Parameters.Length; ++j) { item.Items.Add(new TreeViewItem() { Header = "Parameter " + (j + 1).ToString() + ": " + f.Parameters[j], Background = ((j + 1) % 2 == 0) ? Brushes.LightGray : Brushes.White }); } functionItem.Items.Add(item); } termTree.Items.Add(functionItem); TreeViewItem enumItem = new TreeViewItem() { Header = "enums (" + def.Enums.Count.ToString() + ")", IsExpanded = expand }; foreach (var en in def.Enums) { TreeViewItem item = new TreeViewItem { Header = (string.IsNullOrWhiteSpace(en.Name)) ? "no name" : en.Name, IsExpanded = expand, Tag = en }; item.MouseLeftButtonUp += ItemEnum_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + en.Index.ToString(), Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + en.Length.ToString() }); for (int j = 0; j < en.Entries.Length; ++j) { item.Items.Add(new TreeViewItem() { Header = "Entry " + (j + 1).ToString() + ": " + en.Entries[j], Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }); } enumItem.Items.Add(item); } termTree.Items.Add(enumItem); TreeViewItem dItem = new TreeViewItem() { Header = "defines (" + def.Defines.Count.ToString() + ")", IsExpanded = expand }; foreach (var d in def.Defines) { TreeViewItem item = new TreeViewItem { Header = d.Name, IsExpanded = expand, Tag = d }; item.MouseLeftButtonUp += Itemppd_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + d.Index.ToString(), Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + d.Length.ToString() }); dItem.Items.Add(item); } termTree.Items.Add(dItem); TreeViewItem cItem = new TreeViewItem() { Header = "constants (" + def.Constants.Count.ToString() + ")", IsExpanded = expand }; foreach (var cn in def.Constants) { TreeViewItem item = new TreeViewItem { Header = cn.Name, IsExpanded = expand, Tag = cn }; item.MouseLeftButtonUp += Itemc_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + cn.Index.ToString(), Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + cn.Length.ToString() }); cItem.Items.Add(item); } termTree.Items.Add(cItem); }
private void textBox_TextChanged(object sender, TextChangedEventArgs e) { var text = textBox.Text; var watch = new Stopwatch(); watch.Start(); var tList = Tokenizer.TokenizeString(text, false); watch.Stop(); var t = tList.ToArray(); var tokenToTextLength = t.Length / (double)text.Length; var subTitle = watch.ElapsedMilliseconds + " ms - tokenL/textL: " + tokenToTextLength + " (" + t.Length + " / " + text.Length + ")"; tokenStack.Children.Clear(); var i = 0; if (t.Length < 10000) { foreach (var token in t) { ++i; var g = new Grid() { Background = ChooseBackgroundFromTokenKind(token.Kind) }; g.Tag = token; g.MouseLeftButtonUp += G_MouseLeftButtonUp; g.HorizontalAlignment = HorizontalAlignment.Stretch; g.Children.Add(new TextBlock() { Text = token.Kind + " - '" + token.Value + "'", IsHitTestVisible = false }); tokenStack.Children.Add(g); } } termTree.Items.Clear(); watch.Reset(); watch.Start(); var c = new SourcepawnCondenser.Condenser(text, ""); var def = c.Condense(); watch.Stop(); subTitle += " - condenser: " + watch.ElapsedMilliseconds + " ms"; Title = subTitle; var expand = ExpandBox.IsChecked.Value; var functionItem = new TreeViewItem() { Header = "functions (" + def.Functions.Count + ")", IsExpanded = expand }; foreach (var f in def.Functions) { var item = new TreeViewItem() { Header = f.Name, IsExpanded = expand }; item.Tag = f; item.MouseLeftButtonUp += ItemFunc_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + f.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + f.Length }); item.Items.Add(new TreeViewItem() { Header = "Kind: " + f.FunctionKind, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "ReturnType: " + f.ReturnType }); item.Items.Add(new TreeViewItem() { Header = "Comment: >>" + f.CommentString + "<<", Background = Brushes.LightGray }); for (var j = 0; j < f.Parameters.Length; ++j) { item.Items.Add(new TreeViewItem() { Header = "Parameter " + (j + 1) + ": " + f.Parameters[j], Background = ((j + 1) % 2 == 0) ? Brushes.LightGray : Brushes.White }); } functionItem.Items.Add(item); } termTree.Items.Add(functionItem); var enumItem = new TreeViewItem() { Header = "enums (" + def.Enums.Count + ")", IsExpanded = expand }; foreach (var en in def.Enums) { var item = new TreeViewItem() { Header = string.IsNullOrWhiteSpace(en.Name) ? "no name" : en.Name, IsExpanded = expand }; item.Tag = en; item.MouseLeftButtonUp += ItemEnum_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + en.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + en.Length }); for (var j = 0; j < en.Entries.Length; ++j) { item.Items.Add(new TreeViewItem() { Header = "Entry " + (j + 1) + ": " + en.Entries[j], Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }); } enumItem.Items.Add(item); } termTree.Items.Add(enumItem); var structItem = new TreeViewItem() { Header = "structs (" + def.Structs.Count + ")", IsExpanded = expand }; foreach (var s in def.Structs) { var item = new TreeViewItem() { Header = string.IsNullOrWhiteSpace(s.Name) ? "no name" : s.Name, IsExpanded = expand }; item.Tag = s; item.MouseLeftButtonUp += ItemStruct_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + s.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + s.Length }); structItem.Items.Add(item); } termTree.Items.Add(structItem); var dItem = new TreeViewItem() { Header = "defines (" + def.Defines.Count + ")", IsExpanded = expand }; foreach (var d in def.Defines) { var item = new TreeViewItem() { Header = d.Name, IsExpanded = expand }; item.Tag = d; item.MouseLeftButtonUp += Itemppd_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + d.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + d.Length }); dItem.Items.Add(item); } termTree.Items.Add(dItem); var cItem = new TreeViewItem() { Header = "constants (" + def.Constants.Count + ")", IsExpanded = expand }; foreach (var cn in def.Constants) { var item = new TreeViewItem() { Header = cn.Name, IsExpanded = expand }; item.Tag = cn; item.MouseLeftButtonUp += Itemc_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + cn.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + cn.Length }); cItem.Items.Add(item); } termTree.Items.Add(cItem); var mItem = new TreeViewItem() { Header = "methodmaps (" + def.Methodmaps.Count + ")", IsExpanded = expand }; foreach (var m in def.Methodmaps) { var item = new TreeViewItem() { Header = m.Name, IsExpanded = expand }; item.Tag = m; item.MouseLeftButtonUp += ItemMM_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + m.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + m.Length }); item.Items.Add(new TreeViewItem() { Header = "Type: " + m.Type, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "InheritedType: " + m.InheritedType }); var subItem = new TreeViewItem() { Header = "Methods", Background = Brushes.LightGray }; for (var j = 0; j < m.Methods.Count; ++j) { var subSubItem = new TreeViewItem() { Header = m.Methods[j].Name, Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }; subSubItem.Items.Add(new TreeViewItem() { Header = "Index: " + m.Methods[j].Index }); subSubItem.Items.Add(new TreeViewItem() { Header = "Length: " + m.Methods[j].Length, Background = Brushes.LightGray }); subSubItem.Items.Add(new TreeViewItem() { Header = "Comment: >>" + m.Methods[j].CommentString + "<<" }); subSubItem.Items.Add(new TreeViewItem() { Header = "Return: " + m.Methods[j].ReturnType, Background = Brushes.LightGray }); var k = 0; for (; k < m.Methods[j].MethodKind.Length; ++k) { subSubItem.Items.Add(new TreeViewItem() { Header = "MethodKind" + (k + 1) + ": " + m.Methods[j].MethodKind[k], Background = (k % 2 == 0) ? Brushes.LightGray : Brushes.White }); } for (var l = 0; l < m.Methods[j].Parameters.Length; ++l) { ++k; subSubItem.Items.Add(new TreeViewItem() { Header = "Parameter" + (l + 1) + ": " + m.Methods[j].Parameters[l], Background = (k % 2 == 0) ? Brushes.LightGray : Brushes.White }); } subItem.Items.Add(subSubItem); } item.Items.Add(subItem); subItem = new TreeViewItem() { Header = "Fields" }; for (var j = 0; j < m.Fields.Count; ++j) { var subSubItem = new TreeViewItem() { Header = m.Fields[j].Name, Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }; subSubItem.Items.Add(new TreeViewItem() { Header = "Index: " + m.Fields[j].Index }); subSubItem.Items.Add(new TreeViewItem() { Header = "Length: " + m.Fields[j].Length, Background = Brushes.LightGray }); //subSubItem.Items.Add(new TreeViewItem() { Header = "Type: " + m.Fields[j].Type }); subItem.Items.Add(subSubItem); } item.Items.Add(subItem); mItem.Items.Add(item); } termTree.Items.Add(mItem); var eItem = new TreeViewItem() { Header = "EnumStructs (" + def.EnumStructs.Count + ")", IsExpanded = expand }; foreach (var m in def.EnumStructs) { var item = new TreeViewItem() { Header = m.Name, IsExpanded = expand }; item.Tag = m; item.MouseLeftButtonUp += ItemMM_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + m.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + m.Length }); // item.Items.Add(new TreeViewItem() { Header = "Type: " + m.Type, Background = Brushes.LightGray }); var subItem = new TreeViewItem() { Header = "Methods", Background = Brushes.LightGray }; for (var j = 0; j < m.Methods.Count; ++j) { var subSubItem = new TreeViewItem() { Header = m.Methods[j].Name, Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }; subSubItem.Items.Add(new TreeViewItem() { Header = "Index: " + m.Methods[j].Index }); subSubItem.Items.Add(new TreeViewItem() { Header = "Length: " + m.Methods[j].Length, Background = Brushes.LightGray }); subSubItem.Items.Add(new TreeViewItem() { Header = "Comment: >>" + m.Methods[j].CommentString + "<<" }); subSubItem.Items.Add(new TreeViewItem() { Header = "Return: " + m.Methods[j].ReturnType, Background = Brushes.LightGray }); var k = 0; for (; k < m.Methods[j].MethodKind.Length; ++k) { subSubItem.Items.Add(new TreeViewItem() { Header = "MethodKind" + (k + 1) + ": " + m.Methods[j].MethodKind[k], Background = (k % 2 == 0) ? Brushes.LightGray : Brushes.White }); } for (var l = 0; l < m.Methods[j].Parameters.Length; ++l) { ++k; subSubItem.Items.Add(new TreeViewItem() { Header = "Parameter" + (l + 1) + ": " + m.Methods[j].Parameters[l], Background = (k % 2 == 0) ? Brushes.LightGray : Brushes.White }); } subItem.Items.Add(subSubItem); } item.Items.Add(subItem); subItem = new TreeViewItem() { Header = "Fields" }; for (var j = 0; j < m.Fields.Count; ++j) { var subSubItem = new TreeViewItem() { Header = m.Fields[j].Name, Background = (j % 2 == 0) ? Brushes.LightGray : Brushes.White }; subSubItem.Items.Add(new TreeViewItem() { Header = "Index: " + m.Fields[j].Index }); subSubItem.Items.Add(new TreeViewItem() { Header = "Length: " + m.Fields[j].Length, Background = Brushes.LightGray }); //subSubItem.Items.Add(new TreeViewItem() { Header = "Type: " + m.Fields[j].Type }); subItem.Items.Add(subSubItem); } item.Items.Add(subItem); eItem.Items.Add(item); } termTree.Items.Add(eItem); var vItem = new TreeViewItem() { Header = "Variables (" + def.Constants.Count + ")", IsExpanded = expand }; foreach (var v in def.Variables) { var item = new TreeViewItem() { Header = v.Name, IsExpanded = expand }; item.Tag = v; item.MouseLeftButtonUp += Itemc_MouseLeftButtonUp; item.Items.Add(new TreeViewItem() { Header = "Index: " + v.Index, Background = Brushes.LightGray }); item.Items.Add(new TreeViewItem() { Header = "Length: " + v.Length }); item.Items.Add(new TreeViewItem() { Header = "Type: " + v.Type }); item.Items.Add(new TreeViewItem() { Header = "Value: " + v.Value }); item.Items.Add(new TreeViewItem() { Header = "Size: " + string.Join(",", v.Size) }); item.Items.Add(new TreeViewItem() { Header = "Dimensions: " + v.Dimensions }); vItem.Items.Add(item); } termTree.Items.Add(vItem); }