public static TrieNode loadFromStream(System.IO.StreamReader reader, Func <string, LeafElement> parser) { TrieNode result = new TrieNode(); var elementString = readTillDelimiter(reader, '{'); LeafElement element = default; if (elementString != "") { element = parser.Invoke(elementString); result.hasElement = true; } result.element = element; var delim = (char)reader.Read(); //skipes the opening bracket var countString = readTillDelimiter(reader, ';'); int count = (countString.Length > 0 ? int.Parse(countString) : 0); delim = (char)reader.Read(); //skipes the ; for (int i = 0; i < count; i++) { char key = (char)reader.Read(); TrieNode successor = loadFromStream(reader, parser); result.successors.Add(key, successor); delim = (char)reader.Read(); //skipes the mid } delim = (char)reader.Read(); //skipes the closing bracket return(result); }
public void setElement(LeafElement element) { if (this.hasElement && !this.element.Equals(element)) { LeafElement min = this.element.CompareTo(element) < 0 ? this.element : element; //throw new Exception(); this.element = min; } else { this.element = element; } this.hasElement = true; }
private static RectTransform HandleLeafElement(LeafElement element, ref int index) { ContextMenuUIElement uiElement = GetContextMenuUIElement(index); uiElement.rectTransform.SetParent(null); uiElement.rectTransform.gameObject.SetActive(true); uiElement.icon.gameObject.SetActive(element.icon != null); uiElement.icon.sprite = element.icon; uiElement.icon.color = element.icon != null ? element.iconColor : Color.clear; uiElement.childIcon.gameObject.SetActive(false); uiElement.text.rectTransform.offsetMax = Vector2.zero; uiElement.text.text = element.text; uiElement.rectTransform.gameObject.name = element.text; uiElement.button.onClick = new Button.ButtonClickedEvent(); uiElement.button.onClick.AddListener(() => { element.onClick(element.parameter); HideContextMenu(); }); ++index; return(uiElement.rectTransform); }
public TrieNode() { this.hasElement = false; this.successors = new Dictionary <char, TrieNode>(); this.element = default; }