xref: /libCEED/rust/libceed-sys/c-src/interface/ceed-register.c (revision ac5aa7bc7371bf37e58d1cad715ff1f25da1e838)
13d8e8822SJeremy L Thompson // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
23d8e8822SJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
33d8e8822SJeremy L Thompson //
43d8e8822SJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause
53d8e8822SJeremy L Thompson //
63d8e8822SJeremy L Thompson // This file is part of CEED:  http://github.com/ceed
73d8e8822SJeremy L Thompson 
849aac155SJeremy L Thompson #include <ceed.h>
92b730f8bSJeremy L Thompson #include <ceed/backend.h>
103d576824SJeremy L Thompson #include <stdbool.h>
111d013790SJed Brown 
121d013790SJed Brown static bool register_all_called;
131d013790SJed Brown 
1449aac155SJeremy L Thompson #define CEED_BACKEND(name, ...) CEED_INTERN int name(void);
151d013790SJed Brown #include "../backends/ceed-backend-list.h"
1649aac155SJeremy L Thompson #undef CEED_BACKEND
171d013790SJed Brown 
181d013790SJed Brown /**
19*ac5aa7bcSJeremy L Thompson   @brief Register all pre-configured backends.
201d013790SJed Brown 
211d013790SJed Brown   This is called automatically by CeedInit() and thus normally need not be called by users.
221d013790SJed Brown   Users can call CeedRegister() to register additional backends.
231d013790SJed Brown 
241d013790SJed Brown   @return An error code: 0 - success, otherwise - failure
251d013790SJed Brown 
261d013790SJed Brown   @sa CeedRegister()
271d013790SJed Brown 
28ded9b81dSJeremy L Thompson   @ref User
291d013790SJed Brown **/
301d013790SJed Brown int CeedRegisterAll() {
311d013790SJed Brown   if (register_all_called) return 0;
321d013790SJed Brown   register_all_called = true;
331d013790SJed Brown 
3449aac155SJeremy L Thompson #define CEED_BACKEND(name, ...) CeedChk(name());
351d013790SJed Brown #include "../backends/ceed-backend-list.h"
3649aac155SJeremy L Thompson #undef CEED_BACKEND
37e15f9bd0SJeremy L Thompson   return CEED_ERROR_SUCCESS;
381d013790SJed Brown }
39