xref: /libCEED/julia/LibCEED.jl/src/generated/libceed_bindings.jl (revision 28d09c206720ba8516c835daf824672e3380cdbd)
1using CEnum
2
3#! format: off
4
5
6const CeedInt = Int32
7
8@cenum CeedScalarType::UInt32 begin
9    CEED_SCALAR_FP32 = 0
10    CEED_SCALAR_FP64 = 1
11end
12
13mutable struct Ceed_private end
14
15const Ceed = Ptr{Ceed_private}
16
17mutable struct CeedRequest_private end
18
19const CeedRequest = Ptr{CeedRequest_private}
20
21mutable struct CeedVector_private end
22
23const CeedVector = Ptr{CeedVector_private}
24
25mutable struct CeedElemRestriction_private end
26
27const CeedElemRestriction = Ptr{CeedElemRestriction_private}
28
29mutable struct CeedBasis_private end
30
31const CeedBasis = Ptr{CeedBasis_private}
32
33mutable struct CeedQFunctionField_private end
34
35const CeedQFunctionField = Ptr{CeedQFunctionField_private}
36
37mutable struct CeedQFunction_private end
38
39const CeedQFunction = Ptr{CeedQFunction_private}
40
41mutable struct CeedOperatorField_private end
42
43const CeedOperatorField = Ptr{CeedOperatorField_private}
44
45mutable struct CeedQFunctionContext_private end
46
47const CeedQFunctionContext = Ptr{CeedQFunctionContext_private}
48
49mutable struct CeedOperator_private end
50
51const CeedOperator = Ptr{CeedOperator_private}
52
53function CeedRegistryGetList(n, resources, array)
54    ccall((:CeedRegistryGetList, libceed), Cint, (Ptr{Csize_t}, Ptr{Ptr{Ptr{Cchar}}}, Ptr{Ptr{CeedInt}}), n, resources, array)
55end
56
57function CeedInit(resource, ceed)
58    ccall((:CeedInit, libceed), Cint, (Ptr{Cchar}, Ptr{Ceed}), resource, ceed)
59end
60
61function CeedReferenceCopy(ceed, ceed_copy)
62    ccall((:CeedReferenceCopy, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, ceed_copy)
63end
64
65function CeedGetResource(ceed, resource)
66    ccall((:CeedGetResource, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), ceed, resource)
67end
68
69function CeedIsDeterministic(ceed, is_deterministic)
70    ccall((:CeedIsDeterministic, libceed), Cint, (Ceed, Ptr{Bool}), ceed, is_deterministic)
71end
72
73function CeedView(ceed, stream)
74    ccall((:CeedView, libceed), Cint, (Ceed, Ptr{Libc.FILE}), ceed, stream)
75end
76
77function CeedDestroy(ceed)
78    ccall((:CeedDestroy, libceed), Cint, (Ptr{Ceed},), ceed)
79end
80
81# automatic type deduction for variadic arguments may not be what you want, please use with caution
82@generated function CeedErrorImpl(arg1, arg2, arg3, arg4, arg5, arg6, va_list...)
83        :(@ccall(libceed.CeedErrorImpl(arg1::Ceed, arg2::Ptr{Cchar}, arg3::Cint, arg4::Ptr{Cchar}, arg5::Cint, arg6::Ptr{Cchar}; $(to_c_type_pairs(va_list)...))::Cint))
84    end
85
86# typedef int ( * CeedErrorHandler ) ( Ceed , const char * , int , const char * , int , const char * , va_list * )
87const CeedErrorHandler = Ptr{Cvoid}
88
89function CeedSetErrorHandler(ceed, eh)
90    ccall((:CeedSetErrorHandler, libceed), Cint, (Ceed, CeedErrorHandler), ceed, eh)
91end
92
93function CeedGetErrorMessage(arg1, err_msg)
94    ccall((:CeedGetErrorMessage, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), arg1, err_msg)
95end
96
97function CeedResetErrorMessage(arg1, err_msg)
98    ccall((:CeedResetErrorMessage, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), arg1, err_msg)
99end
100
101function CeedGetVersion(major, minor, patch, release)
102    ccall((:CeedGetVersion, libceed), Cint, (Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Bool}), major, minor, patch, release)
103end
104
105function CeedGetScalarType(scalar_type)
106    ccall((:CeedGetScalarType, libceed), Cint, (Ptr{CeedScalarType},), scalar_type)
107end
108
109@cenum CeedErrorType::Int32 begin
110    CEED_ERROR_SUCCESS = 0
111    CEED_ERROR_MINOR = 1
112    CEED_ERROR_DIMENSION = 2
113    CEED_ERROR_INCOMPLETE = 3
114    CEED_ERROR_INCOMPATIBLE = 4
115    CEED_ERROR_ACCESS = 5
116    CEED_ERROR_MAJOR = -1
117    CEED_ERROR_BACKEND = -2
118    CEED_ERROR_UNSUPPORTED = -3
119end
120
121@cenum CeedMemType::UInt32 begin
122    CEED_MEM_HOST = 0
123    CEED_MEM_DEVICE = 1
124end
125
126function CeedGetPreferredMemType(ceed, type)
127    ccall((:CeedGetPreferredMemType, libceed), Cint, (Ceed, Ptr{CeedMemType}), ceed, type)
128end
129
130@cenum CeedCopyMode::UInt32 begin
131    CEED_COPY_VALUES = 0
132    CEED_USE_POINTER = 1
133    CEED_OWN_POINTER = 2
134end
135
136@cenum CeedNormType::UInt32 begin
137    CEED_NORM_1 = 0
138    CEED_NORM_2 = 1
139    CEED_NORM_MAX = 2
140end
141
142function CeedVectorCreate(ceed, len, vec)
143    ccall((:CeedVectorCreate, libceed), Cint, (Ceed, CeedInt, Ptr{CeedVector}), ceed, len, vec)
144end
145
146function CeedVectorReferenceCopy(vec, vec_copy)
147    ccall((:CeedVectorReferenceCopy, libceed), Cint, (CeedVector, Ptr{CeedVector}), vec, vec_copy)
148end
149
150function CeedVectorSetArray(vec, mem_type, copy_mode, array)
151    ccall((:CeedVectorSetArray, libceed), Cint, (CeedVector, CeedMemType, CeedCopyMode, Ptr{CeedScalar}), vec, mem_type, copy_mode, array)
152end
153
154function CeedVectorSetValue(vec, value)
155    ccall((:CeedVectorSetValue, libceed), Cint, (CeedVector, CeedScalar), vec, value)
156end
157
158function CeedVectorSyncArray(vec, mem_type)
159    ccall((:CeedVectorSyncArray, libceed), Cint, (CeedVector, CeedMemType), vec, mem_type)
160end
161
162function CeedVectorTakeArray(vec, mem_type, array)
163    ccall((:CeedVectorTakeArray, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
164end
165
166function CeedVectorGetArray(vec, mem_type, array)
167    ccall((:CeedVectorGetArray, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
168end
169
170function CeedVectorGetArrayRead(vec, mem_type, array)
171    ccall((:CeedVectorGetArrayRead, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
172end
173
174function CeedVectorRestoreArray(vec, array)
175    ccall((:CeedVectorRestoreArray, libceed), Cint, (CeedVector, Ptr{Ptr{CeedScalar}}), vec, array)
176end
177
178function CeedVectorRestoreArrayRead(vec, array)
179    ccall((:CeedVectorRestoreArrayRead, libceed), Cint, (CeedVector, Ptr{Ptr{CeedScalar}}), vec, array)
180end
181
182function CeedVectorNorm(vec, type, norm)
183    ccall((:CeedVectorNorm, libceed), Cint, (CeedVector, CeedNormType, Ptr{CeedScalar}), vec, type, norm)
184end
185
186function CeedVectorScale(x, alpha)
187    ccall((:CeedVectorScale, libceed), Cint, (CeedVector, CeedScalar), x, alpha)
188end
189
190function CeedVectorAXPY(y, alpha, x)
191    ccall((:CeedVectorAXPY, libceed), Cint, (CeedVector, CeedScalar, CeedVector), y, alpha, x)
192end
193
194function CeedVectorPointwiseMult(w, x, y)
195    ccall((:CeedVectorPointwiseMult, libceed), Cint, (CeedVector, CeedVector, CeedVector), w, x, y)
196end
197
198function CeedVectorReciprocal(vec)
199    ccall((:CeedVectorReciprocal, libceed), Cint, (CeedVector,), vec)
200end
201
202function CeedVectorView(vec, fp_fmt, stream)
203    ccall((:CeedVectorView, libceed), Cint, (CeedVector, Ptr{Cchar}, Ptr{Libc.FILE}), vec, fp_fmt, stream)
204end
205
206function CeedVectorGetLength(vec, length)
207    ccall((:CeedVectorGetLength, libceed), Cint, (CeedVector, Ptr{CeedInt}), vec, length)
208end
209
210function CeedVectorDestroy(vec)
211    ccall((:CeedVectorDestroy, libceed), Cint, (Ptr{CeedVector},), vec)
212end
213
214function CeedRequestWait(req)
215    ccall((:CeedRequestWait, libceed), Cint, (Ptr{CeedRequest},), req)
216end
217
218@cenum CeedTransposeMode::UInt32 begin
219    CEED_NOTRANSPOSE = 0
220    CEED_TRANSPOSE = 1
221end
222
223function CeedElemRestrictionCreate(ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
224    ccall((:CeedElemRestrictionCreate, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
225end
226
227function CeedElemRestrictionCreateStrided(ceed, num_elem, elem_size, num_comp, l_size, strides, rstr)
228    ccall((:CeedElemRestrictionCreateStrided, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, l_size, strides, rstr)
229end
230
231function CeedElemRestrictionCreateBlocked(ceed, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
232    ccall((:CeedElemRestrictionCreateBlocked, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, blk_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
233end
234
235function CeedElemRestrictionCreateBlockedStrided(ceed, num_elem, elem_size, blk_size, num_comp, l_size, strides, rstr)
236    ccall((:CeedElemRestrictionCreateBlockedStrided, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, blk_size, num_comp, l_size, strides, rstr)
237end
238
239function CeedElemRestrictionReferenceCopy(rstr, rstr_copy)
240    ccall((:CeedElemRestrictionReferenceCopy, libceed), Cint, (CeedElemRestriction, Ptr{CeedElemRestriction}), rstr, rstr_copy)
241end
242
243function CeedElemRestrictionCreateVector(rstr, lvec, evec)
244    ccall((:CeedElemRestrictionCreateVector, libceed), Cint, (CeedElemRestriction, Ptr{CeedVector}, Ptr{CeedVector}), rstr, lvec, evec)
245end
246
247function CeedElemRestrictionApply(rstr, t_mode, u, ru, request)
248    ccall((:CeedElemRestrictionApply, libceed), Cint, (CeedElemRestriction, CeedTransposeMode, CeedVector, CeedVector, Ptr{CeedRequest}), rstr, t_mode, u, ru, request)
249end
250
251function CeedElemRestrictionApplyBlock(rstr, block, t_mode, u, ru, request)
252    ccall((:CeedElemRestrictionApplyBlock, libceed), Cint, (CeedElemRestriction, CeedInt, CeedTransposeMode, CeedVector, CeedVector, Ptr{CeedRequest}), rstr, block, t_mode, u, ru, request)
253end
254
255function CeedElemRestrictionGetCompStride(rstr, comp_stride)
256    ccall((:CeedElemRestrictionGetCompStride, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, comp_stride)
257end
258
259function CeedElemRestrictionGetNumElements(rstr, num_elem)
260    ccall((:CeedElemRestrictionGetNumElements, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_elem)
261end
262
263function CeedElemRestrictionGetElementSize(rstr, elem_size)
264    ccall((:CeedElemRestrictionGetElementSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, elem_size)
265end
266
267function CeedElemRestrictionGetLVectorSize(rstr, l_size)
268    ccall((:CeedElemRestrictionGetLVectorSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, l_size)
269end
270
271function CeedElemRestrictionGetNumComponents(rstr, num_comp)
272    ccall((:CeedElemRestrictionGetNumComponents, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_comp)
273end
274
275function CeedElemRestrictionGetNumBlocks(rstr, num_blk)
276    ccall((:CeedElemRestrictionGetNumBlocks, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_blk)
277end
278
279function CeedElemRestrictionGetBlockSize(rstr, blk_size)
280    ccall((:CeedElemRestrictionGetBlockSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, blk_size)
281end
282
283function CeedElemRestrictionGetMultiplicity(rstr, mult)
284    ccall((:CeedElemRestrictionGetMultiplicity, libceed), Cint, (CeedElemRestriction, CeedVector), rstr, mult)
285end
286
287function CeedElemRestrictionView(rstr, stream)
288    ccall((:CeedElemRestrictionView, libceed), Cint, (CeedElemRestriction, Ptr{Libc.FILE}), rstr, stream)
289end
290
291function CeedElemRestrictionDestroy(rstr)
292    ccall((:CeedElemRestrictionDestroy, libceed), Cint, (Ptr{CeedElemRestriction},), rstr)
293end
294
295@cenum CeedEvalMode::UInt32 begin
296    CEED_EVAL_NONE = 0
297    CEED_EVAL_INTERP = 1
298    CEED_EVAL_GRAD = 2
299    CEED_EVAL_DIV = 4
300    CEED_EVAL_CURL = 8
301    CEED_EVAL_WEIGHT = 16
302end
303
304@cenum CeedQuadMode::UInt32 begin
305    CEED_GAUSS = 0
306    CEED_GAUSS_LOBATTO = 1
307end
308
309@cenum CeedElemTopology::UInt32 begin
310    CEED_LINE = 65536
311    CEED_TRIANGLE = 131073
312    CEED_QUAD = 131074
313    CEED_TET = 196611
314    CEED_PYRAMID = 196612
315    CEED_PRISM = 196613
316    CEED_HEX = 196614
317end
318
319function CeedBasisCreateTensorH1Lagrange(ceed, dim, num_comp, P, Q, quad_mode, basis)
320    ccall((:CeedBasisCreateTensorH1Lagrange, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedQuadMode, Ptr{CeedBasis}), ceed, dim, num_comp, P, Q, quad_mode, basis)
321end
322
323function CeedBasisCreateTensorH1(ceed, dim, num_comp, P_1d, Q_1d, interp_1d, grad_1d, q_ref_1d, q_weight_1d, basis)
324    ccall((:CeedBasisCreateTensorH1, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedBasis}), ceed, dim, num_comp, P_1d, Q_1d, interp_1d, grad_1d, q_ref_1d, q_weight_1d, basis)
325end
326
327function CeedBasisCreateH1(ceed, topo, num_comp, num_nodes, nqpts, interp, grad, q_ref, q_weights, basis)
328    ccall((:CeedBasisCreateH1, libceed), Cint, (Ceed, CeedElemTopology, CeedInt, CeedInt, CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedBasis}), ceed, topo, num_comp, num_nodes, nqpts, interp, grad, q_ref, q_weights, basis)
329end
330
331function CeedBasisReferenceCopy(basis, basis_copy)
332    ccall((:CeedBasisReferenceCopy, libceed), Cint, (CeedBasis, Ptr{CeedBasis}), basis, basis_copy)
333end
334
335function CeedBasisView(basis, stream)
336    ccall((:CeedBasisView, libceed), Cint, (CeedBasis, Ptr{Libc.FILE}), basis, stream)
337end
338
339function CeedBasisApply(basis, num_elem, t_mode, eval_mode, u, v)
340    ccall((:CeedBasisApply, libceed), Cint, (CeedBasis, CeedInt, CeedTransposeMode, CeedEvalMode, CeedVector, CeedVector), basis, num_elem, t_mode, eval_mode, u, v)
341end
342
343function CeedBasisGetDimension(basis, dim)
344    ccall((:CeedBasisGetDimension, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, dim)
345end
346
347function CeedBasisGetTopology(basis, topo)
348    ccall((:CeedBasisGetTopology, libceed), Cint, (CeedBasis, Ptr{CeedElemTopology}), basis, topo)
349end
350
351function CeedBasisGetNumComponents(basis, num_comp)
352    ccall((:CeedBasisGetNumComponents, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, num_comp)
353end
354
355function CeedBasisGetNumNodes(basis, P)
356    ccall((:CeedBasisGetNumNodes, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, P)
357end
358
359function CeedBasisGetNumNodes1D(basis, P_1d)
360    ccall((:CeedBasisGetNumNodes1D, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, P_1d)
361end
362
363function CeedBasisGetNumQuadraturePoints(basis, Q)
364    ccall((:CeedBasisGetNumQuadraturePoints, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, Q)
365end
366
367function CeedBasisGetNumQuadraturePoints1D(basis, Q_1d)
368    ccall((:CeedBasisGetNumQuadraturePoints1D, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, Q_1d)
369end
370
371function CeedBasisGetQRef(basis, q_ref)
372    ccall((:CeedBasisGetQRef, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, q_ref)
373end
374
375function CeedBasisGetQWeights(basis, q_weights)
376    ccall((:CeedBasisGetQWeights, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, q_weights)
377end
378
379function CeedBasisGetInterp(basis, interp)
380    ccall((:CeedBasisGetInterp, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, interp)
381end
382
383function CeedBasisGetInterp1D(basis, interp_1d)
384    ccall((:CeedBasisGetInterp1D, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, interp_1d)
385end
386
387function CeedBasisGetGrad(basis, grad)
388    ccall((:CeedBasisGetGrad, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, grad)
389end
390
391function CeedBasisGetGrad1D(basis, grad_1d)
392    ccall((:CeedBasisGetGrad1D, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, grad_1d)
393end
394
395function CeedBasisDestroy(basis)
396    ccall((:CeedBasisDestroy, libceed), Cint, (Ptr{CeedBasis},), basis)
397end
398
399function CeedGaussQuadrature(Q, q_ref_1d, q_weight_1d)
400    ccall((:CeedGaussQuadrature, libceed), Cint, (CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), Q, q_ref_1d, q_weight_1d)
401end
402
403function CeedLobattoQuadrature(Q, q_ref_1d, q_weight_1d)
404    ccall((:CeedLobattoQuadrature, libceed), Cint, (CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), Q, q_ref_1d, q_weight_1d)
405end
406
407function CeedQRFactorization(ceed, mat, tau, m, n)
408    ccall((:CeedQRFactorization, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt, CeedInt), ceed, mat, tau, m, n)
409end
410
411function CeedSymmetricSchurDecomposition(ceed, mat, lambda, n)
412    ccall((:CeedSymmetricSchurDecomposition, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt), ceed, mat, lambda, n)
413end
414
415function CeedSimultaneousDiagonalization(ceed, mat_A, mat_B, x, lambda, n)
416    ccall((:CeedSimultaneousDiagonalization, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt), ceed, mat_A, mat_B, x, lambda, n)
417end
418
419# typedef int ( * CeedQFunctionUser ) ( void * ctx , const CeedInt Q , const CeedScalar * const * in , CeedScalar * const * out )
420const CeedQFunctionUser = Ptr{Cvoid}
421
422function CeedQFunctionCreateInterior(ceed, vec_length, f, source, qf)
423    ccall((:CeedQFunctionCreateInterior, libceed), Cint, (Ceed, CeedInt, CeedQFunctionUser, Ptr{Cchar}, Ptr{CeedQFunction}), ceed, vec_length, f, source, qf)
424end
425
426function CeedQFunctionCreateInteriorByName(ceed, name, qf)
427    ccall((:CeedQFunctionCreateInteriorByName, libceed), Cint, (Ceed, Ptr{Cchar}, Ptr{CeedQFunction}), ceed, name, qf)
428end
429
430function CeedQFunctionCreateIdentity(ceed, size, in_mode, out_mode, qf)
431    ccall((:CeedQFunctionCreateIdentity, libceed), Cint, (Ceed, CeedInt, CeedEvalMode, CeedEvalMode, Ptr{CeedQFunction}), ceed, size, in_mode, out_mode, qf)
432end
433
434function CeedQFunctionReferenceCopy(qf, qf_copy)
435    ccall((:CeedQFunctionReferenceCopy, libceed), Cint, (CeedQFunction, Ptr{CeedQFunction}), qf, qf_copy)
436end
437
438function CeedQFunctionAddInput(qf, field_name, size, eval_mode)
439    ccall((:CeedQFunctionAddInput, libceed), Cint, (CeedQFunction, Ptr{Cchar}, CeedInt, CeedEvalMode), qf, field_name, size, eval_mode)
440end
441
442function CeedQFunctionAddOutput(qf, field_name, size, eval_mode)
443    ccall((:CeedQFunctionAddOutput, libceed), Cint, (CeedQFunction, Ptr{Cchar}, CeedInt, CeedEvalMode), qf, field_name, size, eval_mode)
444end
445
446function CeedQFunctionGetFields(qf, num_input_fields, input_fields, num_output_fields, output_fields)
447    ccall((:CeedQFunctionGetFields, libceed), Cint, (CeedQFunction, Ptr{CeedInt}, Ptr{Ptr{CeedQFunctionField}}, Ptr{CeedInt}, Ptr{Ptr{CeedQFunctionField}}), qf, num_input_fields, input_fields, num_output_fields, output_fields)
448end
449
450function CeedQFunctionSetContext(qf, ctx)
451    ccall((:CeedQFunctionSetContext, libceed), Cint, (CeedQFunction, CeedQFunctionContext), qf, ctx)
452end
453
454function CeedQFunctionView(qf, stream)
455    ccall((:CeedQFunctionView, libceed), Cint, (CeedQFunction, Ptr{Libc.FILE}), qf, stream)
456end
457
458function CeedQFunctionApply(qf, Q, u, v)
459    ccall((:CeedQFunctionApply, libceed), Cint, (CeedQFunction, CeedInt, Ptr{CeedVector}, Ptr{CeedVector}), qf, Q, u, v)
460end
461
462function CeedQFunctionDestroy(qf)
463    ccall((:CeedQFunctionDestroy, libceed), Cint, (Ptr{CeedQFunction},), qf)
464end
465
466function CeedQFunctionFieldGetName(qf_field, field_name)
467    ccall((:CeedQFunctionFieldGetName, libceed), Cint, (CeedQFunctionField, Ptr{Ptr{Cchar}}), qf_field, field_name)
468end
469
470function CeedQFunctionFieldGetSize(qf_field, size)
471    ccall((:CeedQFunctionFieldGetSize, libceed), Cint, (CeedQFunctionField, Ptr{CeedInt}), qf_field, size)
472end
473
474function CeedQFunctionFieldGetEvalMode(qf_field, eval_mode)
475    ccall((:CeedQFunctionFieldGetEvalMode, libceed), Cint, (CeedQFunctionField, Ptr{CeedEvalMode}), qf_field, eval_mode)
476end
477
478function CeedQFunctionContextCreate(ceed, ctx)
479    ccall((:CeedQFunctionContextCreate, libceed), Cint, (Ceed, Ptr{CeedQFunctionContext}), ceed, ctx)
480end
481
482function CeedQFunctionContextReferenceCopy(ctx, ctx_copy)
483    ccall((:CeedQFunctionContextReferenceCopy, libceed), Cint, (CeedQFunctionContext, Ptr{CeedQFunctionContext}), ctx, ctx_copy)
484end
485
486function CeedQFunctionContextSetData(ctx, mem_type, copy_mode, size, data)
487    ccall((:CeedQFunctionContextSetData, libceed), Cint, (CeedQFunctionContext, CeedMemType, CeedCopyMode, Csize_t, Ptr{Cvoid}), ctx, mem_type, copy_mode, size, data)
488end
489
490function CeedQFunctionContextTakeData(ctx, mem_type, data)
491    ccall((:CeedQFunctionContextTakeData, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Cvoid}), ctx, mem_type, data)
492end
493
494function CeedQFunctionContextGetData(ctx, mem_type, data)
495    ccall((:CeedQFunctionContextGetData, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Cvoid}), ctx, mem_type, data)
496end
497
498function CeedQFunctionContextRestoreData(ctx, data)
499    ccall((:CeedQFunctionContextRestoreData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
500end
501
502function CeedQFunctionContextGetContextSize(ctx, ctx_size)
503    ccall((:CeedQFunctionContextGetContextSize, libceed), Cint, (CeedQFunctionContext, Ptr{Csize_t}), ctx, ctx_size)
504end
505
506function CeedQFunctionContextView(ctx, stream)
507    ccall((:CeedQFunctionContextView, libceed), Cint, (CeedQFunctionContext, Ptr{Libc.FILE}), ctx, stream)
508end
509
510function CeedQFunctionContextDestroy(ctx)
511    ccall((:CeedQFunctionContextDestroy, libceed), Cint, (Ptr{CeedQFunctionContext},), ctx)
512end
513
514function CeedOperatorCreate(ceed, qf, dqf, dqfT, op)
515    ccall((:CeedOperatorCreate, libceed), Cint, (Ceed, CeedQFunction, CeedQFunction, CeedQFunction, Ptr{CeedOperator}), ceed, qf, dqf, dqfT, op)
516end
517
518function CeedCompositeOperatorCreate(ceed, op)
519    ccall((:CeedCompositeOperatorCreate, libceed), Cint, (Ceed, Ptr{CeedOperator}), ceed, op)
520end
521
522function CeedOperatorReferenceCopy(op, op_copy)
523    ccall((:CeedOperatorReferenceCopy, libceed), Cint, (CeedOperator, Ptr{CeedOperator}), op, op_copy)
524end
525
526function CeedOperatorSetField(op, field_name, r, b, v)
527    ccall((:CeedOperatorSetField, libceed), Cint, (CeedOperator, Ptr{Cchar}, CeedElemRestriction, CeedBasis, CeedVector), op, field_name, r, b, v)
528end
529
530function CeedOperatorGetFields(op, num_input_fields, input_fields, num_output_fields, output_fields)
531    ccall((:CeedOperatorGetFields, libceed), Cint, (CeedOperator, Ptr{CeedInt}, Ptr{Ptr{CeedOperatorField}}, Ptr{CeedInt}, Ptr{Ptr{CeedOperatorField}}), op, num_input_fields, input_fields, num_output_fields, output_fields)
532end
533
534function CeedCompositeOperatorAddSub(composite_op, sub_op)
535    ccall((:CeedCompositeOperatorAddSub, libceed), Cint, (CeedOperator, CeedOperator), composite_op, sub_op)
536end
537
538function CeedOperatorLinearAssembleQFunction(op, assembled, rstr, request)
539    ccall((:CeedOperatorLinearAssembleQFunction, libceed), Cint, (CeedOperator, Ptr{CeedVector}, Ptr{CeedElemRestriction}, Ptr{CeedRequest}), op, assembled, rstr, request)
540end
541
542function CeedOperatorLinearAssembleDiagonal(op, assembled, request)
543    ccall((:CeedOperatorLinearAssembleDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
544end
545
546function CeedOperatorLinearAssembleAddDiagonal(op, assembled, request)
547    ccall((:CeedOperatorLinearAssembleAddDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
548end
549
550function CeedOperatorLinearAssemblePointBlockDiagonal(op, assembled, request)
551    ccall((:CeedOperatorLinearAssemblePointBlockDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
552end
553
554function CeedOperatorLinearAssembleAddPointBlockDiagonal(op, assembled, request)
555    ccall((:CeedOperatorLinearAssembleAddPointBlockDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
556end
557
558function CeedOperatorLinearAssembleSymbolic(op, num_entries, rows, cols)
559    ccall((:CeedOperatorLinearAssembleSymbolic, libceed), Cint, (CeedOperator, Ptr{CeedInt}, Ptr{Ptr{CeedInt}}, Ptr{Ptr{CeedInt}}), op, num_entries, rows, cols)
560end
561
562function CeedOperatorLinearAssemble(op, values)
563    ccall((:CeedOperatorLinearAssemble, libceed), Cint, (CeedOperator, CeedVector), op, values)
564end
565
566function CeedOperatorMultigridLevelCreate(op_fine, p_mult_fine, rstr_coarse, basis_coarse, op_coarse, op_prolong, op_restrict)
567    ccall((:CeedOperatorMultigridLevelCreate, libceed), Cint, (CeedOperator, CeedVector, CeedElemRestriction, CeedBasis, Ptr{CeedOperator}, Ptr{CeedOperator}, Ptr{CeedOperator}), op_fine, p_mult_fine, rstr_coarse, basis_coarse, op_coarse, op_prolong, op_restrict)
568end
569
570function CeedOperatorMultigridLevelCreateTensorH1(op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
571    ccall((:CeedOperatorMultigridLevelCreateTensorH1, libceed), Cint, (CeedOperator, CeedVector, CeedElemRestriction, CeedBasis, Ptr{CeedScalar}, Ptr{CeedOperator}, Ptr{CeedOperator}, Ptr{CeedOperator}), op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
572end
573
574function CeedOperatorMultigridLevelCreateH1(op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
575    ccall((:CeedOperatorMultigridLevelCreateH1, libceed), Cint, (CeedOperator, CeedVector, CeedElemRestriction, CeedBasis, Ptr{CeedScalar}, Ptr{CeedOperator}, Ptr{CeedOperator}, Ptr{CeedOperator}), op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
576end
577
578function CeedOperatorCreateFDMElementInverse(op, fdm_inv, request)
579    ccall((:CeedOperatorCreateFDMElementInverse, libceed), Cint, (CeedOperator, Ptr{CeedOperator}, Ptr{CeedRequest}), op, fdm_inv, request)
580end
581
582function CeedOperatorSetNumQuadraturePoints(op, num_qpts)
583    ccall((:CeedOperatorSetNumQuadraturePoints, libceed), Cint, (CeedOperator, CeedInt), op, num_qpts)
584end
585
586function CeedOperatorView(op, stream)
587    ccall((:CeedOperatorView, libceed), Cint, (CeedOperator, Ptr{Libc.FILE}), op, stream)
588end
589
590function CeedOperatorApply(op, in, out, request)
591    ccall((:CeedOperatorApply, libceed), Cint, (CeedOperator, CeedVector, CeedVector, Ptr{CeedRequest}), op, in, out, request)
592end
593
594function CeedOperatorApplyAdd(op, in, out, request)
595    ccall((:CeedOperatorApplyAdd, libceed), Cint, (CeedOperator, CeedVector, CeedVector, Ptr{CeedRequest}), op, in, out, request)
596end
597
598function CeedOperatorDestroy(op)
599    ccall((:CeedOperatorDestroy, libceed), Cint, (Ptr{CeedOperator},), op)
600end
601
602function CeedOperatorFieldGetName(op_field, field_name)
603    ccall((:CeedOperatorFieldGetName, libceed), Cint, (CeedOperatorField, Ptr{Ptr{Cchar}}), op_field, field_name)
604end
605
606function CeedOperatorFieldGetElemRestriction(op_field, rstr)
607    ccall((:CeedOperatorFieldGetElemRestriction, libceed), Cint, (CeedOperatorField, Ptr{CeedElemRestriction}), op_field, rstr)
608end
609
610function CeedOperatorFieldGetBasis(op_field, basis)
611    ccall((:CeedOperatorFieldGetBasis, libceed), Cint, (CeedOperatorField, Ptr{CeedBasis}), op_field, basis)
612end
613
614function CeedOperatorFieldGetVector(op_field, vec)
615    ccall((:CeedOperatorFieldGetVector, libceed), Cint, (CeedOperatorField, Ptr{CeedVector}), op_field, vec)
616end
617
618function CeedIntPow(base, power)
619    ccall((:CeedIntPow, libceed), CeedInt, (CeedInt, CeedInt), base, power)
620end
621
622function CeedIntMin(a, b)
623    ccall((:CeedIntMin, libceed), CeedInt, (CeedInt, CeedInt), a, b)
624end
625
626function CeedIntMax(a, b)
627    ccall((:CeedIntMax, libceed), CeedInt, (CeedInt, CeedInt), a, b)
628end
629
630function CeedRegisterAll()
631    ccall((:CeedRegisterAll, libceed), Cint, ())
632end
633
634function CeedQFunctionRegisterAll()
635    ccall((:CeedQFunctionRegisterAll, libceed), Cint, ())
636end
637
638function CeedQFunctionSetCUDAUserFunction(qf, f)
639    ccall((:CeedQFunctionSetCUDAUserFunction, libceed), Cint, (CeedQFunction, Cint), qf, f)
640end
641
642# automatic type deduction for variadic arguments may not be what you want, please use with caution
643@generated function CeedDebugImpl(arg1, arg2, va_list...)
644        :(@ccall(libceed.CeedDebugImpl(arg1::Ceed, arg2::Ptr{Cchar}; $(to_c_type_pairs(va_list)...))::Cvoid))
645    end
646
647# automatic type deduction for variadic arguments may not be what you want, please use with caution
648@generated function CeedDebugImpl256(arg1, arg2, arg3, va_list...)
649        :(@ccall(libceed.CeedDebugImpl256(arg1::Ceed, arg2::Cuchar, arg3::Ptr{Cchar}; $(to_c_type_pairs(va_list)...))::Cvoid))
650    end
651
652mutable struct CeedTensorContract_private end
653
654const CeedTensorContract = Ptr{CeedTensorContract_private}
655
656function CeedMallocArray(n, unit, p)
657    ccall((:CeedMallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
658end
659
660function CeedCallocArray(n, unit, p)
661    ccall((:CeedCallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
662end
663
664function CeedReallocArray(n, unit, p)
665    ccall((:CeedReallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
666end
667
668function CeedFree(p)
669    ccall((:CeedFree, libceed), Cint, (Ptr{Cvoid},), p)
670end
671
672function CeedRegister(prefix, init, priority)
673    ccall((:CeedRegister, libceed), Cint, (Ptr{Cchar}, Ptr{Cvoid}, Cuint), prefix, init, priority)
674end
675
676function CeedIsDebug(ceed, is_debug)
677    ccall((:CeedIsDebug, libceed), Cint, (Ceed, Ptr{Bool}), ceed, is_debug)
678end
679
680function CeedGetParent(ceed, parent)
681    ccall((:CeedGetParent, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, parent)
682end
683
684function CeedGetDelegate(ceed, delegate)
685    ccall((:CeedGetDelegate, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, delegate)
686end
687
688function CeedSetDelegate(ceed, delegate)
689    ccall((:CeedSetDelegate, libceed), Cint, (Ceed, Ceed), ceed, delegate)
690end
691
692function CeedGetObjectDelegate(ceed, delegate, obj_name)
693    ccall((:CeedGetObjectDelegate, libceed), Cint, (Ceed, Ptr{Ceed}, Ptr{Cchar}), ceed, delegate, obj_name)
694end
695
696function CeedSetObjectDelegate(ceed, delegate, obj_name)
697    ccall((:CeedSetObjectDelegate, libceed), Cint, (Ceed, Ceed, Ptr{Cchar}), ceed, delegate, obj_name)
698end
699
700function CeedOperatorCheckReady(op)
701    ccall((:CeedOperatorCheckReady, libceed), Cint, (CeedOperator,), op)
702end
703
704function CeedOperatorGetActiveBasis(op, active_basis)
705    ccall((:CeedOperatorGetActiveBasis, libceed), Cint, (CeedOperator, Ptr{CeedBasis}), op, active_basis)
706end
707
708function CeedOperatorGetActiveElemRestriction(op, active_rstr)
709    ccall((:CeedOperatorGetActiveElemRestriction, libceed), Cint, (CeedOperator, Ptr{CeedElemRestriction}), op, active_rstr)
710end
711
712function CeedGetOperatorFallbackResource(ceed, resource)
713    ccall((:CeedGetOperatorFallbackResource, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), ceed, resource)
714end
715
716function CeedSetOperatorFallbackResource(ceed, resource)
717    ccall((:CeedSetOperatorFallbackResource, libceed), Cint, (Ceed, Ptr{Cchar}), ceed, resource)
718end
719
720function CeedGetOperatorFallbackParentCeed(ceed, parent)
721    ccall((:CeedGetOperatorFallbackParentCeed, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, parent)
722end
723
724function CeedSetDeterministic(ceed, is_deterministic)
725    ccall((:CeedSetDeterministic, libceed), Cint, (Ceed, Bool), ceed, is_deterministic)
726end
727
728function CeedSetBackendFunction(ceed, type, object, func_name, f)
729    ccall((:CeedSetBackendFunction, libceed), Cint, (Ceed, Ptr{Cchar}, Ptr{Cvoid}, Ptr{Cchar}, Ptr{Cvoid}), ceed, type, object, func_name, f)
730end
731
732function CeedGetData(ceed, data)
733    ccall((:CeedGetData, libceed), Cint, (Ceed, Ptr{Cvoid}), ceed, data)
734end
735
736function CeedSetData(ceed, data)
737    ccall((:CeedSetData, libceed), Cint, (Ceed, Ptr{Cvoid}), ceed, data)
738end
739
740function CeedReference(ceed)
741    ccall((:CeedReference, libceed), Cint, (Ceed,), ceed)
742end
743
744function CeedVectorGetCeed(vec, ceed)
745    ccall((:CeedVectorGetCeed, libceed), Cint, (CeedVector, Ptr{Ceed}), vec, ceed)
746end
747
748function CeedVectorGetState(vec, state)
749    ccall((:CeedVectorGetState, libceed), Cint, (CeedVector, Ptr{UInt64}), vec, state)
750end
751
752function CeedVectorAddReference(vec)
753    ccall((:CeedVectorAddReference, libceed), Cint, (CeedVector,), vec)
754end
755
756function CeedVectorGetData(vec, data)
757    ccall((:CeedVectorGetData, libceed), Cint, (CeedVector, Ptr{Cvoid}), vec, data)
758end
759
760function CeedVectorSetData(vec, data)
761    ccall((:CeedVectorSetData, libceed), Cint, (CeedVector, Ptr{Cvoid}), vec, data)
762end
763
764function CeedVectorReference(vec)
765    ccall((:CeedVectorReference, libceed), Cint, (CeedVector,), vec)
766end
767
768function CeedElemRestrictionGetCeed(rstr, ceed)
769    ccall((:CeedElemRestrictionGetCeed, libceed), Cint, (CeedElemRestriction, Ptr{Ceed}), rstr, ceed)
770end
771
772function CeedElemRestrictionGetStrides(rstr, strides)
773    ccall((:CeedElemRestrictionGetStrides, libceed), Cint, (CeedElemRestriction, Ptr{NTuple{3, CeedInt}}), rstr, strides)
774end
775
776function CeedElemRestrictionGetOffsets(rstr, mem_type, offsets)
777    ccall((:CeedElemRestrictionGetOffsets, libceed), Cint, (CeedElemRestriction, CeedMemType, Ptr{Ptr{CeedInt}}), rstr, mem_type, offsets)
778end
779
780function CeedElemRestrictionRestoreOffsets(rstr, offsets)
781    ccall((:CeedElemRestrictionRestoreOffsets, libceed), Cint, (CeedElemRestriction, Ptr{Ptr{CeedInt}}), rstr, offsets)
782end
783
784function CeedElemRestrictionIsStrided(rstr, is_strided)
785    ccall((:CeedElemRestrictionIsStrided, libceed), Cint, (CeedElemRestriction, Ptr{Bool}), rstr, is_strided)
786end
787
788function CeedElemRestrictionHasBackendStrides(rstr, has_backend_strides)
789    ccall((:CeedElemRestrictionHasBackendStrides, libceed), Cint, (CeedElemRestriction, Ptr{Bool}), rstr, has_backend_strides)
790end
791
792function CeedElemRestrictionGetELayout(rstr, layout)
793    ccall((:CeedElemRestrictionGetELayout, libceed), Cint, (CeedElemRestriction, Ptr{NTuple{3, CeedInt}}), rstr, layout)
794end
795
796function CeedElemRestrictionSetELayout(rstr, layout)
797    ccall((:CeedElemRestrictionSetELayout, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, layout)
798end
799
800function CeedElemRestrictionGetData(rstr, data)
801    ccall((:CeedElemRestrictionGetData, libceed), Cint, (CeedElemRestriction, Ptr{Cvoid}), rstr, data)
802end
803
804function CeedElemRestrictionSetData(rstr, data)
805    ccall((:CeedElemRestrictionSetData, libceed), Cint, (CeedElemRestriction, Ptr{Cvoid}), rstr, data)
806end
807
808function CeedElemRestrictionReference(rstr)
809    ccall((:CeedElemRestrictionReference, libceed), Cint, (CeedElemRestriction,), rstr)
810end
811
812function CeedBasisGetCollocatedGrad(basis, colo_grad_1d)
813    ccall((:CeedBasisGetCollocatedGrad, libceed), Cint, (CeedBasis, Ptr{CeedScalar}), basis, colo_grad_1d)
814end
815
816function CeedHouseholderApplyQ(A, Q, tau, t_mode, m, n, k, row, col)
817    ccall((:CeedHouseholderApplyQ, libceed), Cint, (Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedTransposeMode, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt), A, Q, tau, t_mode, m, n, k, row, col)
818end
819
820function CeedBasisGetCeed(basis, ceed)
821    ccall((:CeedBasisGetCeed, libceed), Cint, (CeedBasis, Ptr{Ceed}), basis, ceed)
822end
823
824function CeedBasisIsTensor(basis, is_tensor)
825    ccall((:CeedBasisIsTensor, libceed), Cint, (CeedBasis, Ptr{Bool}), basis, is_tensor)
826end
827
828function CeedBasisGetData(basis, data)
829    ccall((:CeedBasisGetData, libceed), Cint, (CeedBasis, Ptr{Cvoid}), basis, data)
830end
831
832function CeedBasisSetData(basis, data)
833    ccall((:CeedBasisSetData, libceed), Cint, (CeedBasis, Ptr{Cvoid}), basis, data)
834end
835
836function CeedBasisReference(basis)
837    ccall((:CeedBasisReference, libceed), Cint, (CeedBasis,), basis)
838end
839
840function CeedBasisGetTopologyDimension(topo, dim)
841    ccall((:CeedBasisGetTopologyDimension, libceed), Cint, (CeedElemTopology, Ptr{CeedInt}), topo, dim)
842end
843
844function CeedBasisGetTensorContract(basis, contract)
845    ccall((:CeedBasisGetTensorContract, libceed), Cint, (CeedBasis, Ptr{CeedTensorContract}), basis, contract)
846end
847
848function CeedBasisSetTensorContract(basis, contract)
849    ccall((:CeedBasisSetTensorContract, libceed), Cint, (CeedBasis, CeedTensorContract), basis, contract)
850end
851
852function CeedTensorContractCreate(ceed, basis, contract)
853    ccall((:CeedTensorContractCreate, libceed), Cint, (Ceed, CeedBasis, Ptr{CeedTensorContract}), ceed, basis, contract)
854end
855
856function CeedTensorContractApply(contract, A, B, C, J, t, t_mode, Add, u, v)
857    ccall((:CeedTensorContractApply, libceed), Cint, (CeedTensorContract, CeedInt, CeedInt, CeedInt, CeedInt, Ptr{CeedScalar}, CeedTransposeMode, CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), contract, A, B, C, J, t, t_mode, Add, u, v)
858end
859
860function CeedTensorContractGetCeed(contract, ceed)
861    ccall((:CeedTensorContractGetCeed, libceed), Cint, (CeedTensorContract, Ptr{Ceed}), contract, ceed)
862end
863
864function CeedTensorContractGetData(contract, data)
865    ccall((:CeedTensorContractGetData, libceed), Cint, (CeedTensorContract, Ptr{Cvoid}), contract, data)
866end
867
868function CeedTensorContractSetData(contract, data)
869    ccall((:CeedTensorContractSetData, libceed), Cint, (CeedTensorContract, Ptr{Cvoid}), contract, data)
870end
871
872function CeedTensorContractReference(contract)
873    ccall((:CeedTensorContractReference, libceed), Cint, (CeedTensorContract,), contract)
874end
875
876function CeedTensorContractDestroy(contract)
877    ccall((:CeedTensorContractDestroy, libceed), Cint, (Ptr{CeedTensorContract},), contract)
878end
879
880function CeedQFunctionRegister(arg1, arg2, arg3, arg4, init)
881    ccall((:CeedQFunctionRegister, libceed), Cint, (Ptr{Cchar}, Ptr{Cchar}, CeedInt, CeedQFunctionUser, Ptr{Cvoid}), arg1, arg2, arg3, arg4, init)
882end
883
884function CeedQFunctionSetFortranStatus(qf, status)
885    ccall((:CeedQFunctionSetFortranStatus, libceed), Cint, (CeedQFunction, Bool), qf, status)
886end
887
888function CeedQFunctionGetCeed(qf, ceed)
889    ccall((:CeedQFunctionGetCeed, libceed), Cint, (CeedQFunction, Ptr{Ceed}), qf, ceed)
890end
891
892function CeedQFunctionGetVectorLength(qf, vec_length)
893    ccall((:CeedQFunctionGetVectorLength, libceed), Cint, (CeedQFunction, Ptr{CeedInt}), qf, vec_length)
894end
895
896function CeedQFunctionGetNumArgs(qf, num_input_fields, num_output_fields)
897    ccall((:CeedQFunctionGetNumArgs, libceed), Cint, (CeedQFunction, Ptr{CeedInt}, Ptr{CeedInt}), qf, num_input_fields, num_output_fields)
898end
899
900function CeedQFunctionGetSourcePath(qf, source)
901    ccall((:CeedQFunctionGetSourcePath, libceed), Cint, (CeedQFunction, Ptr{Ptr{Cchar}}), qf, source)
902end
903
904function CeedQFunctionGetUserFunction(qf, f)
905    ccall((:CeedQFunctionGetUserFunction, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionUser}), qf, f)
906end
907
908function CeedQFunctionGetContext(qf, ctx)
909    ccall((:CeedQFunctionGetContext, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionContext}), qf, ctx)
910end
911
912function CeedQFunctionGetInnerContext(qf, ctx)
913    ccall((:CeedQFunctionGetInnerContext, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionContext}), qf, ctx)
914end
915
916function CeedQFunctionIsIdentity(qf, is_identity)
917    ccall((:CeedQFunctionIsIdentity, libceed), Cint, (CeedQFunction, Ptr{Bool}), qf, is_identity)
918end
919
920function CeedQFunctionGetData(qf, data)
921    ccall((:CeedQFunctionGetData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
922end
923
924function CeedQFunctionSetData(qf, data)
925    ccall((:CeedQFunctionSetData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
926end
927
928function CeedQFunctionReference(qf)
929    ccall((:CeedQFunctionReference, libceed), Cint, (CeedQFunction,), qf)
930end
931
932function CeedQFunctionContextGetCeed(cxt, ceed)
933    ccall((:CeedQFunctionContextGetCeed, libceed), Cint, (CeedQFunctionContext, Ptr{Ceed}), cxt, ceed)
934end
935
936function CeedQFunctionContextGetState(ctx, state)
937    ccall((:CeedQFunctionContextGetState, libceed), Cint, (CeedQFunctionContext, Ptr{UInt64}), ctx, state)
938end
939
940function CeedQFunctionContextGetBackendData(ctx, data)
941    ccall((:CeedQFunctionContextGetBackendData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
942end
943
944function CeedQFunctionContextSetBackendData(ctx, data)
945    ccall((:CeedQFunctionContextSetBackendData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
946end
947
948function CeedQFunctionContextReference(ctx)
949    ccall((:CeedQFunctionContextReference, libceed), Cint, (CeedQFunctionContext,), ctx)
950end
951
952function CeedOperatorGetCeed(op, ceed)
953    ccall((:CeedOperatorGetCeed, libceed), Cint, (CeedOperator, Ptr{Ceed}), op, ceed)
954end
955
956function CeedOperatorGetNumElements(op, num_elem)
957    ccall((:CeedOperatorGetNumElements, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_elem)
958end
959
960function CeedOperatorGetNumQuadraturePoints(op, num_qpts)
961    ccall((:CeedOperatorGetNumQuadraturePoints, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_qpts)
962end
963
964function CeedOperatorGetNumArgs(op, num_args)
965    ccall((:CeedOperatorGetNumArgs, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_args)
966end
967
968function CeedOperatorIsSetupDone(op, is_setup_done)
969    ccall((:CeedOperatorIsSetupDone, libceed), Cint, (CeedOperator, Ptr{Bool}), op, is_setup_done)
970end
971
972function CeedOperatorGetQFunction(op, qf)
973    ccall((:CeedOperatorGetQFunction, libceed), Cint, (CeedOperator, Ptr{CeedQFunction}), op, qf)
974end
975
976function CeedOperatorIsComposite(op, is_composite)
977    ccall((:CeedOperatorIsComposite, libceed), Cint, (CeedOperator, Ptr{Bool}), op, is_composite)
978end
979
980function CeedOperatorGetNumSub(op, num_suboperators)
981    ccall((:CeedOperatorGetNumSub, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_suboperators)
982end
983
984function CeedOperatorGetSubList(op, sub_operators)
985    ccall((:CeedOperatorGetSubList, libceed), Cint, (CeedOperator, Ptr{Ptr{CeedOperator}}), op, sub_operators)
986end
987
988function CeedOperatorGetData(op, data)
989    ccall((:CeedOperatorGetData, libceed), Cint, (CeedOperator, Ptr{Cvoid}), op, data)
990end
991
992function CeedOperatorSetData(op, data)
993    ccall((:CeedOperatorSetData, libceed), Cint, (CeedOperator, Ptr{Cvoid}), op, data)
994end
995
996function CeedOperatorReference(op)
997    ccall((:CeedOperatorReference, libceed), Cint, (CeedOperator,), op)
998end
999
1000function CeedOperatorSetSetupDone(op)
1001    ccall((:CeedOperatorSetSetupDone, libceed), Cint, (CeedOperator,), op)
1002end
1003
1004function CeedMatrixMultiply(ceed, mat_A, mat_B, mat_C, m, n, kk)
1005    ccall((:CeedMatrixMultiply, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt, CeedInt, CeedInt), ceed, mat_A, mat_B, mat_C, m, n, kk)
1006end
1007
1008# Skipping MacroDefinition: CEED_EXTERN extern
1009
1010# Skipping MacroDefinition: CEED_QFUNCTION_HELPER static inline
1011
1012const CEED_VERSION_MAJOR = 0
1013
1014const CEED_VERSION_MINOR = 9
1015
1016const CEED_VERSION_PATCH = 0
1017
1018const CEED_VERSION_RELEASE = false
1019
1020# Skipping MacroDefinition: CEED_INTERN CEED_EXTERN __attribute__ ( ( visibility ( "hidden" ) ) )
1021
1022# Skipping MacroDefinition: CEED_UNUSED __attribute__ ( ( unused ) )
1023
1024const CEED_MAX_RESOURCE_LEN = 1024
1025
1026const CEED_MAX_BACKEND_PRIORITY = UINT_MAX
1027
1028const CEED_COMPOSITE_MAX = 16
1029
1030# Skipping MacroDefinition: CeedPragmaOptimizeOff _Pragma ( "clang optimize off" )
1031
1032# Skipping MacroDefinition: CeedPragmaOptimizeOn _Pragma ( "clang optimize on" )
1033
1034const CEED_DEBUG_COLOR = 0
1035