#ifndef CEED_QFUNCTION_DEFS_H
#define CEED_QFUNCTION_DEFS_H
#include <stddef.h>
#include <stdint.h>
#ifndef CEED_QFUNCTION_ATTR
#ifndef __NO_INLINE__
#if defined(__GNUC__) || defined(__clang__)
#define CEED_QFUNCTION_ATTR __attribute__((flatten))
#elif defined(__INTEL_COMPILER)
#define CEED_QFUNCTION_ATTR _Pragma("forceinline")
#else
#define CEED_QFUNCTION_ATTR
#endif
#else
#define CEED_QFUNCTION_ATTR
#endif
#if defined(__GNUC__) || defined(__clang__)
#define CEED_QFUNCTION_HELPER_ATTR CEED_QFUNCTION_ATTR __attribute__((always_inline))
#else
#define CEED_QFUNCTION_HELPER_ATTR CEED_QFUNCTION_ATTR
#endif
#endif
#ifndef CEED_QFUNCTION
#define CEED_QFUNCTION(name) \
static const char name##_loc[] = __FILE__ ":" #name; \
CEED_QFUNCTION_ATTR static int name
#endif
#ifndef CEED_QFUNCTION_HELPER
#define CEED_QFUNCTION_HELPER CEED_QFUNCTION_HELPER_ATTR static inline
#endif
#ifndef CEED_Q_VLA
#define CEED_Q_VLA Q
#endif
#ifndef CeedPragmaSIMD
#if defined(__INTEL_COMPILER)
#define CeedPragmaSIMD _Pragma("vector")
#elif defined(__GNUC__) && __GNUC__ >= 5
#define CeedPragmaSIMD _Pragma("GCC ivdep")
#elif defined(_OPENMP) && _OPENMP >= 201307
#define CeedPragmaSIMD _Pragma("omp simd")
#else
#define CeedPragmaSIMD
#endif
#endif
typedef int32_t CeedInt;
#define CeedInt_FMT "d"
typedef ptrdiff_t CeedSize;
#define CeedSize_FMT "td"
typedef signed char CeedInt8;
#define CeedInt8_FMT "d"
typedef enum {
CEED_SCALAR_FP32,
CEED_SCALAR_FP64
} CeedScalarType;
#include "ceed-f64.h"
typedef enum {
CEED_ERROR_SUCCESS = 0,
CEED_ERROR_MINOR = 1,
CEED_ERROR_DIMENSION = 2,
CEED_ERROR_INCOMPLETE = 3,
CEED_ERROR_INCOMPATIBLE = 4,
CEED_ERROR_ACCESS = 5,
CEED_ERROR_MAJOR = -1,
CEED_ERROR_BACKEND = -2,
CEED_ERROR_UNSUPPORTED = -3,
} CeedErrorType;
typedef enum {
CEED_MEM_HOST,
CEED_MEM_DEVICE,
} CeedMemType;
typedef enum {
CEED_COPY_VALUES,
CEED_USE_POINTER,
CEED_OWN_POINTER,
} CeedCopyMode;
typedef enum {
CEED_NORM_1,
CEED_NORM_2,
CEED_NORM_MAX,
} CeedNormType;
typedef enum {
CEED_NOTRANSPOSE,
CEED_TRANSPOSE
} CeedTransposeMode;
typedef enum {
CEED_EVAL_NONE = 0,
CEED_EVAL_INTERP = 1,
CEED_EVAL_GRAD = 2,
CEED_EVAL_DIV = 4,
CEED_EVAL_CURL = 8,
CEED_EVAL_WEIGHT = 16,
} CeedEvalMode;
typedef enum {
CEED_GAUSS = 0,
CEED_GAUSS_LOBATTO = 1,
} CeedQuadMode;
typedef enum {
CEED_TOPOLOGY_LINE = 1 << 16 | 0,
CEED_TOPOLOGY_TRIANGLE = 2 << 16 | 1,
CEED_TOPOLOGY_QUAD = 2 << 16 | 2,
CEED_TOPOLOGY_TET = 3 << 16 | 3,
CEED_TOPOLOGY_PYRAMID = 3 << 16 | 4,
CEED_TOPOLOGY_PRISM = 3 << 16 | 5,
CEED_TOPOLOGY_HEX = 3 << 16 | 6,
} CeedElemTopology;
typedef enum {
CEED_CONTEXT_FIELD_DOUBLE = 1,
CEED_CONTEXT_FIELD_INT32 = 2,
} CeedContextFieldType;
#endif