1 //
2 // CDDL HEADER START
3 //
4 // The contents of this file are subject to the terms of the Common
5 // Development and Distribution License Version 1.0 (the "License").
6 //
7 // You can obtain a copy of the license at
8 // http://www.opensource.org/licenses/CDDL-1.0. See the License for the
9 // specific language governing permissions and limitations under the License.
10 //
11 // When distributing Covered Code, include this CDDL HEADER in each file and
12 // include the License file in a prominent location with the name
13 // LICENSE.CDDL.
14 // If applicable, add the following below this CDDL HEADER, with the fields
15 // enclosed by brackets "[]" replaced with your own identifying information:
16 //
17 // Portions Copyright (c) [yyyy] [name of copyright owner].
18 // All rights reserved.
19 //
20 // CDDL HEADER END
21 //
22
23 //
24 // Copyright (c) 2016--2020, Regents of the University of Minnesota.
25 // All rights reserved.
26 //
27 // Contributors:
28 // Ryan S. Elliott
29 //
30
31 //
32 // Release: This file is part of the kim-api-2.2.1 package.
33 //
34
35
36 #include <string>
37
38 #ifndef KIM_SUPPORT_STATUS_HPP_
39 #include "KIM_SupportStatus.hpp"
40 #endif
41 extern "C" {
42 #ifndef KIM_SUPPORT_STATUS_H_
43 #include "KIM_SupportStatus.h"
44 #endif
45 } // extern "C"
46
47 namespace
48 {
makeSupportStatusCpp(KIM_SupportStatus const supportStatus)49 KIM::SupportStatus makeSupportStatusCpp(KIM_SupportStatus const supportStatus)
50 {
51 KIM::SupportStatus const * const supportStatusCpp
52 = reinterpret_cast<KIM::SupportStatus const *>(&supportStatus);
53 return *supportStatusCpp;
54 }
55
makeSupportStatusC(KIM::SupportStatus const supportStatus)56 KIM_SupportStatus makeSupportStatusC(KIM::SupportStatus const supportStatus)
57 {
58 KIM_SupportStatus const * const supportStatusC
59 = reinterpret_cast<KIM_SupportStatus const *>(&supportStatus);
60 return *supportStatusC;
61 }
62 } // namespace
63
64 extern "C" {
KIM_SupportStatus_FromString(char const * const str)65 KIM_SupportStatus KIM_SupportStatus_FromString(char const * const str)
66 {
67 return makeSupportStatusC(KIM::SupportStatus(std::string(str)));
68 }
69
KIM_SupportStatus_Known(KIM_SupportStatus const supportStatus)70 int KIM_SupportStatus_Known(KIM_SupportStatus const supportStatus)
71 {
72 return makeSupportStatusCpp(supportStatus).Known();
73 }
74
KIM_SupportStatus_Equal(KIM_SupportStatus const lhs,KIM_SupportStatus const rhs)75 int KIM_SupportStatus_Equal(KIM_SupportStatus const lhs,
76 KIM_SupportStatus const rhs)
77 {
78 return (lhs.supportStatusID == rhs.supportStatusID);
79 }
80
KIM_SupportStatus_NotEqual(KIM_SupportStatus const lhs,KIM_SupportStatus const rhs)81 int KIM_SupportStatus_NotEqual(KIM_SupportStatus const lhs,
82 KIM_SupportStatus const rhs)
83 {
84 return (!KIM_SupportStatus_Equal(lhs, rhs));
85 }
86
KIM_SupportStatus_ToString(KIM_SupportStatus const supportStatus)87 char const * KIM_SupportStatus_ToString(KIM_SupportStatus const supportStatus)
88 {
89 return makeSupportStatusCpp(supportStatus).ToString().c_str();
90 }
91
92 #include "KIM_SupportStatus.inc"
93 KIM_SupportStatus const KIM_SUPPORT_STATUS_requiredByAPI = {ID_requiredByAPI};
94 KIM_SupportStatus const KIM_SUPPORT_STATUS_notSupported = {ID_notSupported};
95 KIM_SupportStatus const KIM_SUPPORT_STATUS_required = {ID_required};
96 KIM_SupportStatus const KIM_SUPPORT_STATUS_optional = {ID_optional};
97
KIM_SUPPORT_STATUS_GetNumberOfSupportStatuses(int * const numberOfSupportStatuses)98 void KIM_SUPPORT_STATUS_GetNumberOfSupportStatuses(
99 int * const numberOfSupportStatuses)
100 {
101 KIM::SUPPORT_STATUS::GetNumberOfSupportStatuses(numberOfSupportStatuses);
102 }
103
KIM_SUPPORT_STATUS_GetSupportStatus(int const index,KIM_SupportStatus * const supportStatus)104 int KIM_SUPPORT_STATUS_GetSupportStatus(int const index,
105 KIM_SupportStatus * const supportStatus)
106 {
107 KIM::SupportStatus supportStatusCpp;
108 int error = KIM::SUPPORT_STATUS::GetSupportStatus(index, &supportStatusCpp);
109 if (error) return error;
110 *supportStatus = makeSupportStatusC(supportStatusCpp);
111 return false;
112 }
113
114 } // extern "C"
115