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