public string ColumnValue(object objNode, int columnNumber) { if (columnNumber >= 3) { return(""); } ITreeViewControllerNode treeNode = (ITreeViewControllerNode)objNode; if (treeNode.IsRootNode || treeNode.IsRefByNode) { return(""); } // Case 2 all other nodes. MemoryNode node = (MemoryNode)m_graph.GetNode(treeNode.m_nodeIdx, m_nodeStorage); if (columnNumber == 0) // Value { return("0x" + node.Address.ToString("x")); } else if (columnNumber == 1) // Size { return(node.Size.ToString()); // return "0x" + node.Size.ToString("x"); } else if (columnNumber == 2) // Type { var type = node.GetType(m_typeStorage); return(type.FullName); } return(""); }
public IEnumerable <object> Children(object objNode) { ITreeViewControllerNode treeNode = (ITreeViewControllerNode)objNode; if (treeNode.m_nodeList != null) { // Case 1 the root node for (int i = 0; i < treeNode.m_nodeList.Count; i++) { yield return(new ITreeViewControllerNode(treeNode.m_nodeList[i], i + 1)); } } else { // Case 2 all other nodes. if (treeNode.IsRefByNode) { RefNode node = m_refGraph.GetNode(treeNode.m_nodeIdx, m_refGraph.AllocNodeStorage()); int childNum = 1; var nextIdx = node.GetFirstChildIndex(); while (nextIdx != NodeIndex.Invalid) { yield return(new ITreeViewControllerNode(nextIdx, childNum, true)); nextIdx = node.GetNextChildIndex(); childNum++; } } else { // Normal nodes. yield return(new ITreeViewControllerNode(treeNode.m_nodeIdx, -1)); // Return a 'Referenced By Node' Node node = m_graph.GetNode(treeNode.m_nodeIdx, m_graph.AllocNodeStorage()); node.ResetChildrenEnumeration(); int childNum = 1; while (true) { var nextIdx = node.GetNextChildIndex(); if (nextIdx == NodeIndex.Invalid) { break; } yield return(new ITreeViewControllerNode(nextIdx, childNum)); childNum++; } } } }
public int ChildCount(object objNode) { ITreeViewControllerNode treeNode = (ITreeViewControllerNode)objNode; if (treeNode.m_nodeList != null) { return(treeNode.m_nodeList.Count); // Case 1 we are the root node } else { if (treeNode.IsRefByNode) { RefNode refNode = m_refGraph.GetNode(treeNode.m_nodeIdx, m_refNodeStorage); return(refNode.ChildCount); } else { Node node = m_graph.GetNode(treeNode.m_nodeIdx, m_nodeStorage); // Case 2 all other nodes. return(node.ChildCount + 1); // +1 is for the Referenced By Node. } } }
public string Name(object objNode) { ITreeViewControllerNode treeNode = (ITreeViewControllerNode)objNode; return(treeNode.Name); }