1*891038deSjeremylt /// @file 2*891038deSjeremylt /// Test creation, setting, and taking data for QFunctionContext 3*891038deSjeremylt /// \test Test creation, setting, and taking data for QFunctionContext 4*891038deSjeremylt #include <ceed.h> 5*891038deSjeremylt #include <math.h> 6*891038deSjeremylt 7*891038deSjeremylt int main(int argc, char **argv) { 8*891038deSjeremylt Ceed ceed; 9*891038deSjeremylt CeedQFunctionContext ctx; 10*891038deSjeremylt CeedScalar ctxData[5] = {1, 2, 3, 4, 5}, *ctxDataCopy; 11*891038deSjeremylt 12*891038deSjeremylt CeedInit(argv[1], &ceed); 13*891038deSjeremylt 14*891038deSjeremylt CeedQFunctionContextCreate(ceed, &ctx); 15*891038deSjeremylt CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_USE_POINTER, 16*891038deSjeremylt sizeof(ctxData), &ctxData); 17*891038deSjeremylt 18*891038deSjeremylt CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 19*891038deSjeremylt ctxDataCopy[4] = 6; 20*891038deSjeremylt CeedQFunctionContextRestoreData(ctx, &ctxDataCopy); 21*891038deSjeremylt if (fabs(ctxData[4] - 6) > 1.e-14) 22*891038deSjeremylt // LCOV_EXCL_START 23*891038deSjeremylt printf("error modifying data: %f != 6.0\n", ctxData[4]); 24*891038deSjeremylt // LCOV_EXCL_STOP 25*891038deSjeremylt 26*891038deSjeremylt // Verify that taking the data revokes access 27*891038deSjeremylt CeedQFunctionContextTakeData(ctx, CEED_MEM_HOST, &ctxDataCopy); 28*891038deSjeremylt CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 29*891038deSjeremylt 30*891038deSjeremylt // LCOV_EXCL_START 31*891038deSjeremylt CeedQFunctionContextDestroy(&ctx); 32*891038deSjeremylt CeedDestroy(&ceed); 33*891038deSjeremylt return 0; 34*891038deSjeremylt // LCOV_EXCL_STOP 35*891038deSjeremylt } 36