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