xref: /libCEED/interface/ceed-register.c (revision 356036fa84f714fa73ef64c9a80ce2028dde816f)
1 // Copyright (c) 2017-2022, 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_BACKEND(name, ...) CEED_INTERN int name(void);
15 #include "../backends/ceed-backend-list.h"
16 #undef CEED_BACKEND
17 
18 /**
19   @brief Register all preconfigured backends.
20 
21   This is called automatically by CeedInit() and thus normally need not be called by users.
22   Users can call CeedRegister() to register additional backends.
23 
24   @return An error code: 0 - success, otherwise - failure
25 
26   @sa CeedRegister()
27 
28   @ref User
29 **/
30 int CeedRegisterAll() {
31   if (register_all_called) return 0;
32   register_all_called = true;
33 
34 #define CEED_BACKEND(name, ...) CeedChk(name());
35 #include "../backends/ceed-backend-list.h"
36 #undef CEED_BACKEND
37   return CEED_ERROR_SUCCESS;
38 }
39