Cascade-delete all edges touching nodes in deleted_set. */
| 314 | |
| 315 | /* Cascade-delete all edges touching nodes in deleted_set. */ |
| 316 | static void cascade_delete_edges(cbm_gbuf_t *gb, CBMHashTable *deleted_set) { |
| 317 | int write_idx = 0; |
| 318 | for (int i = 0; i < gb->edges.count; i++) { |
| 319 | cbm_gbuf_edge_t *e = gb->edges.items[i]; |
| 320 | char src_id[CBM_SZ_32]; |
| 321 | char tgt_id[CBM_SZ_32]; |
| 322 | make_id_key(src_id, sizeof(src_id), e->source_id); |
| 323 | make_id_key(tgt_id, sizeof(tgt_id), e->target_id); |
| 324 | |
| 325 | if (cbm_ht_get(deleted_set, src_id) || cbm_ht_get(deleted_set, tgt_id)) { |
| 326 | unindex_edge(gb, e); |
| 327 | free_edge_strings(e); |
| 328 | free(e); |
| 329 | } else { |
| 330 | gb->edges.items[write_idx++] = gb->edges.items[i]; |
| 331 | } |
| 332 | } |
| 333 | gb->edges.count = write_idx; |
| 334 | } |
| 335 | |
| 336 | /* Register a node in primary (QN, ID) and secondary (label, name) indexes. */ |
| 337 | static void register_node_in_indexes(cbm_gbuf_t *gb, cbm_gbuf_node_t *node) { |
no test coverage detected