xref: /libCEED/rust/libceed-sys/c-src/interface/ceed-qfunction-register.c (revision c21e34e2069f004c216393392d2c47e0444dd836)
1 // Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3 //
4 // SPDX-License-Identifier: BSD-2-Clause
5 //
6 // This file is part of CEED:  http://github.com/ceed
7 
8 #include <ceed.h>
9 #include <ceed/backend.h>
10 #include <stdbool.h>
11 
12 static bool register_all_called;
13 
14 #define CEED_GALLERY_QFUNCTION(name) CEED_INTERN int name(void);
15 #include "../gallery/ceed-gallery-list.h"
16 #undef CEED_GALLERY_QFUNCTION
17 
18 /**
19   @brief Register the gallery of pre-configured @ref CeedQFunction.
20 
21   This is called automatically by @ref CeedQFunctionCreateInteriorByName() and thus normally need not be called by users.
22   Users can call @ref CeedQFunctionRegister() to register additional backends.
23 
24   @return An error code: 0 - success, otherwise - failure
25 
26   @sa CeedQFunctionRegister()
27 
28   @ref User
29 **/
30 int CeedQFunctionRegisterAll(void) {
31   int ierr = 0;
32 
33   CeedPragmaCritical(CeedQFunctionRegisterAll) {
34     if (!register_all_called) {
35       CeedDebugEnv256(CEED_DEBUG_COLOR_SUCCESS, "\n---------- Registering Gallery QFunctions ----------\n");
36 #define CEED_GALLERY_QFUNCTION(name) \
37   if (!ierr) ierr = name();
38 #include "../gallery/ceed-gallery-list.h"
39 #undef CEED_GALLERY_QFUNCTION
40       register_all_called = true;
41     }
42   }
43   return ierr;
44 }
45