1
1
# StaticGraphs are binary files with the following format:
2
- # f_vec, 0, f_ind
2
+ # sizeof(T), sizeU, f_vec, 0, f_ind
3
3
# StaticDiGraphs have the following format:
4
- # f_vec, 0, f_ind, 0, b_vec, 0, b_ind
4
+ # bits in T, bits in U, f_vec, 0, f_ind, 0, b_vec, 0, b_ind
5
5
6
6
abstract type StaticGraphFormat <: AbstractGraphFormat end
7
- struct SGFormat{T <: Integer } <: StaticGraphFormat end
8
- struct SDGFormat{T <: Integer } <: StaticGraphFormat end
7
+ struct SGFormat <: StaticGraphFormat end
8
+ struct SDGFormat <: StaticGraphFormat end
9
9
10
- SGFormat () = SGFormat {Int64} ()
11
- SGFormat (T:: DataType ) = SGFormat {T} ()
12
-
13
- SDGFormat () = SDGFormat {Int64} ()
14
- SDGFormat (T:: DataType ) = SDGFormat {T} ()
15
-
16
-
17
- function savesg (fn:: AbstractString , g:: StaticGraph , T:: DataType )
18
- open (fn, " w+" ) do io
19
- arr = vcat (g. f_vec, [0 ], g. f_ind)
20
- v = Mmap. mmap (io, Vector{T}, length (arr))
21
- for i = 1 : length (arr)
22
- @inbounds v[i] = arr[i]
23
- end
24
- Mmap. sync! (v)
25
- end
10
+ function savesg (fn:: AbstractString , g:: StaticGraph )
11
+ f_ind = g. f_ind
12
+ f_vec = g. f_vec
13
+ @save fn f_vec f_ind
26
14
return 1
27
15
end
28
16
29
- function savesg (fn:: AbstractString , g:: StaticDiGraph , T:: DataType )
30
- open (fn, " w+" ) do io
31
- farr = vcat (g. f_vec, [0 ], g. f_ind)
32
- barr = vcat (g. b_vec, [0 ], g. b_ind)
33
- arr = vcat (farr, [0 ], barr)
34
- v = Mmap. mmap (io, Vector{T}, length (arr))
35
- for i = 1 : length (arr)
36
- @inbounds v[i] = arr[i]
37
- end
38
- Mmap. sync! (v)
39
- end
17
+ function savesg (fn:: AbstractString , g:: StaticDiGraph )
18
+ f_ind = g. f_ind
19
+ f_vec = g. f_vec
20
+ b_ind = g. b_ind
21
+ b_vec = g. b_vec
22
+ @save fn f_vec f_ind b_vec b_ind
40
23
return 1
41
24
end
42
25
43
- function loadsg (fn:: AbstractString , :: SGFormat{T} ) where T <: Integer
44
- open (fn, " r" ) do io
45
- arr = Mmap. mmap (io, Vector{T})
46
- zeroind = findfirst (arr, 0 )
47
- StaticGraph {T} (arr[1 : zeroind- 1 ], arr[zeroind+ 1 : end ])
48
- end
26
+ function loadsg (fn:: AbstractString , :: SGFormat )
27
+ @load fn f_vec f_ind
28
+ return StaticGraph (f_vec, f_ind)
49
29
end
50
30
51
- function loadsg (fn:: AbstractString , :: SDGFormat{T} ) where T <: Integer
52
- open (fn, " r" ) do io
53
- arr = Mmap. mmap (io, Vector{T})
54
- (z1, z2, z3) = findin (arr, 0 )
55
- f_arr = fastview (arr, 1 : (z1 - 1 ))
56
- f_ind = fastview (arr, (z1 + 1 ): (z2 - 1 ))
57
- b_arr = fastview (arr, (z2 + 1 ): (z3 - 1 ))
58
- b_ind = fastview (arr, (z3 + 1 ): length (arr))
59
- StaticDiGraph {T} (f_arr, f_ind, b_arr, b_ind)
60
- end
31
+ function loadsg (fn:: AbstractString , :: SDGFormat )
32
+ @load fn f_vec f_ind b_vec b_ind
33
+ return StaticGraph (f_vec, f_ind, b_vec, b_ind)
61
34
end
62
35
63
- loadgraph (fn:: AbstractString , gname:: String , s :: T ) where T <: StaticGraphFormat = loadsg (fn, s)
64
- savegraph (fn:: AbstractString , g:: AbstractStaticGraph ) = savesg (fn, g, eltype (g) )
36
+ loadgraph (fn:: AbstractString , gname:: String ) = loadsg (fn, s)
37
+ savegraph (fn:: AbstractString , g:: AbstractStaticGraph ) = savesg (fn, g)
0 commit comments