1*44554ea0SWill Pazner# Low-level C API for libCEED 2*44554ea0SWill Pazner 3*44554ea0SWill Paznermodule C 4*44554ea0SWill Pazner 5*44554ea0SWill Paznerusing CEnum, Libdl 6*44554ea0SWill Pazner 7*44554ea0SWill Pazner# Get the path to the libCEED dynamic library, configured during the build step 8*44554ea0SWill Pazner# of the LibCEED.jl package. 9*44554ea0SWill Paznerconst depsfile = joinpath(@__DIR__, "..", "deps", "deps.jl") 10*44554ea0SWill Paznerif !isfile(depsfile) 11*44554ea0SWill Pazner error("LibCEED.jl not properly installed. Please run Pkg.build(\"LibCEED\")") 12*44554ea0SWill Paznerend 13*44554ea0SWill Paznerinclude(depsfile) 14*44554ea0SWill Pazner 15*44554ea0SWill Paznerinclude(joinpath(@__DIR__, "generated", "libceed_common.jl")) 16*44554ea0SWill Paznerinclude(joinpath(@__DIR__, "generated", "libceed_api.jl")) 17*44554ea0SWill Pazner 18*44554ea0SWill Paznerconst CEED_STRIDES_BACKEND = Ref{Ptr{CeedInt}}() 19*44554ea0SWill Paznerconst CEED_BASIS_COLLOCATED = Ref{CeedBasis}() 20*44554ea0SWill Paznerconst CEED_VECTOR_ACTIVE = Ref{CeedVector}() 21*44554ea0SWill Paznerconst CEED_VECTOR_NONE = Ref{CeedVector}() 22*44554ea0SWill Paznerconst CEED_ELEMRESTRICTION_NONE = Ref{CeedElemRestriction}() 23*44554ea0SWill Paznerconst CEED_QFUNCTION_NONE = Ref{CeedQFunction}() 24*44554ea0SWill Paznerconst CEED_REQUEST_IMMEDIATE = Ref{CeedRequest}() 25*44554ea0SWill Paznerconst CEED_REQUEST_ORDERED = Ref{CeedRequest}() 26*44554ea0SWill Pazner 27*44554ea0SWill Paznerfunction __init__() 28*44554ea0SWill Pazner global libceed_handle = dlopen(libceed) 29*44554ea0SWill Pazner # some global variables 30*44554ea0SWill Pazner CEED_STRIDES_BACKEND[] = cglobal((:CEED_STRIDES_BACKEND, libceed)) 31*44554ea0SWill Pazner CEED_BASIS_COLLOCATED[] = 32*44554ea0SWill Pazner unsafe_load(cglobal((:CEED_BASIS_COLLOCATED, libceed), CeedBasis)) 33*44554ea0SWill Pazner CEED_VECTOR_ACTIVE[] = unsafe_load(cglobal((:CEED_VECTOR_ACTIVE, libceed), CeedVector)) 34*44554ea0SWill Pazner CEED_VECTOR_NONE[] = unsafe_load(cglobal((:CEED_VECTOR_NONE, libceed), CeedVector)) 35*44554ea0SWill Pazner CEED_ELEMRESTRICTION_NONE[] = 36*44554ea0SWill Pazner unsafe_load(cglobal((:CEED_ELEMRESTRICTION_NONE, libceed), CeedElemRestriction)) 37*44554ea0SWill Pazner CEED_QFUNCTION_NONE[] = 38*44554ea0SWill Pazner unsafe_load(cglobal((:CEED_QFUNCTION_NONE, libceed), CeedQFunction)) 39*44554ea0SWill Pazner CEED_REQUEST_IMMEDIATE[] = 40*44554ea0SWill Pazner unsafe_load(cglobal((:CEED_REQUEST_IMMEDIATE, libceed), Ptr{CeedRequest})) 41*44554ea0SWill Pazner CEED_REQUEST_ORDERED[] = 42*44554ea0SWill Pazner unsafe_load(cglobal((:CEED_REQUEST_ORDERED, libceed), Ptr{CeedRequest})) 43*44554ea0SWill Paznerend 44*44554ea0SWill Pazner 45*44554ea0SWill Paznerend # module 46