ceed.c (ad6481ce28fcfada16ee6d8a13bbacd137fe686a) ceed.c (ecc88aeb6e47c91d01ac230341895a796d10ab95)
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#define _POSIX_C_SOURCE 200112

--- 108 unchanged lines hidden (view full) ---

117 @param[in] priority Integer priority.
118 Lower values are preferred in case the resource requested by CeedInit() has non-unique best prefix match.
119
120 @return An error code: 0 - success, otherwise - failure
121
122 @ref Developer
123**/
124int CeedRegisterImpl(const char *prefix, int (*init)(const char *, Ceed), unsigned int priority) {
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#define _POSIX_C_SOURCE 200112

--- 108 unchanged lines hidden (view full) ---

117 @param[in] priority Integer priority.
118 Lower values are preferred in case the resource requested by CeedInit() has non-unique best prefix match.
119
120 @return An error code: 0 - success, otherwise - failure
121
122 @ref Developer
123**/
124int CeedRegisterImpl(const char *prefix, int (*init)(const char *, Ceed), unsigned int priority) {
125 if (num_backends >= sizeof(backends) / sizeof(backends[0]))
125 if (num_backends >= sizeof(backends) / sizeof(backends[0])) {
126 // LCOV_EXCL_START
127 return CeedError(NULL, CEED_ERROR_MAJOR, "Too many backends");
126 // LCOV_EXCL_START
127 return CeedError(NULL, CEED_ERROR_MAJOR, "Too many backends");
128 // LCOV_EXCL_STOP
128 // LCOV_EXCL_STOP
129 }
129
130 strncpy(backends[num_backends].prefix, prefix, CEED_MAX_RESOURCE_LEN);
131 backends[num_backends].prefix[CEED_MAX_RESOURCE_LEN - 1] = 0;
132 backends[num_backends].init = init;
133 backends[num_backends].priority = priority;
134 num_backends++;
135 return CEED_ERROR_SUCCESS;
136}

--- 896 unchanged lines hidden (view full) ---

1033
1034 @param[in,out] ceed Address of Ceed context to destroy
1035
1036 @return An error code: 0 - success, otherwise - failure
1037
1038 @ref User
1039**/
1040int CeedDestroy(Ceed *ceed) {
130
131 strncpy(backends[num_backends].prefix, prefix, CEED_MAX_RESOURCE_LEN);
132 backends[num_backends].prefix[CEED_MAX_RESOURCE_LEN - 1] = 0;
133 backends[num_backends].init = init;
134 backends[num_backends].priority = priority;
135 num_backends++;
136 return CEED_ERROR_SUCCESS;
137}

--- 896 unchanged lines hidden (view full) ---

1034
1035 @param[in,out] ceed Address of Ceed context to destroy
1036
1037 @return An error code: 0 - success, otherwise - failure
1038
1039 @ref User
1040**/
1041int CeedDestroy(Ceed *ceed) {
1041 if (!*ceed || --(*ceed)->ref_count > 0) {
1042 *ceed = NULL;
1043 return CEED_ERROR_SUCCESS;
1044 }
1042 if (!*ceed || --(*ceed)->ref_count > 0) return CEED_ERROR_SUCCESS;
1045 if ((*ceed)->delegate) CeedCall(CeedDestroy(&(*ceed)->delegate));
1046
1047 if ((*ceed)->obj_delegate_count > 0) {
1048 for (CeedInt i = 0; i < (*ceed)->obj_delegate_count; i++) {
1049 CeedCall(CeedDestroy(&((*ceed)->obj_delegates[i].delegate)));
1050 CeedCall(CeedFree(&(*ceed)->obj_delegates[i].obj_name));
1051 }
1052 CeedCall(CeedFree(&(*ceed)->obj_delegates));

--- 202 unchanged lines hidden ---
1043 if ((*ceed)->delegate) CeedCall(CeedDestroy(&(*ceed)->delegate));
1044
1045 if ((*ceed)->obj_delegate_count > 0) {
1046 for (CeedInt i = 0; i < (*ceed)->obj_delegate_count; i++) {
1047 CeedCall(CeedDestroy(&((*ceed)->obj_delegates[i].delegate)));
1048 CeedCall(CeedFree(&(*ceed)->obj_delegates[i].obj_name));
1049 }
1050 CeedCall(CeedFree(&(*ceed)->obj_delegates));

--- 202 unchanged lines hidden ---