@@ -165,7 +165,6 @@ new(Type) ->
165
165
V = ets :new (vertices , [set , Access ]),
166
166
E = ets :new (edges , [set , Access ]),
167
167
N = ets :new (neighbours , [bag , Access ]),
168
- ets :insert (N , [{'$vid' , 0 }, {'$eid' , 0 }]),
169
168
set_type (Ts , # digraph {vtab = V , etab = E , ntab = N });
170
169
error ->
171
170
erlang :error (badarg )
@@ -251,7 +250,7 @@ The created vertex is represented by term `['$v' | N]`, where `N` is an intege
251
250
G :: graph ().
252
251
253
252
add_vertex (G ) ->
254
- do_add_vertex ({new_vertex_id (G ), []}, G ).
253
+ do_add_vertex ({new_vertex_id (), []}, G ).
255
254
256
255
-doc (#{equiv => add_vertex (G , V , [])}).
257
256
-spec add_vertex (G , V ) -> vertex () when
@@ -409,7 +408,7 @@ out_edges(G, V) ->
409
408
V2 :: vertex ().
410
409
411
410
add_edge (G , V1 , V2 ) ->
412
- do_add_edge ({new_edge_id (G ), V1 , V2 , []}, G ).
411
+ do_add_edge ({new_edge_id (), V1 , V2 , []}, G ).
413
412
414
413
-doc (#{equiv => add_edge / 5 }).
415
414
-doc """
@@ -426,7 +425,7 @@ See `t:add_edge_err_rsn/0` for details on possible errors.
426
425
Label :: label ().
427
426
428
427
add_edge (G , V1 , V2 , D ) ->
429
- do_add_edge ({new_edge_id (G ), V1 , V2 , D }, G ).
428
+ do_add_edge ({new_edge_id (), V1 , V2 , D }, G ).
430
429
431
430
-doc """
432
431
Creates (or modifies) an edge with the identifier
@@ -513,30 +512,22 @@ edge(G, E) ->
513
512
% %
514
513
% % Generate a "unique" edge identifier (relative to this graph)
515
514
% %
516
- -spec new_edge_id (graph () ) -> edge ().
515
+ -spec new_edge_id () -> edge ().
517
516
518
- -dialyzer ({no_improper_lists , new_edge_id / 1 }).
517
+ -dialyzer ({no_improper_lists , new_edge_id / 0 }).
519
518
520
- new_edge_id (G ) ->
521
- NT = G # digraph .ntab ,
522
- [{'$eid' , K }] = ets :lookup (NT , '$eid' ),
523
- true = ets :delete (NT , '$eid' ),
524
- true = ets :insert (NT , {'$eid' , K + 1 }),
525
- ['$e' | K ].
519
+ new_edge_id () ->
520
+ ['$e' | erlang :unique_integer ()].
526
521
527
522
% %
528
523
% % Generate a "unique" vertex identifier (relative to this graph)
529
524
% %
530
- -spec new_vertex_id (graph () ) -> vertex ().
525
+ -spec new_vertex_id () -> vertex ().
531
526
532
- -dialyzer ({no_improper_lists , new_vertex_id / 1 }).
527
+ -dialyzer ({no_improper_lists , new_vertex_id / 0 }).
533
528
534
- new_vertex_id (G ) ->
535
- NT = G # digraph .ntab ,
536
- [{'$vid' , K }] = ets :lookup (NT , '$vid' ),
537
- true = ets :delete (NT , '$vid' ),
538
- true = ets :insert (NT , {'$vid' , K + 1 }),
539
- ['$v' | K ].
529
+ new_vertex_id () ->
530
+ ['$v' | erlang :unique_integer ()].
540
531
541
532
% %
542
533
% % Collect elements for a index in a tuple
0 commit comments