xref: /libCEED/interface/ceed-register.c (revision ac5aa7bc7371bf37e58d1cad715ff1f25da1e838)
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 pre-configured 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