Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests #6

Merged
merged 5 commits into from
May 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -4,10 +4,12 @@ authors = ["Keluaa <34173752+Keluaa@users.noreply.github.com> and contributors"]
version = "1.0.0"

[deps]
CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82"
SCOTCH_jll = "a8d0f55d-b80e-548d-aff6-1a04c175f0f9"

[compat]
Aqua = "0.7"
CEnum = "0.5"
SCOTCH_jll = "7"
Test = "1"
julia = "1.9"
4 changes: 4 additions & 0 deletions docs/src/index.md
Original file line number Diff line number Diff line change
@@ -49,6 +49,9 @@ Graph
graph_alloc
graph_size
graph_build
graph_base_index
graph_base_index!
graph_data
graph_dump
graph_load
graph_coarsen
@@ -74,6 +77,7 @@ graph_repart
Mesh
mesh_alloc
mesh_build
mesh_data
mesh_load
mesh_graph
mesh_size
83 changes: 44 additions & 39 deletions gen/LibScotch.jl
Original file line number Diff line number Diff line change
@@ -3,6 +3,11 @@ module LibScotch
using SCOTCH_jll
export SCOTCH_jll

using CEnum

const SCOTCH_VERSION_NUM = pkgversion(SCOTCH_jll).major
const SCOTCH_RELEASE_NUM = pkgversion(SCOTCH_jll).minor
const SCOTCH_PATCHLEVEL_NUM = pkgversion(SCOTCH_jll).patch

const SCOTCH_Idx = Cint

@@ -39,7 +44,7 @@ struct SCOTCH_Mapping
end

struct SCOTCH_Ordering
dummy::NTuple{17, Cdouble}
dummy::NTuple{12, Cdouble}
end

struct SCOTCH_Strat
@@ -63,11 +68,11 @@ function SCOTCH_archExit(arg1)
end

function SCOTCH_archLoad(arg1, arg2)
ccall((:SCOTCH_archLoad, libscotch), Cint, (Ptr{SCOTCH_Arch}, Ptr{Cint}), arg1, arg2)
ccall((:SCOTCH_archLoad, libscotch), Cint, (Ptr{SCOTCH_Arch}, Ptr{Libc.FILE}), arg1, arg2)
end

function SCOTCH_archSave(arg1, arg2)
ccall((:SCOTCH_archSave, libscotch), Cint, (Ptr{SCOTCH_Arch}, Ptr{Cint}), arg1, arg2)
ccall((:SCOTCH_archSave, libscotch), Cint, (Ptr{SCOTCH_Arch}, Ptr{Libc.FILE}), arg1, arg2)
end

function SCOTCH_archBuild(arg1, arg2, arg3, arg4, arg5)
@@ -283,11 +288,11 @@ function SCOTCH_graphFree(arg1)
end

function SCOTCH_graphLoad(arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Cint}, SCOTCH_Num, SCOTCH_Num), arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Libc.FILE}, SCOTCH_Num, SCOTCH_Num), arg1, arg2, arg3, arg4)
end

function SCOTCH_graphSave(arg1, arg2)
ccall((:SCOTCH_graphSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Cint}), arg1, arg2)
ccall((:SCOTCH_graphSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Libc.FILE}), arg1, arg2)
end

function SCOTCH_graphBuild(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
@@ -335,35 +340,35 @@ function SCOTCH_graphDiamPV(arg1)
end

function SCOTCH_graphDump(arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphDump, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Cchar}, Ptr{Cchar}, Ptr{Cint}), arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphDump, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{Cchar}, Ptr{Cchar}, Ptr{Libc.FILE}), arg1, arg2, arg3, arg4)
end

function SCOTCH_graphGeomLoadChac(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadChac, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadChac, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomLoadHabo(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadHabo, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadHabo, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomLoadMmkt(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadMmkt, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadMmkt, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomLoadScot(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadScot, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomLoadScot, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomSaveChac(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveChac, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveChac, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomSaveMmkt(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveMmkt, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveMmkt, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphGeomSaveScot(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveScot, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_graphGeomSaveScot, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_graphInduceList(arg1, arg2, arg3, arg4)
@@ -383,11 +388,11 @@ function SCOTCH_graphMapExit(arg1, arg2)
end

function SCOTCH_graphMapLoad(arg1, arg2, arg3)
ccall((:SCOTCH_graphMapLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphMapLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphMapSave(arg1, arg2, arg3)
ccall((:SCOTCH_graphMapSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphMapSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphMapCompute(arg1, arg2, arg3)
@@ -407,7 +412,7 @@ function SCOTCH_graphMapFixed(arg1, arg2, arg3, arg4)
end

function SCOTCH_graphMapView(arg1, arg2, arg3)
ccall((:SCOTCH_graphMapView, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphMapView, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphPart(arg1, arg2, arg3, arg4)
@@ -423,7 +428,7 @@ function SCOTCH_graphPartOvl(arg1, arg2, arg3, arg4)
end

function SCOTCH_graphPartOvlView(arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphPartOvlView, libscotch), Cint, (Ptr{SCOTCH_Graph}, SCOTCH_Num, Ptr{SCOTCH_Num}, Ptr{Cint}), arg1, arg2, arg3, arg4)
ccall((:SCOTCH_graphPartOvlView, libscotch), Cint, (Ptr{SCOTCH_Graph}, SCOTCH_Num, Ptr{SCOTCH_Num}, Ptr{Libc.FILE}), arg1, arg2, arg3, arg4)
end

function SCOTCH_graphRemap(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
@@ -443,11 +448,11 @@ function SCOTCH_graphRemapFixedCompute(arg1, arg2, arg3, arg4, arg5, arg6)
end

function SCOTCH_graphRemapView(arg1, arg2, arg3, arg4, arg5, arg6)
ccall((:SCOTCH_graphRemapView, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{SCOTCH_Mapping}, Cdouble, Ptr{SCOTCH_Num}, Ptr{Cint}), arg1, arg2, arg3, arg4, arg5, arg6)
ccall((:SCOTCH_graphRemapView, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{SCOTCH_Mapping}, Cdouble, Ptr{SCOTCH_Num}, Ptr{Libc.FILE}), arg1, arg2, arg3, arg4, arg5, arg6)
end

function SCOTCH_graphRemapViewRaw(arg1, arg2, arg3, arg4, arg5, arg6)
ccall((:SCOTCH_graphRemapViewRaw, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{SCOTCH_Mapping}, Cdouble, Ptr{SCOTCH_Num}, Ptr{Cint}), arg1, arg2, arg3, arg4, arg5, arg6)
ccall((:SCOTCH_graphRemapViewRaw, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Mapping}, Ptr{SCOTCH_Mapping}, Cdouble, Ptr{SCOTCH_Num}, Ptr{Libc.FILE}), arg1, arg2, arg3, arg4, arg5, arg6)
end

function SCOTCH_graphRepart(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
@@ -459,11 +464,11 @@ function SCOTCH_graphRepartFixed(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
end

function SCOTCH_graphTabLoad(arg1, arg2, arg3)
ccall((:SCOTCH_graphTabLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Num}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphTabLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Num}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphTabSave(arg1, arg2, arg3)
ccall((:SCOTCH_graphTabSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Num}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphTabSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Num}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphOrderInit(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
@@ -475,19 +480,19 @@ function SCOTCH_graphOrderExit(arg1, arg2)
end

function SCOTCH_graphOrderLoad(arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderLoad, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphOrderSave(arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSave, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphOrderSaveMap(arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSaveMap, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSaveMap, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphOrderSaveTree(arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSaveTree, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_graphOrderSaveTree, libscotch), Cint, (Ptr{SCOTCH_Graph}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_graphOrderCompute(arg1, arg2, arg3)
@@ -547,11 +552,11 @@ function SCOTCH_meshExit(arg1)
end

function SCOTCH_meshLoad(arg1, arg2, arg3)
ccall((:SCOTCH_meshLoad, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{Cint}, SCOTCH_Num), arg1, arg2, arg3)
ccall((:SCOTCH_meshLoad, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{Libc.FILE}, SCOTCH_Num), arg1, arg2, arg3)
end

function SCOTCH_meshSave(arg1, arg2)
ccall((:SCOTCH_meshSave, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{Cint}), arg1, arg2)
ccall((:SCOTCH_meshSave, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{Libc.FILE}), arg1, arg2)
end

function SCOTCH_meshBuild(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12)
@@ -583,15 +588,15 @@ function SCOTCH_meshGraphDual(arg1, arg2, arg3)
end

function SCOTCH_meshGeomLoadHabo(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomLoadHabo, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomLoadHabo, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_meshGeomLoadScot(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomLoadScot, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomLoadScot, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_meshGeomSaveScot(arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomSaveScot, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Cint}, Ptr{Cint}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
ccall((:SCOTCH_meshGeomSaveScot, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Geom}, Ptr{Libc.FILE}, Ptr{Libc.FILE}, Ptr{Cchar}), arg1, arg2, arg3, arg4, arg5)
end

function SCOTCH_meshOrderInit(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
@@ -603,15 +608,15 @@ function SCOTCH_meshOrderExit(arg1, arg2)
end

function SCOTCH_meshOrderSave(arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSave, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSave, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_meshOrderSaveMap(arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSaveMap, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSaveMap, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_meshOrderSaveTree(arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSaveTree, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Cint}), arg1, arg2, arg3)
ccall((:SCOTCH_meshOrderSaveTree, libscotch), Cint, (Ptr{SCOTCH_Mesh}, Ptr{SCOTCH_Ordering}, Ptr{Libc.FILE}), arg1, arg2, arg3)
end

function SCOTCH_meshOrderCompute(arg1, arg2, arg3)
@@ -647,11 +652,11 @@ function SCOTCH_orderSizeof()
end

function SCOTCH_randomLoad(arg1)
ccall((:SCOTCH_randomLoad, libscotch), Cint, (Ptr{Cint},), arg1)
ccall((:SCOTCH_randomLoad, libscotch), Cint, (Ptr{Libc.FILE},), arg1)
end

function SCOTCH_randomSave(arg1)
ccall((:SCOTCH_randomSave, libscotch), Cint, (Ptr{Cint},), arg1)
ccall((:SCOTCH_randomSave, libscotch), Cint, (Ptr{Libc.FILE},), arg1)
end

function SCOTCH_randomProc(arg1)
@@ -691,7 +696,7 @@ function SCOTCH_stratFree(arg1)
end

function SCOTCH_stratSave(arg1, arg2)
ccall((:SCOTCH_stratSave, libscotch), Cint, (Ptr{SCOTCH_Strat}, Ptr{Cint}), arg1, arg2)
ccall((:SCOTCH_stratSave, libscotch), Cint, (Ptr{SCOTCH_Strat}, Ptr{Libc.FILE}), arg1, arg2)
end

function SCOTCH_stratGraphBipart(arg1, arg2)
@@ -742,11 +747,11 @@ end

const SCOTCH_NUMSTRING = "%d"

const SCOTCH_VERSION = 7
const SCOTCH_VERSION = SCOTCH_VERSION_NUM

const SCOTCH_RELEASE = 0
const SCOTCH_RELEASE = SCOTCH_RELEASE_NUM

const SCOTCH_PATCHLEVEL = 4
const SCOTCH_PATCHLEVEL = SCOTCH_PATCHLEVEL_NUM

const SCOTCH_OPTIONNUMDETERMINISTIC = 0

1 change: 1 addition & 0 deletions gen/generator.toml
Original file line number Diff line number Diff line change
@@ -4,3 +4,4 @@ output_file_path = "./LibScotch.jl"
module_name = "LibScotch"
jll_pkg_name = "SCOTCH_jll"
export_symbol_prefixes = ["SCOTCH_"]
prologue_file_path = "./prologue.jl"
4 changes: 4 additions & 0 deletions gen/include_stdio.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

#include <stdio.h>

#include "scotch.h"
3 changes: 3 additions & 0 deletions gen/prologue.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const SCOTCH_VERSION_NUM = pkgversion(SCOTCH_jll).major
const SCOTCH_RELEASE_NUM = pkgversion(SCOTCH_jll).minor
const SCOTCH_PATCHLEVEL_NUM = pkgversion(SCOTCH_jll).patch
3 changes: 2 additions & 1 deletion gen/scotch_gen.jl
Original file line number Diff line number Diff line change
@@ -11,7 +11,8 @@ options = load_options(joinpath(@__DIR__, "generator.toml"))
args = get_default_args()
push!(args, "-I$include_dir")

headers = [joinpath(include_dir, "scotch.h")]
# 'scotch.h' does not include 'stdio.h' and therefore references to 'FILE*' are undefined.
headers = [joinpath(@__DIR__, "include_stdio.h")]

ctx = create_context(headers, args, options)

12 changes: 9 additions & 3 deletions src/Scotch.jl
Original file line number Diff line number Diff line change
@@ -38,11 +38,17 @@ end
macro check(call)
!Base.isexpr(call, :call) && error("expected function call, got: $call")
func_name = call.args[1]

# Unwrap `LibScotch.func_name` to `func_name`
while Base.isexpr(func_name, :., 2)
func_name = func_name.args[2]
func_name isa QuoteNode && (func_name = func_name.value)
end

error_str = Expr(:string, "call to ", string(func_name), " returned ", :ret)
return esc(quote
ret = $call
if ret != 0
error("SCOTCH call to $(func_name) returned $ret")
end
ret != 0 && error($error_str)
end)
end

20 changes: 14 additions & 6 deletions src/arch.jl
Original file line number Diff line number Diff line change
@@ -32,14 +32,15 @@ end

"""
arch_load(filename::AbstractString)
arch_load(file::IOStream)
arch_load(file::IO)

Load a new [`Arch`](@ref) from the given file. See `SCOTCH_archLoad`.
"""
function arch_load(file::IOStream)
function arch_load(file::IO)
arch = arch_alloc()
fd_ptr = Ref(Cint(fd(file)))
@check LibScotch.SCOTCH_archLoad(arch, fd_ptr)
raw_file = Base.Libc.FILE(file)
@check LibScotch.SCOTCH_archLoad(arch, raw_file)
close(raw_file)
return arch
end

@@ -51,8 +52,15 @@ function arch_load(filename::AbstractString)
end


function save(arch::Arch, file::IOStream)
@check LibScotch.SCOTCH_archSave(arch, file)
"""
save(arch::Arch, file::IO)

Save the `arch` to `file` using `SCOTCH_archSave`.
"""
function save(arch::Arch, file::IO)
raw_file = Base.Libc.FILE(file)
@check LibScotch.SCOTCH_archSave(arch, raw_file)
close(raw_file)
return arch
end

Loading
Loading