1# Low-level C API for libCEED 2 3module C 4 5using Libdl, libCEED_jll 6 7const UINT_MAX = typemax(Cuint) 8include(joinpath(@__DIR__, "generated", "libceed_bindings.jl")) 9 10const CEED_STRIDES_BACKEND = Ref{Ptr{CeedInt}}() 11const CEED_BASIS_COLLOCATED = Ref{CeedBasis}() 12const CEED_VECTOR_ACTIVE = Ref{CeedVector}() 13const CEED_VECTOR_NONE = Ref{CeedVector}() 14const CEED_ELEMRESTRICTION_NONE = Ref{CeedElemRestriction}() 15const CEED_QFUNCTION_NONE = Ref{CeedQFunction}() 16const CEED_REQUEST_IMMEDIATE = Ref{CeedRequest}() 17const CEED_REQUEST_ORDERED = Ref{CeedRequest}() 18 19function __init__() 20 global libceed_handle = dlopen(libceed) 21 # some global variables 22 CEED_STRIDES_BACKEND[] = cglobal((:CEED_STRIDES_BACKEND, libceed)) 23 CEED_BASIS_COLLOCATED[] = 24 unsafe_load(cglobal((:CEED_BASIS_COLLOCATED, libceed), CeedBasis)) 25 CEED_VECTOR_ACTIVE[] = unsafe_load(cglobal((:CEED_VECTOR_ACTIVE, libceed), CeedVector)) 26 CEED_VECTOR_NONE[] = unsafe_load(cglobal((:CEED_VECTOR_NONE, libceed), CeedVector)) 27 CEED_ELEMRESTRICTION_NONE[] = 28 unsafe_load(cglobal((:CEED_ELEMRESTRICTION_NONE, libceed), CeedElemRestriction)) 29 CEED_QFUNCTION_NONE[] = 30 unsafe_load(cglobal((:CEED_QFUNCTION_NONE, libceed), CeedQFunction)) 31 CEED_REQUEST_IMMEDIATE[] = 32 unsafe_load(cglobal((:CEED_REQUEST_IMMEDIATE, libceed), Ptr{CeedRequest})) 33 CEED_REQUEST_ORDERED[] = 34 unsafe_load(cglobal((:CEED_REQUEST_ORDERED, libceed), Ptr{CeedRequest})) 35end 36 37end # module 38