xref: /libCEED/julia/LibCEED.jl/src/generated/libceed_bindings.jl (revision 4b3e95d5da7d4d1a3e8f0acb9d6f6cc36918381b)
1using CEnum
2
3#! format: off
4
5
6const CeedInt = Int32
7
8const CeedSize = Cptrdiff_t
9
10const CeedInt8 = Int8
11
12@cenum CeedScalarType::UInt32 begin
13    CEED_SCALAR_FP32 = 0
14    CEED_SCALAR_FP64 = 1
15end
16
17@cenum CeedErrorType::Int32 begin
18    CEED_ERROR_SUCCESS = 0
19    CEED_ERROR_MINOR = 1
20    CEED_ERROR_DIMENSION = 2
21    CEED_ERROR_INCOMPLETE = 3
22    CEED_ERROR_INCOMPATIBLE = 4
23    CEED_ERROR_ACCESS = 5
24    CEED_ERROR_MAJOR = -1
25    CEED_ERROR_BACKEND = -2
26    CEED_ERROR_UNSUPPORTED = -3
27end
28
29@cenum CeedMemType::UInt32 begin
30    CEED_MEM_HOST = 0
31    CEED_MEM_DEVICE = 1
32end
33
34@cenum CeedCopyMode::UInt32 begin
35    CEED_COPY_VALUES = 0
36    CEED_USE_POINTER = 1
37    CEED_OWN_POINTER = 2
38end
39
40@cenum CeedNormType::UInt32 begin
41    CEED_NORM_1 = 0
42    CEED_NORM_2 = 1
43    CEED_NORM_MAX = 2
44end
45
46@cenum CeedTransposeMode::UInt32 begin
47    CEED_NOTRANSPOSE = 0
48    CEED_TRANSPOSE = 1
49end
50
51@cenum CeedEvalMode::UInt32 begin
52    CEED_EVAL_NONE = 0
53    CEED_EVAL_INTERP = 1
54    CEED_EVAL_GRAD = 2
55    CEED_EVAL_DIV = 4
56    CEED_EVAL_CURL = 8
57    CEED_EVAL_WEIGHT = 16
58end
59
60@cenum CeedQuadMode::UInt32 begin
61    CEED_GAUSS = 0
62    CEED_GAUSS_LOBATTO = 1
63end
64
65@cenum CeedElemTopology::UInt32 begin
66    CEED_TOPOLOGY_LINE = 65536
67    CEED_TOPOLOGY_TRIANGLE = 131073
68    CEED_TOPOLOGY_QUAD = 131074
69    CEED_TOPOLOGY_TET = 196611
70    CEED_TOPOLOGY_PYRAMID = 196612
71    CEED_TOPOLOGY_PRISM = 196613
72    CEED_TOPOLOGY_HEX = 196614
73end
74
75@cenum CeedContextFieldType::UInt32 begin
76    CEED_CONTEXT_FIELD_DOUBLE = 1
77    CEED_CONTEXT_FIELD_INT32 = 2
78end
79
80mutable struct Ceed_private end
81
82const Ceed = Ptr{Ceed_private}
83
84mutable struct CeedRequest_private end
85
86const CeedRequest = Ptr{CeedRequest_private}
87
88mutable struct CeedVector_private end
89
90const CeedVector = Ptr{CeedVector_private}
91
92mutable struct CeedElemRestriction_private end
93
94const CeedElemRestriction = Ptr{CeedElemRestriction_private}
95
96mutable struct CeedBasis_private end
97
98const CeedBasis = Ptr{CeedBasis_private}
99
100mutable struct CeedQFunctionField_private end
101
102const CeedQFunctionField = Ptr{CeedQFunctionField_private}
103
104mutable struct CeedQFunction_private end
105
106const CeedQFunction = Ptr{CeedQFunction_private}
107
108mutable struct CeedOperatorField_private end
109
110const CeedOperatorField = Ptr{CeedOperatorField_private}
111
112mutable struct CeedQFunctionContext_private end
113
114const CeedQFunctionContext = Ptr{CeedQFunctionContext_private}
115
116mutable struct CeedContextFieldLabel_private end
117
118const CeedContextFieldLabel = Ptr{CeedContextFieldLabel_private}
119
120mutable struct CeedOperator_private end
121
122const CeedOperator = Ptr{CeedOperator_private}
123
124function CeedRegistryGetList(n, resources, array)
125    ccall((:CeedRegistryGetList, libceed), Cint, (Ptr{Csize_t}, Ptr{Ptr{Ptr{Cchar}}}, Ptr{Ptr{CeedInt}}), n, resources, array)
126end
127
128function CeedInit(resource, ceed)
129    ccall((:CeedInit, libceed), Cint, (Ptr{Cchar}, Ptr{Ceed}), resource, ceed)
130end
131
132function CeedSetStream(ceed, handle)
133    ccall((:CeedSetStream, libceed), Cint, (Ceed, Ptr{Cvoid}), ceed, handle)
134end
135
136function CeedReferenceCopy(ceed, ceed_copy)
137    ccall((:CeedReferenceCopy, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, ceed_copy)
138end
139
140function CeedGetResource(ceed, resource)
141    ccall((:CeedGetResource, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), ceed, resource)
142end
143
144function CeedIsDeterministic(ceed, is_deterministic)
145    ccall((:CeedIsDeterministic, libceed), Cint, (Ceed, Ptr{Bool}), ceed, is_deterministic)
146end
147
148function CeedAddJitSourceRoot(ceed, jit_source_root)
149    ccall((:CeedAddJitSourceRoot, libceed), Cint, (Ceed, Ptr{Cchar}), ceed, jit_source_root)
150end
151
152function CeedView(ceed, stream)
153    ccall((:CeedView, libceed), Cint, (Ceed, Ptr{Libc.FILE}), ceed, stream)
154end
155
156function CeedDestroy(ceed)
157    ccall((:CeedDestroy, libceed), Cint, (Ptr{Ceed},), ceed)
158end
159
160# typedef int ( * CeedErrorHandler ) ( Ceed , const char * , int , const char * , int , const char * , va_list * )
161const CeedErrorHandler = Ptr{Cvoid}
162
163function CeedSetErrorHandler(ceed, eh)
164    ccall((:CeedSetErrorHandler, libceed), Cint, (Ceed, CeedErrorHandler), ceed, eh)
165end
166
167function CeedGetErrorMessage(arg1, err_msg)
168    ccall((:CeedGetErrorMessage, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), arg1, err_msg)
169end
170
171function CeedResetErrorMessage(arg1, err_msg)
172    ccall((:CeedResetErrorMessage, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), arg1, err_msg)
173end
174
175function CeedGetVersion(major, minor, patch, release)
176    ccall((:CeedGetVersion, libceed), Cint, (Ptr{Cint}, Ptr{Cint}, Ptr{Cint}, Ptr{Bool}), major, minor, patch, release)
177end
178
179function CeedGetScalarType(scalar_type)
180    ccall((:CeedGetScalarType, libceed), Cint, (Ptr{CeedScalarType},), scalar_type)
181end
182
183function CeedGetPreferredMemType(ceed, type)
184    ccall((:CeedGetPreferredMemType, libceed), Cint, (Ceed, Ptr{CeedMemType}), ceed, type)
185end
186
187function CeedVectorCreate(ceed, len, vec)
188    ccall((:CeedVectorCreate, libceed), Cint, (Ceed, CeedSize, Ptr{CeedVector}), ceed, len, vec)
189end
190
191function CeedVectorReferenceCopy(vec, vec_copy)
192    ccall((:CeedVectorReferenceCopy, libceed), Cint, (CeedVector, Ptr{CeedVector}), vec, vec_copy)
193end
194
195function CeedVectorCopy(vec, vec_copy)
196    ccall((:CeedVectorCopy, libceed), Cint, (CeedVector, CeedVector), vec, vec_copy)
197end
198
199function CeedVectorSetArray(vec, mem_type, copy_mode, array)
200    ccall((:CeedVectorSetArray, libceed), Cint, (CeedVector, CeedMemType, CeedCopyMode, Ptr{CeedScalar}), vec, mem_type, copy_mode, array)
201end
202
203function CeedVectorSetValue(vec, value)
204    ccall((:CeedVectorSetValue, libceed), Cint, (CeedVector, CeedScalar), vec, value)
205end
206
207function CeedVectorSyncArray(vec, mem_type)
208    ccall((:CeedVectorSyncArray, libceed), Cint, (CeedVector, CeedMemType), vec, mem_type)
209end
210
211function CeedVectorTakeArray(vec, mem_type, array)
212    ccall((:CeedVectorTakeArray, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
213end
214
215function CeedVectorGetArray(vec, mem_type, array)
216    ccall((:CeedVectorGetArray, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
217end
218
219function CeedVectorGetArrayRead(vec, mem_type, array)
220    ccall((:CeedVectorGetArrayRead, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
221end
222
223function CeedVectorGetArrayWrite(vec, mem_type, array)
224    ccall((:CeedVectorGetArrayWrite, libceed), Cint, (CeedVector, CeedMemType, Ptr{Ptr{CeedScalar}}), vec, mem_type, array)
225end
226
227function CeedVectorRestoreArray(vec, array)
228    ccall((:CeedVectorRestoreArray, libceed), Cint, (CeedVector, Ptr{Ptr{CeedScalar}}), vec, array)
229end
230
231function CeedVectorRestoreArrayRead(vec, array)
232    ccall((:CeedVectorRestoreArrayRead, libceed), Cint, (CeedVector, Ptr{Ptr{CeedScalar}}), vec, array)
233end
234
235function CeedVectorNorm(vec, type, norm)
236    ccall((:CeedVectorNorm, libceed), Cint, (CeedVector, CeedNormType, Ptr{CeedScalar}), vec, type, norm)
237end
238
239function CeedVectorScale(x, alpha)
240    ccall((:CeedVectorScale, libceed), Cint, (CeedVector, CeedScalar), x, alpha)
241end
242
243function CeedVectorAXPY(y, alpha, x)
244    ccall((:CeedVectorAXPY, libceed), Cint, (CeedVector, CeedScalar, CeedVector), y, alpha, x)
245end
246
247function CeedVectorAXPBY(y, alpha, beta, x)
248    ccall((:CeedVectorAXPBY, libceed), Cint, (CeedVector, CeedScalar, CeedScalar, CeedVector), y, alpha, beta, x)
249end
250
251function CeedVectorPointwiseMult(w, x, y)
252    ccall((:CeedVectorPointwiseMult, libceed), Cint, (CeedVector, CeedVector, CeedVector), w, x, y)
253end
254
255function CeedVectorReciprocal(vec)
256    ccall((:CeedVectorReciprocal, libceed), Cint, (CeedVector,), vec)
257end
258
259function CeedVectorViewRange(vec, start, stop, step, fp_fmt, stream)
260    ccall((:CeedVectorViewRange, libceed), Cint, (CeedVector, CeedSize, CeedSize, CeedInt, Ptr{Cchar}, Ptr{Libc.FILE}), vec, start, stop, step, fp_fmt, stream)
261end
262
263function CeedVectorView(vec, fp_fmt, stream)
264    ccall((:CeedVectorView, libceed), Cint, (CeedVector, Ptr{Cchar}, Ptr{Libc.FILE}), vec, fp_fmt, stream)
265end
266
267function CeedVectorGetCeed(vec, ceed)
268    ccall((:CeedVectorGetCeed, libceed), Cint, (CeedVector, Ptr{Ceed}), vec, ceed)
269end
270
271function CeedVectorGetLength(vec, length)
272    ccall((:CeedVectorGetLength, libceed), Cint, (CeedVector, Ptr{CeedSize}), vec, length)
273end
274
275function CeedVectorDestroy(vec)
276    ccall((:CeedVectorDestroy, libceed), Cint, (Ptr{CeedVector},), vec)
277end
278
279function CeedRequestWait(req)
280    ccall((:CeedRequestWait, libceed), Cint, (Ptr{CeedRequest},), req)
281end
282
283function CeedElemRestrictionCreate(ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
284    ccall((:CeedElemRestrictionCreate, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
285end
286
287function CeedElemRestrictionCreateOriented(ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, orients, rstr)
288    ccall((:CeedElemRestrictionCreateOriented, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{Bool}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, orients, rstr)
289end
290
291function CeedElemRestrictionCreateCurlOriented(ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, curl_orients, rstr)
292    ccall((:CeedElemRestrictionCreateCurlOriented, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedInt8}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, curl_orients, rstr)
293end
294
295function CeedElemRestrictionCreateStrided(ceed, num_elem, elem_size, num_comp, l_size, strides, rstr)
296    ccall((:CeedElemRestrictionCreateStrided, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedSize, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, num_comp, l_size, strides, rstr)
297end
298
299function CeedElemRestrictionCreateAtPoints(ceed, num_elem, num_points, num_comp, l_size, mem_type, copy_mode, offsets, rstr)
300    ccall((:CeedElemRestrictionCreateAtPoints, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, num_points, num_comp, l_size, mem_type, copy_mode, offsets, rstr)
301end
302
303function CeedElemRestrictionCreateBlocked(ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
304    ccall((:CeedElemRestrictionCreateBlocked, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, rstr)
305end
306
307function CeedElemRestrictionCreateBlockedOriented(ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, orients, rstr)
308    ccall((:CeedElemRestrictionCreateBlockedOriented, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{Bool}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, orients, rstr)
309end
310
311function CeedElemRestrictionCreateBlockedCurlOriented(ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, curl_orients, rstr)
312    ccall((:CeedElemRestrictionCreateBlockedCurlOriented, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, CeedMemType, CeedCopyMode, Ptr{CeedInt}, Ptr{CeedInt8}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, block_size, num_comp, comp_stride, l_size, mem_type, copy_mode, offsets, curl_orients, rstr)
313end
314
315function CeedElemRestrictionCreateBlockedStrided(ceed, num_elem, elem_size, block_size, num_comp, l_size, strides, rstr)
316    ccall((:CeedElemRestrictionCreateBlockedStrided, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedSize, Ptr{CeedInt}, Ptr{CeedElemRestriction}), ceed, num_elem, elem_size, block_size, num_comp, l_size, strides, rstr)
317end
318
319function CeedElemRestrictionCreateUnsignedCopy(rstr, rstr_unsigned)
320    ccall((:CeedElemRestrictionCreateUnsignedCopy, libceed), Cint, (CeedElemRestriction, Ptr{CeedElemRestriction}), rstr, rstr_unsigned)
321end
322
323function CeedElemRestrictionCreateUnorientedCopy(rstr, rstr_unoriented)
324    ccall((:CeedElemRestrictionCreateUnorientedCopy, libceed), Cint, (CeedElemRestriction, Ptr{CeedElemRestriction}), rstr, rstr_unoriented)
325end
326
327function CeedElemRestrictionReferenceCopy(rstr, rstr_copy)
328    ccall((:CeedElemRestrictionReferenceCopy, libceed), Cint, (CeedElemRestriction, Ptr{CeedElemRestriction}), rstr, rstr_copy)
329end
330
331function CeedElemRestrictionCreateVector(rstr, lvec, evec)
332    ccall((:CeedElemRestrictionCreateVector, libceed), Cint, (CeedElemRestriction, Ptr{CeedVector}, Ptr{CeedVector}), rstr, lvec, evec)
333end
334
335function CeedElemRestrictionApply(rstr, t_mode, u, ru, request)
336    ccall((:CeedElemRestrictionApply, libceed), Cint, (CeedElemRestriction, CeedTransposeMode, CeedVector, CeedVector, Ptr{CeedRequest}), rstr, t_mode, u, ru, request)
337end
338
339function CeedElemRestrictionApplyAtPointsInElement(rstr, elem, t_mode, u, ru, request)
340    ccall((:CeedElemRestrictionApplyAtPointsInElement, libceed), Cint, (CeedElemRestriction, CeedInt, CeedTransposeMode, CeedVector, CeedVector, Ptr{CeedRequest}), rstr, elem, t_mode, u, ru, request)
341end
342
343function CeedElemRestrictionApplyBlock(rstr, block, t_mode, u, ru, request)
344    ccall((:CeedElemRestrictionApplyBlock, libceed), Cint, (CeedElemRestriction, CeedInt, CeedTransposeMode, CeedVector, CeedVector, Ptr{CeedRequest}), rstr, block, t_mode, u, ru, request)
345end
346
347function CeedElemRestrictionGetCeed(rstr, ceed)
348    ccall((:CeedElemRestrictionGetCeed, libceed), Cint, (CeedElemRestriction, Ptr{Ceed}), rstr, ceed)
349end
350
351function CeedElemRestrictionGetCompStride(rstr, comp_stride)
352    ccall((:CeedElemRestrictionGetCompStride, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, comp_stride)
353end
354
355function CeedElemRestrictionGetNumElements(rstr, num_elem)
356    ccall((:CeedElemRestrictionGetNumElements, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_elem)
357end
358
359function CeedElemRestrictionGetElementSize(rstr, elem_size)
360    ccall((:CeedElemRestrictionGetElementSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, elem_size)
361end
362
363function CeedElemRestrictionGetNumPoints(rstr, num_points)
364    ccall((:CeedElemRestrictionGetNumPoints, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_points)
365end
366
367function CeedElemRestrictionGetNumPointsInElement(rstr, elem, num_points)
368    ccall((:CeedElemRestrictionGetNumPointsInElement, libceed), Cint, (CeedElemRestriction, CeedInt, Ptr{CeedInt}), rstr, elem, num_points)
369end
370
371function CeedElemRestrictionGetMaxPointsInElement(rstr, max_points)
372    ccall((:CeedElemRestrictionGetMaxPointsInElement, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, max_points)
373end
374
375function CeedElemRestrictionGetLVectorSize(rstr, l_size)
376    ccall((:CeedElemRestrictionGetLVectorSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedSize}), rstr, l_size)
377end
378
379function CeedElemRestrictionGetNumComponents(rstr, num_comp)
380    ccall((:CeedElemRestrictionGetNumComponents, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_comp)
381end
382
383function CeedElemRestrictionGetNumBlocks(rstr, num_block)
384    ccall((:CeedElemRestrictionGetNumBlocks, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, num_block)
385end
386
387function CeedElemRestrictionGetBlockSize(rstr, block_size)
388    ccall((:CeedElemRestrictionGetBlockSize, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, block_size)
389end
390
391function CeedElemRestrictionGetMultiplicity(rstr, mult)
392    ccall((:CeedElemRestrictionGetMultiplicity, libceed), Cint, (CeedElemRestriction, CeedVector), rstr, mult)
393end
394
395function CeedElemRestrictionView(rstr, stream)
396    ccall((:CeedElemRestrictionView, libceed), Cint, (CeedElemRestriction, Ptr{Libc.FILE}), rstr, stream)
397end
398
399function CeedElemRestrictionDestroy(rstr)
400    ccall((:CeedElemRestrictionDestroy, libceed), Cint, (Ptr{CeedElemRestriction},), rstr)
401end
402
403function CeedBasisCreateTensorH1Lagrange(ceed, dim, num_comp, P, Q, quad_mode, basis)
404    ccall((:CeedBasisCreateTensorH1Lagrange, libceed), Cint, (Ceed, CeedInt, CeedInt, CeedInt, CeedInt, CeedQuadMode, Ptr{CeedBasis}), ceed, dim, num_comp, P, Q, quad_mode, basis)
405end
406
407function CeedBasisCreateTensorH1(ceed, dim, num_comp, P_1d, Q_1d, interp_1d, grad_1d, q_ref_1d, q_weight_1d, basis)
408    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)
409end
410
411function CeedBasisCreateH1(ceed, topo, num_comp, num_nodes, nqpts, interp, grad, q_ref, q_weights, basis)
412    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)
413end
414
415function CeedBasisCreateHdiv(ceed, topo, num_comp, num_nodes, nqpts, interp, div, q_ref, q_weights, basis)
416    ccall((:CeedBasisCreateHdiv, 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, div, q_ref, q_weights, basis)
417end
418
419function CeedBasisCreateHcurl(ceed, topo, num_comp, num_nodes, nqpts, interp, curl, q_ref, q_weights, basis)
420    ccall((:CeedBasisCreateHcurl, 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, curl, q_ref, q_weights, basis)
421end
422
423function CeedBasisCreateProjection(basis_from, basis_to, basis_project)
424    ccall((:CeedBasisCreateProjection, libceed), Cint, (CeedBasis, CeedBasis, Ptr{CeedBasis}), basis_from, basis_to, basis_project)
425end
426
427function CeedBasisReferenceCopy(basis, basis_copy)
428    ccall((:CeedBasisReferenceCopy, libceed), Cint, (CeedBasis, Ptr{CeedBasis}), basis, basis_copy)
429end
430
431function CeedBasisView(basis, stream)
432    ccall((:CeedBasisView, libceed), Cint, (CeedBasis, Ptr{Libc.FILE}), basis, stream)
433end
434
435function CeedBasisApply(basis, num_elem, t_mode, eval_mode, u, v)
436    ccall((:CeedBasisApply, libceed), Cint, (CeedBasis, CeedInt, CeedTransposeMode, CeedEvalMode, CeedVector, CeedVector), basis, num_elem, t_mode, eval_mode, u, v)
437end
438
439function CeedBasisApplyAtPoints(basis, num_elem, num_points, t_mode, eval_mode, x_ref, u, v)
440    ccall((:CeedBasisApplyAtPoints, libceed), Cint, (CeedBasis, CeedInt, Ptr{CeedInt}, CeedTransposeMode, CeedEvalMode, CeedVector, CeedVector, CeedVector), basis, num_elem, num_points, t_mode, eval_mode, x_ref, u, v)
441end
442
443function CeedBasisGetCeed(basis, ceed)
444    ccall((:CeedBasisGetCeed, libceed), Cint, (CeedBasis, Ptr{Ceed}), basis, ceed)
445end
446
447function CeedBasisGetDimension(basis, dim)
448    ccall((:CeedBasisGetDimension, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, dim)
449end
450
451function CeedBasisGetTopology(basis, topo)
452    ccall((:CeedBasisGetTopology, libceed), Cint, (CeedBasis, Ptr{CeedElemTopology}), basis, topo)
453end
454
455function CeedBasisGetNumComponents(basis, num_comp)
456    ccall((:CeedBasisGetNumComponents, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, num_comp)
457end
458
459function CeedBasisGetNumNodes(basis, P)
460    ccall((:CeedBasisGetNumNodes, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, P)
461end
462
463function CeedBasisGetNumNodes1D(basis, P_1d)
464    ccall((:CeedBasisGetNumNodes1D, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, P_1d)
465end
466
467function CeedBasisGetNumQuadraturePoints(basis, Q)
468    ccall((:CeedBasisGetNumQuadraturePoints, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, Q)
469end
470
471function CeedBasisGetNumQuadraturePoints1D(basis, Q_1d)
472    ccall((:CeedBasisGetNumQuadraturePoints1D, libceed), Cint, (CeedBasis, Ptr{CeedInt}), basis, Q_1d)
473end
474
475function CeedBasisGetQRef(basis, q_ref)
476    ccall((:CeedBasisGetQRef, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, q_ref)
477end
478
479function CeedBasisGetQWeights(basis, q_weights)
480    ccall((:CeedBasisGetQWeights, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, q_weights)
481end
482
483function CeedBasisGetInterp(basis, interp)
484    ccall((:CeedBasisGetInterp, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, interp)
485end
486
487function CeedBasisGetInterp1D(basis, interp_1d)
488    ccall((:CeedBasisGetInterp1D, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, interp_1d)
489end
490
491function CeedBasisGetGrad(basis, grad)
492    ccall((:CeedBasisGetGrad, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, grad)
493end
494
495function CeedBasisGetGrad1D(basis, grad_1d)
496    ccall((:CeedBasisGetGrad1D, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, grad_1d)
497end
498
499function CeedBasisGetDiv(basis, div)
500    ccall((:CeedBasisGetDiv, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, div)
501end
502
503function CeedBasisGetCurl(basis, curl)
504    ccall((:CeedBasisGetCurl, libceed), Cint, (CeedBasis, Ptr{Ptr{CeedScalar}}), basis, curl)
505end
506
507function CeedBasisDestroy(basis)
508    ccall((:CeedBasisDestroy, libceed), Cint, (Ptr{CeedBasis},), basis)
509end
510
511function CeedGaussQuadrature(Q, q_ref_1d, q_weight_1d)
512    ccall((:CeedGaussQuadrature, libceed), Cint, (CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), Q, q_ref_1d, q_weight_1d)
513end
514
515function CeedLobattoQuadrature(Q, q_ref_1d, q_weight_1d)
516    ccall((:CeedLobattoQuadrature, libceed), Cint, (CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), Q, q_ref_1d, q_weight_1d)
517end
518
519# typedef int ( * CeedQFunctionUser ) ( void * ctx , const CeedInt Q , const CeedScalar * const * in , CeedScalar * const * out )
520const CeedQFunctionUser = Ptr{Cvoid}
521
522function CeedQFunctionCreateInterior(ceed, vec_length, f, source, qf)
523    ccall((:CeedQFunctionCreateInterior, libceed), Cint, (Ceed, CeedInt, CeedQFunctionUser, Ptr{Cchar}, Ptr{CeedQFunction}), ceed, vec_length, f, source, qf)
524end
525
526function CeedQFunctionCreateInteriorByName(ceed, name, qf)
527    ccall((:CeedQFunctionCreateInteriorByName, libceed), Cint, (Ceed, Ptr{Cchar}, Ptr{CeedQFunction}), ceed, name, qf)
528end
529
530function CeedQFunctionCreateIdentity(ceed, size, in_mode, out_mode, qf)
531    ccall((:CeedQFunctionCreateIdentity, libceed), Cint, (Ceed, CeedInt, CeedEvalMode, CeedEvalMode, Ptr{CeedQFunction}), ceed, size, in_mode, out_mode, qf)
532end
533
534function CeedQFunctionReferenceCopy(qf, qf_copy)
535    ccall((:CeedQFunctionReferenceCopy, libceed), Cint, (CeedQFunction, Ptr{CeedQFunction}), qf, qf_copy)
536end
537
538function CeedQFunctionAddInput(qf, field_name, size, eval_mode)
539    ccall((:CeedQFunctionAddInput, libceed), Cint, (CeedQFunction, Ptr{Cchar}, CeedInt, CeedEvalMode), qf, field_name, size, eval_mode)
540end
541
542function CeedQFunctionAddOutput(qf, field_name, size, eval_mode)
543    ccall((:CeedQFunctionAddOutput, libceed), Cint, (CeedQFunction, Ptr{Cchar}, CeedInt, CeedEvalMode), qf, field_name, size, eval_mode)
544end
545
546function CeedQFunctionGetFields(qf, num_input_fields, input_fields, num_output_fields, output_fields)
547    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)
548end
549
550function CeedQFunctionSetContext(qf, ctx)
551    ccall((:CeedQFunctionSetContext, libceed), Cint, (CeedQFunction, CeedQFunctionContext), qf, ctx)
552end
553
554function CeedQFunctionSetContextWritable(qf, is_writable)
555    ccall((:CeedQFunctionSetContextWritable, libceed), Cint, (CeedQFunction, Bool), qf, is_writable)
556end
557
558function CeedQFunctionSetUserFlopsEstimate(qf, flops)
559    ccall((:CeedQFunctionSetUserFlopsEstimate, libceed), Cint, (CeedQFunction, CeedSize), qf, flops)
560end
561
562function CeedQFunctionView(qf, stream)
563    ccall((:CeedQFunctionView, libceed), Cint, (CeedQFunction, Ptr{Libc.FILE}), qf, stream)
564end
565
566function CeedQFunctionGetCeed(qf, ceed)
567    ccall((:CeedQFunctionGetCeed, libceed), Cint, (CeedQFunction, Ptr{Ceed}), qf, ceed)
568end
569
570function CeedQFunctionApply(qf, Q, u, v)
571    ccall((:CeedQFunctionApply, libceed), Cint, (CeedQFunction, CeedInt, Ptr{CeedVector}, Ptr{CeedVector}), qf, Q, u, v)
572end
573
574function CeedQFunctionDestroy(qf)
575    ccall((:CeedQFunctionDestroy, libceed), Cint, (Ptr{CeedQFunction},), qf)
576end
577
578function CeedQFunctionFieldGetName(qf_field, field_name)
579    ccall((:CeedQFunctionFieldGetName, libceed), Cint, (CeedQFunctionField, Ptr{Ptr{Cchar}}), qf_field, field_name)
580end
581
582function CeedQFunctionFieldGetSize(qf_field, size)
583    ccall((:CeedQFunctionFieldGetSize, libceed), Cint, (CeedQFunctionField, Ptr{CeedInt}), qf_field, size)
584end
585
586function CeedQFunctionFieldGetEvalMode(qf_field, eval_mode)
587    ccall((:CeedQFunctionFieldGetEvalMode, libceed), Cint, (CeedQFunctionField, Ptr{CeedEvalMode}), qf_field, eval_mode)
588end
589
590# typedef int ( * CeedQFunctionContextDataDestroyUser ) ( void * data )
591const CeedQFunctionContextDataDestroyUser = Ptr{Cvoid}
592
593function CeedQFunctionContextCreate(ceed, ctx)
594    ccall((:CeedQFunctionContextCreate, libceed), Cint, (Ceed, Ptr{CeedQFunctionContext}), ceed, ctx)
595end
596
597function CeedQFunctionContextReferenceCopy(ctx, ctx_copy)
598    ccall((:CeedQFunctionContextReferenceCopy, libceed), Cint, (CeedQFunctionContext, Ptr{CeedQFunctionContext}), ctx, ctx_copy)
599end
600
601function CeedQFunctionContextSetData(ctx, mem_type, copy_mode, size, data)
602    ccall((:CeedQFunctionContextSetData, libceed), Cint, (CeedQFunctionContext, CeedMemType, CeedCopyMode, Csize_t, Ptr{Cvoid}), ctx, mem_type, copy_mode, size, data)
603end
604
605function CeedQFunctionContextTakeData(ctx, mem_type, data)
606    ccall((:CeedQFunctionContextTakeData, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Cvoid}), ctx, mem_type, data)
607end
608
609function CeedQFunctionContextGetData(ctx, mem_type, data)
610    ccall((:CeedQFunctionContextGetData, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Cvoid}), ctx, mem_type, data)
611end
612
613function CeedQFunctionContextGetDataRead(ctx, mem_type, data)
614    ccall((:CeedQFunctionContextGetDataRead, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Cvoid}), ctx, mem_type, data)
615end
616
617function CeedQFunctionContextRestoreData(ctx, data)
618    ccall((:CeedQFunctionContextRestoreData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
619end
620
621function CeedQFunctionContextRestoreDataRead(ctx, data)
622    ccall((:CeedQFunctionContextRestoreDataRead, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
623end
624
625function CeedQFunctionContextRegisterDouble(ctx, field_name, field_offset, num_values, field_description)
626    ccall((:CeedQFunctionContextRegisterDouble, libceed), Cint, (CeedQFunctionContext, Ptr{Cchar}, Csize_t, Csize_t, Ptr{Cchar}), ctx, field_name, field_offset, num_values, field_description)
627end
628
629function CeedQFunctionContextRegisterInt32(ctx, field_name, field_offset, num_values, field_description)
630    ccall((:CeedQFunctionContextRegisterInt32, libceed), Cint, (CeedQFunctionContext, Ptr{Cchar}, Csize_t, Csize_t, Ptr{Cchar}), ctx, field_name, field_offset, num_values, field_description)
631end
632
633function CeedQFunctionContextGetAllFieldLabels(ctx, field_labels, num_fields)
634    ccall((:CeedQFunctionContextGetAllFieldLabels, libceed), Cint, (CeedQFunctionContext, Ptr{Ptr{CeedContextFieldLabel}}, Ptr{CeedInt}), ctx, field_labels, num_fields)
635end
636
637function CeedContextFieldLabelGetDescription(label, field_name, field_offset, num_values, field_description, field_type)
638    ccall((:CeedContextFieldLabelGetDescription, libceed), Cint, (CeedContextFieldLabel, Ptr{Ptr{Cchar}}, Ptr{Csize_t}, Ptr{Csize_t}, Ptr{Ptr{Cchar}}, Ptr{CeedContextFieldType}), label, field_name, field_offset, num_values, field_description, field_type)
639end
640
641function CeedQFunctionContextGetContextSize(ctx, ctx_size)
642    ccall((:CeedQFunctionContextGetContextSize, libceed), Cint, (CeedQFunctionContext, Ptr{Csize_t}), ctx, ctx_size)
643end
644
645function CeedQFunctionContextView(ctx, stream)
646    ccall((:CeedQFunctionContextView, libceed), Cint, (CeedQFunctionContext, Ptr{Libc.FILE}), ctx, stream)
647end
648
649function CeedQFunctionContextSetDataDestroy(ctx, f_mem_type, f)
650    ccall((:CeedQFunctionContextSetDataDestroy, libceed), Cint, (CeedQFunctionContext, CeedMemType, CeedQFunctionContextDataDestroyUser), ctx, f_mem_type, f)
651end
652
653function CeedQFunctionContextDestroy(ctx)
654    ccall((:CeedQFunctionContextDestroy, libceed), Cint, (Ptr{CeedQFunctionContext},), ctx)
655end
656
657function CeedOperatorCreate(ceed, qf, dqf, dqfT, op)
658    ccall((:CeedOperatorCreate, libceed), Cint, (Ceed, CeedQFunction, CeedQFunction, CeedQFunction, Ptr{CeedOperator}), ceed, qf, dqf, dqfT, op)
659end
660
661function CeedCompositeOperatorCreate(ceed, op)
662    ccall((:CeedCompositeOperatorCreate, libceed), Cint, (Ceed, Ptr{CeedOperator}), ceed, op)
663end
664
665function CeedOperatorReferenceCopy(op, op_copy)
666    ccall((:CeedOperatorReferenceCopy, libceed), Cint, (CeedOperator, Ptr{CeedOperator}), op, op_copy)
667end
668
669function CeedOperatorSetField(op, field_name, r, b, v)
670    ccall((:CeedOperatorSetField, libceed), Cint, (CeedOperator, Ptr{Cchar}, CeedElemRestriction, CeedBasis, CeedVector), op, field_name, r, b, v)
671end
672
673function CeedOperatorGetFields(op, num_input_fields, input_fields, num_output_fields, output_fields)
674    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)
675end
676
677function CeedCompositeOperatorAddSub(composite_op, sub_op)
678    ccall((:CeedCompositeOperatorAddSub, libceed), Cint, (CeedOperator, CeedOperator), composite_op, sub_op)
679end
680
681function CeedCompositeOperatorGetNumSub(op, num_suboperators)
682    ccall((:CeedCompositeOperatorGetNumSub, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_suboperators)
683end
684
685function CeedCompositeOperatorGetSubList(op, sub_operators)
686    ccall((:CeedCompositeOperatorGetSubList, libceed), Cint, (CeedOperator, Ptr{Ptr{CeedOperator}}), op, sub_operators)
687end
688
689function CeedOperatorCheckReady(op)
690    ccall((:CeedOperatorCheckReady, libceed), Cint, (CeedOperator,), op)
691end
692
693function CeedOperatorGetActiveVectorLengths(op, input_size, output_size)
694    ccall((:CeedOperatorGetActiveVectorLengths, libceed), Cint, (CeedOperator, Ptr{CeedSize}, Ptr{CeedSize}), op, input_size, output_size)
695end
696
697function CeedOperatorSetQFunctionAssemblyReuse(op, reuse_assembly_data)
698    ccall((:CeedOperatorSetQFunctionAssemblyReuse, libceed), Cint, (CeedOperator, Bool), op, reuse_assembly_data)
699end
700
701function CeedOperatorSetQFunctionAssemblyDataUpdateNeeded(op, needs_data_update)
702    ccall((:CeedOperatorSetQFunctionAssemblyDataUpdateNeeded, libceed), Cint, (CeedOperator, Bool), op, needs_data_update)
703end
704
705function CeedOperatorLinearAssembleQFunction(op, assembled, rstr, request)
706    ccall((:CeedOperatorLinearAssembleQFunction, libceed), Cint, (CeedOperator, Ptr{CeedVector}, Ptr{CeedElemRestriction}, Ptr{CeedRequest}), op, assembled, rstr, request)
707end
708
709function CeedOperatorLinearAssembleQFunctionBuildOrUpdate(op, assembled, rstr, request)
710    ccall((:CeedOperatorLinearAssembleQFunctionBuildOrUpdate, libceed), Cint, (CeedOperator, Ptr{CeedVector}, Ptr{CeedElemRestriction}, Ptr{CeedRequest}), op, assembled, rstr, request)
711end
712
713function CeedOperatorLinearAssembleDiagonal(op, assembled, request)
714    ccall((:CeedOperatorLinearAssembleDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
715end
716
717function CeedOperatorLinearAssembleAddDiagonal(op, assembled, request)
718    ccall((:CeedOperatorLinearAssembleAddDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
719end
720
721function CeedOperatorLinearAssemblePointBlockDiagonal(op, assembled, request)
722    ccall((:CeedOperatorLinearAssemblePointBlockDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
723end
724
725function CeedOperatorLinearAssembleAddPointBlockDiagonal(op, assembled, request)
726    ccall((:CeedOperatorLinearAssembleAddPointBlockDiagonal, libceed), Cint, (CeedOperator, CeedVector, Ptr{CeedRequest}), op, assembled, request)
727end
728
729function CeedOperatorLinearAssemblePointBlockDiagonalSymbolic(op, num_entries, rows, cols)
730    ccall((:CeedOperatorLinearAssemblePointBlockDiagonalSymbolic, libceed), Cint, (CeedOperator, Ptr{CeedSize}, Ptr{Ptr{CeedInt}}, Ptr{Ptr{CeedInt}}), op, num_entries, rows, cols)
731end
732
733function CeedOperatorLinearAssembleSymbolic(op, num_entries, rows, cols)
734    ccall((:CeedOperatorLinearAssembleSymbolic, libceed), Cint, (CeedOperator, Ptr{CeedSize}, Ptr{Ptr{CeedInt}}, Ptr{Ptr{CeedInt}}), op, num_entries, rows, cols)
735end
736
737function CeedOperatorLinearAssemble(op, values)
738    ccall((:CeedOperatorLinearAssemble, libceed), Cint, (CeedOperator, CeedVector), op, values)
739end
740
741function CeedCompositeOperatorGetMultiplicity(op, num_skip_indices, skip_indices, mult)
742    ccall((:CeedCompositeOperatorGetMultiplicity, libceed), Cint, (CeedOperator, CeedInt, Ptr{CeedInt}, CeedVector), op, num_skip_indices, skip_indices, mult)
743end
744
745function CeedOperatorMultigridLevelCreate(op_fine, p_mult_fine, rstr_coarse, basis_coarse, op_coarse, op_prolong, op_restrict)
746    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)
747end
748
749function CeedOperatorMultigridLevelCreateTensorH1(op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
750    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)
751end
752
753function CeedOperatorMultigridLevelCreateH1(op_fine, p_mult_fine, rstr_coarse, basis_coarse, interp_c_to_f, op_coarse, op_prolong, op_restrict)
754    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)
755end
756
757function CeedOperatorCreateFDMElementInverse(op, fdm_inv, request)
758    ccall((:CeedOperatorCreateFDMElementInverse, libceed), Cint, (CeedOperator, Ptr{CeedOperator}, Ptr{CeedRequest}), op, fdm_inv, request)
759end
760
761function CeedOperatorSetName(op, name)
762    ccall((:CeedOperatorSetName, libceed), Cint, (CeedOperator, Ptr{Cchar}), op, name)
763end
764
765function CeedOperatorView(op, stream)
766    ccall((:CeedOperatorView, libceed), Cint, (CeedOperator, Ptr{Libc.FILE}), op, stream)
767end
768
769function CeedOperatorGetCeed(op, ceed)
770    ccall((:CeedOperatorGetCeed, libceed), Cint, (CeedOperator, Ptr{Ceed}), op, ceed)
771end
772
773function CeedOperatorGetNumElements(op, num_elem)
774    ccall((:CeedOperatorGetNumElements, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_elem)
775end
776
777function CeedOperatorGetNumQuadraturePoints(op, num_qpts)
778    ccall((:CeedOperatorGetNumQuadraturePoints, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_qpts)
779end
780
781function CeedOperatorGetFlopsEstimate(op, flops)
782    ccall((:CeedOperatorGetFlopsEstimate, libceed), Cint, (CeedOperator, Ptr{CeedSize}), op, flops)
783end
784
785function CeedOperatorGetContext(op, ctx)
786    ccall((:CeedOperatorGetContext, libceed), Cint, (CeedOperator, Ptr{CeedQFunctionContext}), op, ctx)
787end
788
789function CeedOperatorGetContextFieldLabel(op, field_name, field_label)
790    ccall((:CeedOperatorGetContextFieldLabel, libceed), Cint, (CeedOperator, Ptr{Cchar}, Ptr{CeedContextFieldLabel}), op, field_name, field_label)
791end
792
793function CeedOperatorSetContextDouble(op, field_label, values)
794    ccall((:CeedOperatorSetContextDouble, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Cdouble}), op, field_label, values)
795end
796
797function CeedOperatorGetContextDoubleRead(op, field_label, num_values, values)
798    ccall((:CeedOperatorGetContextDoubleRead, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Csize_t}, Ptr{Ptr{Cdouble}}), op, field_label, num_values, values)
799end
800
801function CeedOperatorRestoreContextDoubleRead(op, field_label, values)
802    ccall((:CeedOperatorRestoreContextDoubleRead, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Ptr{Cdouble}}), op, field_label, values)
803end
804
805function CeedOperatorSetContextInt32(op, field_label, values)
806    ccall((:CeedOperatorSetContextInt32, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Cint}), op, field_label, values)
807end
808
809function CeedOperatorGetContextInt32Read(op, field_label, num_values, values)
810    ccall((:CeedOperatorGetContextInt32Read, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Csize_t}, Ptr{Ptr{Cint}}), op, field_label, num_values, values)
811end
812
813function CeedOperatorRestoreContextInt32Read(op, field_label, values)
814    ccall((:CeedOperatorRestoreContextInt32Read, libceed), Cint, (CeedOperator, CeedContextFieldLabel, Ptr{Ptr{Cint}}), op, field_label, values)
815end
816
817function CeedOperatorApply(op, in, out, request)
818    ccall((:CeedOperatorApply, libceed), Cint, (CeedOperator, CeedVector, CeedVector, Ptr{CeedRequest}), op, in, out, request)
819end
820
821function CeedOperatorApplyAdd(op, in, out, request)
822    ccall((:CeedOperatorApplyAdd, libceed), Cint, (CeedOperator, CeedVector, CeedVector, Ptr{CeedRequest}), op, in, out, request)
823end
824
825function CeedOperatorDestroy(op)
826    ccall((:CeedOperatorDestroy, libceed), Cint, (Ptr{CeedOperator},), op)
827end
828
829function CeedOperatorGetFieldByName(op, field_name, op_field)
830    ccall((:CeedOperatorGetFieldByName, libceed), Cint, (CeedOperator, Ptr{Cchar}, Ptr{CeedOperatorField}), op, field_name, op_field)
831end
832
833function CeedOperatorFieldGetName(op_field, field_name)
834    ccall((:CeedOperatorFieldGetName, libceed), Cint, (CeedOperatorField, Ptr{Ptr{Cchar}}), op_field, field_name)
835end
836
837function CeedOperatorFieldGetElemRestriction(op_field, rstr)
838    ccall((:CeedOperatorFieldGetElemRestriction, libceed), Cint, (CeedOperatorField, Ptr{CeedElemRestriction}), op_field, rstr)
839end
840
841function CeedOperatorFieldGetBasis(op_field, basis)
842    ccall((:CeedOperatorFieldGetBasis, libceed), Cint, (CeedOperatorField, Ptr{CeedBasis}), op_field, basis)
843end
844
845function CeedOperatorFieldGetVector(op_field, vec)
846    ccall((:CeedOperatorFieldGetVector, libceed), Cint, (CeedOperatorField, Ptr{CeedVector}), op_field, vec)
847end
848
849function CeedIntPow(base, power)
850    ccall((:CeedIntPow, libceed), CeedInt, (CeedInt, CeedInt), base, power)
851end
852
853function CeedIntMin(a, b)
854    ccall((:CeedIntMin, libceed), CeedInt, (CeedInt, CeedInt), a, b)
855end
856
857function CeedIntMax(a, b)
858    ccall((:CeedIntMax, libceed), CeedInt, (CeedInt, CeedInt), a, b)
859end
860
861function CeedRegisterAll()
862    ccall((:CeedRegisterAll, libceed), Cint, ())
863end
864
865function CeedQFunctionRegisterAll()
866    ccall((:CeedQFunctionRegisterAll, libceed), Cint, ())
867end
868
869function CeedQFunctionSetCUDAUserFunction(qf, f)
870    ccall((:CeedQFunctionSetCUDAUserFunction, libceed), Cint, (CeedQFunction, Cint), qf, f)
871end
872
873function CeedDebugFlag(ceed)
874    ccall((:CeedDebugFlag, libceed), Bool, (Ceed,), ceed)
875end
876
877function CeedDebugFlagEnv()
878    ccall((:CeedDebugFlagEnv, libceed), Bool, ())
879end
880
881function CeedMallocArray(n, unit, p)
882    ccall((:CeedMallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
883end
884
885function CeedCallocArray(n, unit, p)
886    ccall((:CeedCallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
887end
888
889function CeedReallocArray(n, unit, p)
890    ccall((:CeedReallocArray, libceed), Cint, (Csize_t, Csize_t, Ptr{Cvoid}), n, unit, p)
891end
892
893@cenum CeedDebugColor::UInt32 begin
894    CEED_DEBUG_COLOR_SUCCESS = 108
895    CEED_DEBUG_COLOR_WARNING = 208
896    CEED_DEBUG_COLOR_ERROR = 196
897    CEED_DEBUG_COLOR_NONE = 255
898end
899
900mutable struct CeedTensorContract_private end
901
902const CeedTensorContract = Ptr{CeedTensorContract_private}
903
904mutable struct CeedQFunctionAssemblyData_private end
905
906const CeedQFunctionAssemblyData = Ptr{CeedQFunctionAssemblyData_private}
907
908mutable struct CeedOperatorAssemblyData_private end
909
910const CeedOperatorAssemblyData = Ptr{CeedOperatorAssemblyData_private}
911
912function CeedStringAllocCopy(source, copy)
913    ccall((:CeedStringAllocCopy, libceed), Cint, (Ptr{Cchar}, Ptr{Ptr{Cchar}}), source, copy)
914end
915
916function CeedFree(p)
917    ccall((:CeedFree, libceed), Cint, (Ptr{Cvoid},), p)
918end
919
920function CeedRegister(prefix, init, priority)
921    ccall((:CeedRegister, libceed), Cint, (Ptr{Cchar}, Ptr{Cvoid}, Cuint), prefix, init, priority)
922end
923
924function CeedRegisterImpl(prefix, init, priority)
925    ccall((:CeedRegisterImpl, libceed), Cint, (Ptr{Cchar}, Ptr{Cvoid}, Cuint), prefix, init, priority)
926end
927
928function CeedIsDebug(ceed, is_debug)
929    ccall((:CeedIsDebug, libceed), Cint, (Ceed, Ptr{Bool}), ceed, is_debug)
930end
931
932function CeedGetResourceRoot(ceed, resource, delineator, resource_root)
933    ccall((:CeedGetResourceRoot, libceed), Cint, (Ceed, Ptr{Cchar}, Ptr{Cchar}, Ptr{Ptr{Cchar}}), ceed, resource, delineator, resource_root)
934end
935
936function CeedGetParent(ceed, parent)
937    ccall((:CeedGetParent, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, parent)
938end
939
940function CeedGetDelegate(ceed, delegate)
941    ccall((:CeedGetDelegate, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, delegate)
942end
943
944function CeedSetDelegate(ceed, delegate)
945    ccall((:CeedSetDelegate, libceed), Cint, (Ceed, Ceed), ceed, delegate)
946end
947
948function CeedGetObjectDelegate(ceed, delegate, obj_name)
949    ccall((:CeedGetObjectDelegate, libceed), Cint, (Ceed, Ptr{Ceed}, Ptr{Cchar}), ceed, delegate, obj_name)
950end
951
952function CeedSetObjectDelegate(ceed, delegate, obj_name)
953    ccall((:CeedSetObjectDelegate, libceed), Cint, (Ceed, Ceed, Ptr{Cchar}), ceed, delegate, obj_name)
954end
955
956function CeedGetOperatorFallbackResource(ceed, resource)
957    ccall((:CeedGetOperatorFallbackResource, libceed), Cint, (Ceed, Ptr{Ptr{Cchar}}), ceed, resource)
958end
959
960function CeedGetOperatorFallbackCeed(ceed, fallback_ceed)
961    ccall((:CeedGetOperatorFallbackCeed, libceed), Cint, (Ceed, Ptr{Ceed}), ceed, fallback_ceed)
962end
963
964function CeedSetOperatorFallbackResource(ceed, resource)
965    ccall((:CeedSetOperatorFallbackResource, libceed), Cint, (Ceed, Ptr{Cchar}), ceed, resource)
966end
967
968function CeedSetDeterministic(ceed, is_deterministic)
969    ccall((:CeedSetDeterministic, libceed), Cint, (Ceed, Bool), ceed, is_deterministic)
970end
971
972function CeedSetBackendFunction(ceed, type, object, func_name, f)
973    ccall((:CeedSetBackendFunction, libceed), Cint, (Ceed, Ptr{Cchar}, Ptr{Cvoid}, Ptr{Cchar}, Ptr{Cvoid}), ceed, type, object, func_name, f)
974end
975
976function CeedGetData(ceed, data)
977    ccall((:CeedGetData, libceed), Cint, (Ceed, Ptr{Cvoid}), ceed, data)
978end
979
980function CeedSetData(ceed, data)
981    ccall((:CeedSetData, libceed), Cint, (Ceed, Ptr{Cvoid}), ceed, data)
982end
983
984function CeedReference(ceed)
985    ccall((:CeedReference, libceed), Cint, (Ceed,), ceed)
986end
987
988function CeedVectorHasValidArray(vec, has_valid_array)
989    ccall((:CeedVectorHasValidArray, libceed), Cint, (CeedVector, Ptr{Bool}), vec, has_valid_array)
990end
991
992function CeedVectorHasBorrowedArrayOfType(vec, mem_type, has_borrowed_array_of_type)
993    ccall((:CeedVectorHasBorrowedArrayOfType, libceed), Cint, (CeedVector, CeedMemType, Ptr{Bool}), vec, mem_type, has_borrowed_array_of_type)
994end
995
996function CeedVectorGetState(vec, state)
997    ccall((:CeedVectorGetState, libceed), Cint, (CeedVector, Ptr{UInt64}), vec, state)
998end
999
1000function CeedVectorGetData(vec, data)
1001    ccall((:CeedVectorGetData, libceed), Cint, (CeedVector, Ptr{Cvoid}), vec, data)
1002end
1003
1004function CeedVectorSetData(vec, data)
1005    ccall((:CeedVectorSetData, libceed), Cint, (CeedVector, Ptr{Cvoid}), vec, data)
1006end
1007
1008function CeedVectorReference(vec)
1009    ccall((:CeedVectorReference, libceed), Cint, (CeedVector,), vec)
1010end
1011
1012@cenum CeedRestrictionType::UInt32 begin
1013    CEED_RESTRICTION_STANDARD = 1
1014    CEED_RESTRICTION_ORIENTED = 2
1015    CEED_RESTRICTION_CURL_ORIENTED = 3
1016    CEED_RESTRICTION_STRIDED = 4
1017    CEED_RESTRICTION_POINTS = 5
1018end
1019
1020function CeedElemRestrictionGetType(rstr, rstr_type)
1021    ccall((:CeedElemRestrictionGetType, libceed), Cint, (CeedElemRestriction, Ptr{CeedRestrictionType}), rstr, rstr_type)
1022end
1023
1024function CeedElemRestrictionIsStrided(rstr, is_strided)
1025    ccall((:CeedElemRestrictionIsStrided, libceed), Cint, (CeedElemRestriction, Ptr{Bool}), rstr, is_strided)
1026end
1027
1028function CeedElemRestrictionIsPoints(rstr, is_points)
1029    ccall((:CeedElemRestrictionIsPoints, libceed), Cint, (CeedElemRestriction, Ptr{Bool}), rstr, is_points)
1030end
1031
1032function CeedElemRestrictionGetStrides(rstr, strides)
1033    ccall((:CeedElemRestrictionGetStrides, libceed), Cint, (CeedElemRestriction, Ptr{NTuple{3, CeedInt}}), rstr, strides)
1034end
1035
1036function CeedElemRestrictionHasBackendStrides(rstr, has_backend_strides)
1037    ccall((:CeedElemRestrictionHasBackendStrides, libceed), Cint, (CeedElemRestriction, Ptr{Bool}), rstr, has_backend_strides)
1038end
1039
1040function CeedElemRestrictionGetOffsets(rstr, mem_type, offsets)
1041    ccall((:CeedElemRestrictionGetOffsets, libceed), Cint, (CeedElemRestriction, CeedMemType, Ptr{Ptr{CeedInt}}), rstr, mem_type, offsets)
1042end
1043
1044function CeedElemRestrictionRestoreOffsets(rstr, offsets)
1045    ccall((:CeedElemRestrictionRestoreOffsets, libceed), Cint, (CeedElemRestriction, Ptr{Ptr{CeedInt}}), rstr, offsets)
1046end
1047
1048function CeedElemRestrictionGetOrientations(rstr, mem_type, orients)
1049    ccall((:CeedElemRestrictionGetOrientations, libceed), Cint, (CeedElemRestriction, CeedMemType, Ptr{Ptr{Bool}}), rstr, mem_type, orients)
1050end
1051
1052function CeedElemRestrictionRestoreOrientations(rstr, orients)
1053    ccall((:CeedElemRestrictionRestoreOrientations, libceed), Cint, (CeedElemRestriction, Ptr{Ptr{Bool}}), rstr, orients)
1054end
1055
1056function CeedElemRestrictionGetCurlOrientations(rstr, mem_type, curl_orients)
1057    ccall((:CeedElemRestrictionGetCurlOrientations, libceed), Cint, (CeedElemRestriction, CeedMemType, Ptr{Ptr{CeedInt8}}), rstr, mem_type, curl_orients)
1058end
1059
1060function CeedElemRestrictionRestoreCurlOrientations(rstr, curl_orients)
1061    ccall((:CeedElemRestrictionRestoreCurlOrientations, libceed), Cint, (CeedElemRestriction, Ptr{Ptr{CeedInt8}}), rstr, curl_orients)
1062end
1063
1064function CeedElemRestrictionGetELayout(rstr, layout)
1065    ccall((:CeedElemRestrictionGetELayout, libceed), Cint, (CeedElemRestriction, Ptr{NTuple{3, CeedInt}}), rstr, layout)
1066end
1067
1068function CeedElemRestrictionSetELayout(rstr, layout)
1069    ccall((:CeedElemRestrictionSetELayout, libceed), Cint, (CeedElemRestriction, Ptr{CeedInt}), rstr, layout)
1070end
1071
1072function CeedElemRestrictionGetData(rstr, data)
1073    ccall((:CeedElemRestrictionGetData, libceed), Cint, (CeedElemRestriction, Ptr{Cvoid}), rstr, data)
1074end
1075
1076function CeedElemRestrictionSetData(rstr, data)
1077    ccall((:CeedElemRestrictionSetData, libceed), Cint, (CeedElemRestriction, Ptr{Cvoid}), rstr, data)
1078end
1079
1080function CeedElemRestrictionReference(rstr)
1081    ccall((:CeedElemRestrictionReference, libceed), Cint, (CeedElemRestriction,), rstr)
1082end
1083
1084function CeedElemRestrictionGetFlopsEstimate(rstr, t_mode, flops)
1085    ccall((:CeedElemRestrictionGetFlopsEstimate, libceed), Cint, (CeedElemRestriction, CeedTransposeMode, Ptr{CeedSize}), rstr, t_mode, flops)
1086end
1087
1088@cenum CeedFESpace::UInt32 begin
1089    CEED_FE_SPACE_H1 = 1
1090    CEED_FE_SPACE_HDIV = 2
1091    CEED_FE_SPACE_HCURL = 3
1092end
1093
1094function CeedBasisGetCollocatedGrad(basis, colo_grad_1d)
1095    ccall((:CeedBasisGetCollocatedGrad, libceed), Cint, (CeedBasis, Ptr{CeedScalar}), basis, colo_grad_1d)
1096end
1097
1098function CeedBasisIsTensor(basis, is_tensor)
1099    ccall((:CeedBasisIsTensor, libceed), Cint, (CeedBasis, Ptr{Bool}), basis, is_tensor)
1100end
1101
1102function CeedBasisGetData(basis, data)
1103    ccall((:CeedBasisGetData, libceed), Cint, (CeedBasis, Ptr{Cvoid}), basis, data)
1104end
1105
1106function CeedBasisSetData(basis, data)
1107    ccall((:CeedBasisSetData, libceed), Cint, (CeedBasis, Ptr{Cvoid}), basis, data)
1108end
1109
1110function CeedBasisReference(basis)
1111    ccall((:CeedBasisReference, libceed), Cint, (CeedBasis,), basis)
1112end
1113
1114function CeedBasisGetNumQuadratureComponents(basis, eval_mode, q_comp)
1115    ccall((:CeedBasisGetNumQuadratureComponents, libceed), Cint, (CeedBasis, CeedEvalMode, Ptr{CeedInt}), basis, eval_mode, q_comp)
1116end
1117
1118function CeedBasisGetFlopsEstimate(basis, t_mode, eval_mode, flops)
1119    ccall((:CeedBasisGetFlopsEstimate, libceed), Cint, (CeedBasis, CeedTransposeMode, CeedEvalMode, Ptr{CeedSize}), basis, t_mode, eval_mode, flops)
1120end
1121
1122function CeedBasisGetFESpace(basis, fe_space)
1123    ccall((:CeedBasisGetFESpace, libceed), Cint, (CeedBasis, Ptr{CeedFESpace}), basis, fe_space)
1124end
1125
1126function CeedBasisGetTopologyDimension(topo, dim)
1127    ccall((:CeedBasisGetTopologyDimension, libceed), Cint, (CeedElemTopology, Ptr{CeedInt}), topo, dim)
1128end
1129
1130function CeedBasisGetTensorContract(basis, contract)
1131    ccall((:CeedBasisGetTensorContract, libceed), Cint, (CeedBasis, Ptr{CeedTensorContract}), basis, contract)
1132end
1133
1134function CeedBasisSetTensorContract(basis, contract)
1135    ccall((:CeedBasisSetTensorContract, libceed), Cint, (CeedBasis, CeedTensorContract), basis, contract)
1136end
1137
1138function CeedTensorContractCreate(ceed, contract)
1139    ccall((:CeedTensorContractCreate, libceed), Cint, (Ceed, Ptr{CeedTensorContract}), ceed, contract)
1140end
1141
1142function CeedTensorContractApply(contract, A, B, C, J, t, t_mode, Add, u, v)
1143    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)
1144end
1145
1146function CeedTensorContractStridedApply(contract, A, B, C, D, J, t, t_mode, add, u, v)
1147    ccall((:CeedTensorContractStridedApply, libceed), Cint, (CeedTensorContract, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt, Ptr{CeedScalar}, CeedTransposeMode, CeedInt, Ptr{CeedScalar}, Ptr{CeedScalar}), contract, A, B, C, D, J, t, t_mode, add, u, v)
1148end
1149
1150function CeedTensorContractGetCeed(contract, ceed)
1151    ccall((:CeedTensorContractGetCeed, libceed), Cint, (CeedTensorContract, Ptr{Ceed}), contract, ceed)
1152end
1153
1154function CeedTensorContractGetData(contract, data)
1155    ccall((:CeedTensorContractGetData, libceed), Cint, (CeedTensorContract, Ptr{Cvoid}), contract, data)
1156end
1157
1158function CeedTensorContractSetData(contract, data)
1159    ccall((:CeedTensorContractSetData, libceed), Cint, (CeedTensorContract, Ptr{Cvoid}), contract, data)
1160end
1161
1162function CeedTensorContractReference(contract)
1163    ccall((:CeedTensorContractReference, libceed), Cint, (CeedTensorContract,), contract)
1164end
1165
1166function CeedTensorContractReferenceCopy(tensor, tensor_copy)
1167    ccall((:CeedTensorContractReferenceCopy, libceed), Cint, (CeedTensorContract, Ptr{CeedTensorContract}), tensor, tensor_copy)
1168end
1169
1170function CeedTensorContractDestroy(contract)
1171    ccall((:CeedTensorContractDestroy, libceed), Cint, (Ptr{CeedTensorContract},), contract)
1172end
1173
1174function CeedQFunctionRegister(name, source, vec_length, f, init)
1175    ccall((:CeedQFunctionRegister, libceed), Cint, (Ptr{Cchar}, Ptr{Cchar}, CeedInt, CeedQFunctionUser, Ptr{Cvoid}), name, source, vec_length, f, init)
1176end
1177
1178function CeedQFunctionSetFortranStatus(qf, status)
1179    ccall((:CeedQFunctionSetFortranStatus, libceed), Cint, (CeedQFunction, Bool), qf, status)
1180end
1181
1182function CeedQFunctionGetVectorLength(qf, vec_length)
1183    ccall((:CeedQFunctionGetVectorLength, libceed), Cint, (CeedQFunction, Ptr{CeedInt}), qf, vec_length)
1184end
1185
1186function CeedQFunctionGetNumArgs(qf, num_input_fields, num_output_fields)
1187    ccall((:CeedQFunctionGetNumArgs, libceed), Cint, (CeedQFunction, Ptr{CeedInt}, Ptr{CeedInt}), qf, num_input_fields, num_output_fields)
1188end
1189
1190function CeedQFunctionGetKernelName(qf, kernel_name)
1191    ccall((:CeedQFunctionGetKernelName, libceed), Cint, (CeedQFunction, Ptr{Ptr{Cchar}}), qf, kernel_name)
1192end
1193
1194function CeedQFunctionGetSourcePath(qf, source_path)
1195    ccall((:CeedQFunctionGetSourcePath, libceed), Cint, (CeedQFunction, Ptr{Ptr{Cchar}}), qf, source_path)
1196end
1197
1198function CeedQFunctionLoadSourceToBuffer(qf, source_buffer)
1199    ccall((:CeedQFunctionLoadSourceToBuffer, libceed), Cint, (CeedQFunction, Ptr{Ptr{Cchar}}), qf, source_buffer)
1200end
1201
1202function CeedQFunctionGetUserFunction(qf, f)
1203    ccall((:CeedQFunctionGetUserFunction, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionUser}), qf, f)
1204end
1205
1206function CeedQFunctionGetContext(qf, ctx)
1207    ccall((:CeedQFunctionGetContext, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionContext}), qf, ctx)
1208end
1209
1210function CeedQFunctionGetContextData(qf, mem_type, data)
1211    ccall((:CeedQFunctionGetContextData, libceed), Cint, (CeedQFunction, CeedMemType, Ptr{Cvoid}), qf, mem_type, data)
1212end
1213
1214function CeedQFunctionRestoreContextData(qf, data)
1215    ccall((:CeedQFunctionRestoreContextData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
1216end
1217
1218function CeedQFunctionGetInnerContext(qf, ctx)
1219    ccall((:CeedQFunctionGetInnerContext, libceed), Cint, (CeedQFunction, Ptr{CeedQFunctionContext}), qf, ctx)
1220end
1221
1222function CeedQFunctionGetInnerContextData(qf, mem_type, data)
1223    ccall((:CeedQFunctionGetInnerContextData, libceed), Cint, (CeedQFunction, CeedMemType, Ptr{Cvoid}), qf, mem_type, data)
1224end
1225
1226function CeedQFunctionRestoreInnerContextData(qf, data)
1227    ccall((:CeedQFunctionRestoreInnerContextData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
1228end
1229
1230function CeedQFunctionIsIdentity(qf, is_identity)
1231    ccall((:CeedQFunctionIsIdentity, libceed), Cint, (CeedQFunction, Ptr{Bool}), qf, is_identity)
1232end
1233
1234function CeedQFunctionIsContextWritable(qf, is_writable)
1235    ccall((:CeedQFunctionIsContextWritable, libceed), Cint, (CeedQFunction, Ptr{Bool}), qf, is_writable)
1236end
1237
1238function CeedQFunctionGetData(qf, data)
1239    ccall((:CeedQFunctionGetData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
1240end
1241
1242function CeedQFunctionSetData(qf, data)
1243    ccall((:CeedQFunctionSetData, libceed), Cint, (CeedQFunction, Ptr{Cvoid}), qf, data)
1244end
1245
1246function CeedQFunctionReference(qf)
1247    ccall((:CeedQFunctionReference, libceed), Cint, (CeedQFunction,), qf)
1248end
1249
1250function CeedQFunctionGetFlopsEstimate(qf, flops)
1251    ccall((:CeedQFunctionGetFlopsEstimate, libceed), Cint, (CeedQFunction, Ptr{CeedSize}), qf, flops)
1252end
1253
1254function CeedQFunctionContextGetCeed(ctx, ceed)
1255    ccall((:CeedQFunctionContextGetCeed, libceed), Cint, (CeedQFunctionContext, Ptr{Ceed}), ctx, ceed)
1256end
1257
1258function CeedQFunctionContextHasValidData(ctx, has_valid_data)
1259    ccall((:CeedQFunctionContextHasValidData, libceed), Cint, (CeedQFunctionContext, Ptr{Bool}), ctx, has_valid_data)
1260end
1261
1262function CeedQFunctionContextHasBorrowedDataOfType(ctx, mem_type, has_borrowed_data_of_type)
1263    ccall((:CeedQFunctionContextHasBorrowedDataOfType, libceed), Cint, (CeedQFunctionContext, CeedMemType, Ptr{Bool}), ctx, mem_type, has_borrowed_data_of_type)
1264end
1265
1266function CeedQFunctionContextGetState(ctx, state)
1267    ccall((:CeedQFunctionContextGetState, libceed), Cint, (CeedQFunctionContext, Ptr{UInt64}), ctx, state)
1268end
1269
1270function CeedQFunctionContextGetBackendData(ctx, data)
1271    ccall((:CeedQFunctionContextGetBackendData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
1272end
1273
1274function CeedQFunctionContextSetBackendData(ctx, data)
1275    ccall((:CeedQFunctionContextSetBackendData, libceed), Cint, (CeedQFunctionContext, Ptr{Cvoid}), ctx, data)
1276end
1277
1278function CeedQFunctionContextGetFieldLabel(ctx, field_name, field_label)
1279    ccall((:CeedQFunctionContextGetFieldLabel, libceed), Cint, (CeedQFunctionContext, Ptr{Cchar}, Ptr{CeedContextFieldLabel}), ctx, field_name, field_label)
1280end
1281
1282function CeedQFunctionContextSetGeneric(ctx, field_label, field_type, value)
1283    ccall((:CeedQFunctionContextSetGeneric, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, CeedContextFieldType, Ptr{Cvoid}), ctx, field_label, field_type, value)
1284end
1285
1286function CeedQFunctionContextGetGenericRead(ctx, field_label, field_type, num_values, value)
1287    ccall((:CeedQFunctionContextGetGenericRead, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, CeedContextFieldType, Ptr{Csize_t}, Ptr{Cvoid}), ctx, field_label, field_type, num_values, value)
1288end
1289
1290function CeedQFunctionContextRestoreGenericRead(ctx, field_label, field_type, value)
1291    ccall((:CeedQFunctionContextRestoreGenericRead, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, CeedContextFieldType, Ptr{Cvoid}), ctx, field_label, field_type, value)
1292end
1293
1294function CeedQFunctionContextSetDouble(ctx, field_label, values)
1295    ccall((:CeedQFunctionContextSetDouble, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Cdouble}), ctx, field_label, values)
1296end
1297
1298function CeedQFunctionContextGetDoubleRead(ctx, field_label, num_values, values)
1299    ccall((:CeedQFunctionContextGetDoubleRead, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Csize_t}, Ptr{Ptr{Cdouble}}), ctx, field_label, num_values, values)
1300end
1301
1302function CeedQFunctionContextRestoreDoubleRead(ctx, field_label, values)
1303    ccall((:CeedQFunctionContextRestoreDoubleRead, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Ptr{Cdouble}}), ctx, field_label, values)
1304end
1305
1306function CeedQFunctionContextSetInt32(ctx, field_label, values)
1307    ccall((:CeedQFunctionContextSetInt32, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Cint}), ctx, field_label, values)
1308end
1309
1310function CeedQFunctionContextGetInt32Read(ctx, field_label, num_values, values)
1311    ccall((:CeedQFunctionContextGetInt32Read, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Csize_t}, Ptr{Ptr{Cint}}), ctx, field_label, num_values, values)
1312end
1313
1314function CeedQFunctionContextRestoreInt32Read(ctx, field_label, values)
1315    ccall((:CeedQFunctionContextRestoreInt32Read, libceed), Cint, (CeedQFunctionContext, CeedContextFieldLabel, Ptr{Ptr{Cint}}), ctx, field_label, values)
1316end
1317
1318function CeedQFunctionContextGetDataDestroy(ctx, f_mem_type, f)
1319    ccall((:CeedQFunctionContextGetDataDestroy, libceed), Cint, (CeedQFunctionContext, Ptr{CeedMemType}, Ptr{CeedQFunctionContextDataDestroyUser}), ctx, f_mem_type, f)
1320end
1321
1322function CeedQFunctionContextReference(ctx)
1323    ccall((:CeedQFunctionContextReference, libceed), Cint, (CeedQFunctionContext,), ctx)
1324end
1325
1326function CeedOperatorCreateActivePointBlockRestriction(rstr, pointblock_rstr)
1327    ccall((:CeedOperatorCreateActivePointBlockRestriction, libceed), Cint, (CeedElemRestriction, Ptr{CeedElemRestriction}), rstr, pointblock_rstr)
1328end
1329
1330function CeedQFunctionAssemblyDataCreate(ceed, data)
1331    ccall((:CeedQFunctionAssemblyDataCreate, libceed), Cint, (Ceed, Ptr{CeedQFunctionAssemblyData}), ceed, data)
1332end
1333
1334function CeedQFunctionAssemblyDataReference(data)
1335    ccall((:CeedQFunctionAssemblyDataReference, libceed), Cint, (CeedQFunctionAssemblyData,), data)
1336end
1337
1338function CeedQFunctionAssemblyDataSetReuse(data, reuse_assembly_data)
1339    ccall((:CeedQFunctionAssemblyDataSetReuse, libceed), Cint, (CeedQFunctionAssemblyData, Bool), data, reuse_assembly_data)
1340end
1341
1342function CeedQFunctionAssemblyDataSetUpdateNeeded(data, needs_data_update)
1343    ccall((:CeedQFunctionAssemblyDataSetUpdateNeeded, libceed), Cint, (CeedQFunctionAssemblyData, Bool), data, needs_data_update)
1344end
1345
1346function CeedQFunctionAssemblyDataIsUpdateNeeded(data, is_update_needed)
1347    ccall((:CeedQFunctionAssemblyDataIsUpdateNeeded, libceed), Cint, (CeedQFunctionAssemblyData, Ptr{Bool}), data, is_update_needed)
1348end
1349
1350function CeedQFunctionAssemblyDataReferenceCopy(data, data_copy)
1351    ccall((:CeedQFunctionAssemblyDataReferenceCopy, libceed), Cint, (CeedQFunctionAssemblyData, Ptr{CeedQFunctionAssemblyData}), data, data_copy)
1352end
1353
1354function CeedQFunctionAssemblyDataIsSetup(data, is_setup)
1355    ccall((:CeedQFunctionAssemblyDataIsSetup, libceed), Cint, (CeedQFunctionAssemblyData, Ptr{Bool}), data, is_setup)
1356end
1357
1358function CeedQFunctionAssemblyDataSetObjects(data, vec, rstr)
1359    ccall((:CeedQFunctionAssemblyDataSetObjects, libceed), Cint, (CeedQFunctionAssemblyData, CeedVector, CeedElemRestriction), data, vec, rstr)
1360end
1361
1362function CeedQFunctionAssemblyDataGetObjects(data, vec, rstr)
1363    ccall((:CeedQFunctionAssemblyDataGetObjects, libceed), Cint, (CeedQFunctionAssemblyData, Ptr{CeedVector}, Ptr{CeedElemRestriction}), data, vec, rstr)
1364end
1365
1366function CeedQFunctionAssemblyDataDestroy(data)
1367    ccall((:CeedQFunctionAssemblyDataDestroy, libceed), Cint, (Ptr{CeedQFunctionAssemblyData},), data)
1368end
1369
1370function CeedOperatorAssemblyDataCreate(ceed, op, data)
1371    ccall((:CeedOperatorAssemblyDataCreate, libceed), Cint, (Ceed, CeedOperator, Ptr{CeedOperatorAssemblyData}), ceed, op, data)
1372end
1373
1374function CeedOperatorAssemblyDataGetEvalModes(data, num_active_bases_in, num_eval_modes_in, eval_modes_in, eval_mode_offsets_in, num_active_bases_out, num_eval_modes_out, eval_modes_out, eval_mode_offsets_out, num_output_components)
1375    ccall((:CeedOperatorAssemblyDataGetEvalModes, libceed), Cint, (CeedOperatorAssemblyData, Ptr{CeedInt}, Ptr{Ptr{CeedInt}}, Ptr{Ptr{Ptr{CeedEvalMode}}}, Ptr{Ptr{Ptr{CeedSize}}}, Ptr{CeedInt}, Ptr{Ptr{CeedInt}}, Ptr{Ptr{Ptr{CeedEvalMode}}}, Ptr{Ptr{Ptr{CeedSize}}}, Ptr{CeedSize}), data, num_active_bases_in, num_eval_modes_in, eval_modes_in, eval_mode_offsets_in, num_active_bases_out, num_eval_modes_out, eval_modes_out, eval_mode_offsets_out, num_output_components)
1376end
1377
1378function CeedOperatorAssemblyDataGetBases(data, num_active_bases_in, active_bases_in, assembled_bases_in, num_active_bases_out, active_bases_out, assembled_bases_out)
1379    ccall((:CeedOperatorAssemblyDataGetBases, libceed), Cint, (CeedOperatorAssemblyData, Ptr{CeedInt}, Ptr{Ptr{CeedBasis}}, Ptr{Ptr{Ptr{CeedScalar}}}, Ptr{CeedInt}, Ptr{Ptr{CeedBasis}}, Ptr{Ptr{Ptr{CeedScalar}}}), data, num_active_bases_in, active_bases_in, assembled_bases_in, num_active_bases_out, active_bases_out, assembled_bases_out)
1380end
1381
1382function CeedOperatorAssemblyDataGetElemRestrictions(data, num_active_elem_rstrs_in, active_elem_rstrs_in, num_active_elem_rstrs_out, active_elem_rstrs_out)
1383    ccall((:CeedOperatorAssemblyDataGetElemRestrictions, libceed), Cint, (CeedOperatorAssemblyData, Ptr{CeedInt}, Ptr{Ptr{CeedElemRestriction}}, Ptr{CeedInt}, Ptr{Ptr{CeedElemRestriction}}), data, num_active_elem_rstrs_in, active_elem_rstrs_in, num_active_elem_rstrs_out, active_elem_rstrs_out)
1384end
1385
1386function CeedOperatorAssemblyDataDestroy(data)
1387    ccall((:CeedOperatorAssemblyDataDestroy, libceed), Cint, (Ptr{CeedOperatorAssemblyData},), data)
1388end
1389
1390function CeedOperatorGetOperatorAssemblyData(op, data)
1391    ccall((:CeedOperatorGetOperatorAssemblyData, libceed), Cint, (CeedOperator, Ptr{CeedOperatorAssemblyData}), op, data)
1392end
1393
1394function CeedOperatorGetActiveBasis(op, active_basis)
1395    ccall((:CeedOperatorGetActiveBasis, libceed), Cint, (CeedOperator, Ptr{CeedBasis}), op, active_basis)
1396end
1397
1398function CeedOperatorGetActiveBases(op, active_input_basis, active_output_basis)
1399    ccall((:CeedOperatorGetActiveBases, libceed), Cint, (CeedOperator, Ptr{CeedBasis}, Ptr{CeedBasis}), op, active_input_basis, active_output_basis)
1400end
1401
1402function CeedOperatorGetActiveElemRestriction(op, active_rstr)
1403    ccall((:CeedOperatorGetActiveElemRestriction, libceed), Cint, (CeedOperator, Ptr{CeedElemRestriction}), op, active_rstr)
1404end
1405
1406function CeedOperatorGetActiveElemRestrictions(op, active_input_rstr, active_output_rstr)
1407    ccall((:CeedOperatorGetActiveElemRestrictions, libceed), Cint, (CeedOperator, Ptr{CeedElemRestriction}, Ptr{CeedElemRestriction}), op, active_input_rstr, active_output_rstr)
1408end
1409
1410function CeedOperatorGetNumArgs(op, num_args)
1411    ccall((:CeedOperatorGetNumArgs, libceed), Cint, (CeedOperator, Ptr{CeedInt}), op, num_args)
1412end
1413
1414function CeedOperatorIsSetupDone(op, is_setup_done)
1415    ccall((:CeedOperatorIsSetupDone, libceed), Cint, (CeedOperator, Ptr{Bool}), op, is_setup_done)
1416end
1417
1418function CeedOperatorGetQFunction(op, qf)
1419    ccall((:CeedOperatorGetQFunction, libceed), Cint, (CeedOperator, Ptr{CeedQFunction}), op, qf)
1420end
1421
1422function CeedOperatorIsComposite(op, is_composite)
1423    ccall((:CeedOperatorIsComposite, libceed), Cint, (CeedOperator, Ptr{Bool}), op, is_composite)
1424end
1425
1426function CeedOperatorGetData(op, data)
1427    ccall((:CeedOperatorGetData, libceed), Cint, (CeedOperator, Ptr{Cvoid}), op, data)
1428end
1429
1430function CeedOperatorSetData(op, data)
1431    ccall((:CeedOperatorSetData, libceed), Cint, (CeedOperator, Ptr{Cvoid}), op, data)
1432end
1433
1434function CeedOperatorReference(op)
1435    ccall((:CeedOperatorReference, libceed), Cint, (CeedOperator,), op)
1436end
1437
1438function CeedOperatorGetFallback(op, op_fallback)
1439    ccall((:CeedOperatorGetFallback, libceed), Cint, (CeedOperator, Ptr{CeedOperator}), op, op_fallback)
1440end
1441
1442function CeedOperatorGetFallbackParent(op, parent)
1443    ccall((:CeedOperatorGetFallbackParent, libceed), Cint, (CeedOperator, Ptr{CeedOperator}), op, parent)
1444end
1445
1446function CeedOperatorGetFallbackParentCeed(op, parent)
1447    ccall((:CeedOperatorGetFallbackParentCeed, libceed), Cint, (CeedOperator, Ptr{Ceed}), op, parent)
1448end
1449
1450function CeedOperatorSetSetupDone(op)
1451    ccall((:CeedOperatorSetSetupDone, libceed), Cint, (CeedOperator,), op)
1452end
1453
1454function CeedMatrixMatrixMultiply(ceed, mat_A, mat_B, mat_C, m, n, kk)
1455    ccall((:CeedMatrixMatrixMultiply, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt, CeedInt, CeedInt), ceed, mat_A, mat_B, mat_C, m, n, kk)
1456end
1457
1458function CeedQRFactorization(ceed, mat, tau, m, n)
1459    ccall((:CeedQRFactorization, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt, CeedInt), ceed, mat, tau, m, n)
1460end
1461
1462function CeedHouseholderApplyQ(mat_A, mat_Q, tau, t_mode, m, n, k, row, col)
1463    ccall((:CeedHouseholderApplyQ, libceed), Cint, (Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedTransposeMode, CeedInt, CeedInt, CeedInt, CeedInt, CeedInt), mat_A, mat_Q, tau, t_mode, m, n, k, row, col)
1464end
1465
1466function CeedSymmetricSchurDecomposition(ceed, mat, lambda, n)
1467    ccall((:CeedSymmetricSchurDecomposition, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt), ceed, mat, lambda, n)
1468end
1469
1470function CeedSimultaneousDiagonalization(ceed, mat_A, mat_B, x, lambda, n)
1471    ccall((:CeedSimultaneousDiagonalization, libceed), Cint, (Ceed, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, Ptr{CeedScalar}, CeedInt), ceed, mat_A, mat_B, x, lambda, n)
1472end
1473
1474# Skipping MacroDefinition: CEED_EXTERN extern CEED_VISIBILITY ( default )
1475
1476# Skipping MacroDefinition: CEED_QFUNCTION_HELPER_ATTR CEED_QFUNCTION_ATTR __attribute__ ( ( always_inline ) )
1477
1478# Skipping MacroDefinition: CEED_QFUNCTION_HELPER CEED_QFUNCTION_HELPER_ATTR static inline
1479
1480const CeedInt_FMT = "d"
1481
1482const CeedSize_FMT = "td"
1483
1484const CeedInt8_FMT = "d"
1485
1486const CEED_VERSION_MAJOR = 0
1487
1488const CEED_VERSION_MINOR = 12
1489
1490const CEED_VERSION_PATCH = 0
1491
1492const CEED_VERSION_RELEASE = true
1493
1494# Skipping MacroDefinition: CEED_INTERN extern CEED_VISIBILITY ( hidden )
1495
1496# Skipping MacroDefinition: CEED_UNUSED __attribute__ ( ( unused ) )
1497
1498const CEED_MAX_RESOURCE_LEN = 1024
1499
1500const CEED_MAX_BACKEND_PRIORITY = UINT_MAX
1501
1502const CEED_COMPOSITE_MAX = 16
1503
1504const CEED_FIELD_MAX = 16
1505
1506# Skipping MacroDefinition: CeedPragmaOptimizeOff _Pragma ( "clang optimize off" )
1507
1508# Skipping MacroDefinition: CeedPragmaOptimizeOn _Pragma ( "clang optimize on" )
1509