Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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");
            }
        }