public void RemoveToken(T token) { UInt32 id; if (ValueToId.TryGetValue(token, out id)) { _IdToValue.Remove(id); _valueToId.Remove(token); var v = _tokenMap[id]; v.Unpersist(Session); _tokenMap.Remove(id); } }
bool RemovePropertyValueT(ElementId oid, out T pv) { if (m_propertyValue.TryGetValue(oid, out pv)) { m_propertyValue.Remove(oid); if (m_valueIndex != null) { if (m_valueIndex.TryGetKey(pv, ref pv)) { BTreeSet <ElementId> oidArray = m_valueIndex[pv]; if (oidArray.Count > 1) { oidArray.Remove(oid); } else { oidArray.Unpersist(Session); m_valueIndex.Remove(pv); } } } else if (m_valueIndexUnique != null) { m_valueIndexUnique.Remove(pv); } return(true); } return(false); }
/// <summary> /// Removing an edge from this edge type /// </summary> /// <param name="edge">an edge to remove</param> public void RemoveEdge(Edge edge) { if (Unrestricted) { UnrestrictedEdge unrestrictedEdge = m_unrestrictedEdges[edge.EdgeId]; unrestrictedEdge.Unpersist(Session); m_unrestrictedEdges.Remove(edge.EdgeId); } else { m_restrictedEdges.Remove(edge.EdgeId); } if (m_birectional) { edge.Tail.VertexType.RemoveTailToHeadEdge(edge); edge.Head.VertexType.RemoveHeadToTailEdge(edge); } else { edge.Tail.VertexType.RemoveTailToHeadEdge(edge); } foreach (string key in GetPropertyKeys()) { edge.RemoveProperty(key); } Range <EdgeId> range = new Range <EdgeId>(edge.EdgeId, edge.EdgeId); bool isEqual; var edgeRanges = EdgeRanges; int pos = edgeRanges.BinarySearch(range, out isEqual); if (pos >= 0) { if (pos == edgeRanges.Count || (pos > 0 && edgeRanges[pos].Min > edge.EdgeId)) { --pos; } range = edgeRanges[pos]; if (range.Min == edge.EdgeId) { if (range.Max == edge.EdgeId) { edgeRanges.RemoveAt(pos); } else { edgeRanges[pos] = new Range <EdgeId>(range.Min + 1, range.Max); } } else if (range.Max == edge.EdgeId) { edgeRanges[pos] = new Range <EdgeId>(range.Min, range.Max + 1); } else { edgeRanges[pos] = new Range <EdgeId>(range.Min, edge.EdgeId - 1); edgeRanges.Insert(pos + 1, new Range <EdgeId>(edge.EdgeId + 1, range.Max)); } } }