public bool removeNode(string label, string key) { int id = GetNodeKeyId(label, key); if (id == -1) { return false; } nodes.set(id, null); deletedNodes.Add(id); foreach (string type in related.keySet()) { ReversibleMultiMap rels = related.get(type); int outgoingCount = 0; int incomingCount = 0; for (int value : rels.getRels(id)) { outgoingCount++; relationships.set(value, null); deletedRelationships.Add(value); } for (int value : rels.getRelsByValue(id)) { incomingCount++; relationships.set(value, null); deletedRelationships.Add(value); } rels.removeAll(id); relationshipCounts.Add(type, relationshipCounts.getInt(type) - (outgoingCount + incomingCount)); } removeNodeKeyId(label, key); return true; }
public void TestAdd() { uint[] values = new uint[] { 1, 2, 3, 4, 5, 100, 1000 }; uint max = values.Max() + 1; using (var rb1 = new RoaringBitmap()) using (var rb2 = new RoaringBitmap()) using (var rb3 = RoaringBitmap.FromValues(values)) { for (int i = 0; i < values.Length; i++) { rb1.Add(values[i]); } rb1.Optimize(); rb2.AddMany(values); rb2.Optimize(); rb3.Optimize(); Assert.Equal(rb1.Cardinality, (uint)values.Length); Assert.Equal(rb2.Cardinality, (uint)values.Length); Assert.Equal(rb3.Cardinality, (uint)values.Length); for (uint i = 0; i < max; i++) { if (values.Contains(i)) { Assert.True(rb1.Contains(i)); Assert.True(rb2.Contains(i)); Assert.True(rb3.Contains(i)); } else { Assert.False(rb1.Contains(i)); Assert.False(rb2.Contains(i)); Assert.False(rb3.Contains(i)); } } } }
public void Set(ulong bit) { high.Add((uint)(bit >> 32)); low.Add((uint)bit & uint.MaxValue); }