xref: /libCEED/julia/LibCEED.jl/src/C.jl (revision 80a9ef0545a39c00cdcaab1ca26f8053604f3120)
144554ea0SWill Pazner# Low-level C API for libCEED
244554ea0SWill Pazner
344554ea0SWill Paznermodule C
444554ea0SWill Pazner
5*80a9ef05SNatalie Beamsusing Libdl, libCEED_jll, Preferences
6*80a9ef05SNatalie Beamsusing libCEED_jll: libceed, libceed_handle
744554ea0SWill Pazner
8*80a9ef05SNatalie Beamsconst CeedScalar =
9*80a9ef05SNatalie Beams    @load_preference("CeedScalar", "Float64") == "Float64" ? Float64 : Float32
10ec672a92SWill Paznerconst UINT_MAX = typemax(Cuint)
11ec672a92SWill Paznerinclude(joinpath(@__DIR__, "generated", "libceed_bindings.jl"))
1244554ea0SWill Pazner
1344554ea0SWill Paznerconst CEED_STRIDES_BACKEND = Ref{Ptr{CeedInt}}()
1444554ea0SWill Paznerconst CEED_BASIS_COLLOCATED = Ref{CeedBasis}()
1544554ea0SWill Paznerconst CEED_VECTOR_ACTIVE = Ref{CeedVector}()
1644554ea0SWill Paznerconst CEED_VECTOR_NONE = Ref{CeedVector}()
1744554ea0SWill Paznerconst CEED_ELEMRESTRICTION_NONE = Ref{CeedElemRestriction}()
1844554ea0SWill Paznerconst CEED_QFUNCTION_NONE = Ref{CeedQFunction}()
1944554ea0SWill Paznerconst CEED_REQUEST_IMMEDIATE = Ref{CeedRequest}()
2044554ea0SWill Paznerconst CEED_REQUEST_ORDERED = Ref{CeedRequest}()
2144554ea0SWill Pazner
2244554ea0SWill Paznerfunction __init__()
2344554ea0SWill Pazner    # some global variables
2444554ea0SWill Pazner    CEED_STRIDES_BACKEND[] = cglobal((:CEED_STRIDES_BACKEND, libceed))
2544554ea0SWill Pazner    CEED_BASIS_COLLOCATED[] =
2644554ea0SWill Pazner        unsafe_load(cglobal((:CEED_BASIS_COLLOCATED, libceed), CeedBasis))
2744554ea0SWill Pazner    CEED_VECTOR_ACTIVE[] = unsafe_load(cglobal((:CEED_VECTOR_ACTIVE, libceed), CeedVector))
2844554ea0SWill Pazner    CEED_VECTOR_NONE[] = unsafe_load(cglobal((:CEED_VECTOR_NONE, libceed), CeedVector))
2944554ea0SWill Pazner    CEED_ELEMRESTRICTION_NONE[] =
3044554ea0SWill Pazner        unsafe_load(cglobal((:CEED_ELEMRESTRICTION_NONE, libceed), CeedElemRestriction))
3144554ea0SWill Pazner    CEED_QFUNCTION_NONE[] =
3244554ea0SWill Pazner        unsafe_load(cglobal((:CEED_QFUNCTION_NONE, libceed), CeedQFunction))
3344554ea0SWill Pazner    CEED_REQUEST_IMMEDIATE[] =
3444554ea0SWill Pazner        unsafe_load(cglobal((:CEED_REQUEST_IMMEDIATE, libceed), Ptr{CeedRequest}))
3544554ea0SWill Pazner    CEED_REQUEST_ORDERED[] =
3644554ea0SWill Pazner        unsafe_load(cglobal((:CEED_REQUEST_ORDERED, libceed), Ptr{CeedRequest}))
3744554ea0SWill Paznerend
3844554ea0SWill Pazner
3944554ea0SWill Paznerend # module
40