public void DeleteEdge(int nidFrom, int nidTo) { nNode nodFrom = FindNode(nidFrom); nNode nodTo = FindNode(nidTo); eNode end = nodFrom.FindOutEdge(nidTo); nodFrom._edgesFrom.Remove(nidTo); nodTo._edgesTo.Remove(end); }
public void DeleteNode(int nid) { nNode nod = FindNode(nid); eNode[] arend = new eNode[nod._edgesFrom.Count + nod._edgesTo.Count]; nod._edgesFrom.Values.CopyTo(arend, 0); nod._edgesTo.CopyTo(arend, nod._edgesFrom.Count); foreach (eNode end in arend) { DeleteEdge(end._idFrom, end._idTo); } _nodes.Remove(nod._id); }
public int GetOutEdge(int idFrom, int pos, out object attr) { eNode end = null; try { end = FindNode(idFrom)._edgesFrom.Values[pos]; } catch (Exception) { VfException.Error("Inconsistent data"); } attr = end._attr; return(end._idTo); }
public void InsertEdge(int nidFrom, int nidTo, object attr) { eNode end = new eNode(); nNode nodFrom = FindNode(nidFrom); nNode nodTo = FindNode(nidTo); end._idFrom = nidFrom; end._idTo = nidTo; end._attr = attr; try { nodFrom._edgesFrom.Add(nidTo, end); nodTo._edgesTo.Add(end); } catch (Exception) { VfException.Error("Inconsistent Data"); } }