1 //
2 // CDDL HEADER START
3 //
4 // The contents of this file are subject to the terms of the Common Development
5 // 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 LICENSE.CDDL.
13 // If applicable, add the following below this CDDL HEADER, with the fields
14 // enclosed by brackets "[]" replaced with your own identifying information:
15 //
16 // Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
17 //
18 // CDDL HEADER END
19 //
20
21 //
22 // Copyright (c) 2016--2020, Regents of the University of Minnesota.
23 // All rights reserved.
24 //
25 // Contributors:
26 // Ryan S. Elliott
27 //
28
29 //
30 // Release: This file is part of the kim-api-2.2.1 package.
31 //
32
33
34 #include <string>
35
36 #ifndef KIM_LOG_VERBOSITY_HPP_
37 #include "KIM_LogVerbosity.hpp"
38 #endif
39 extern "C" {
40 #ifndef KIM_LOG_VERBOSITY_H_
41 #include "KIM_LogVerbosity.h"
42 #endif
43 } // extern "C"
44
45 #ifndef KIM_COMPUTE_ARGUMENT_NAME_HPP_
46 #include "KIM_ComputeArgumentName.hpp"
47 #endif
48 extern "C" {
49 #ifndef KIM_COMPUTE_ARGUMENT_NAME_H_
50 #include "KIM_ComputeArgumentName.h"
51 #endif
52 } // extern "C"
53
54 #ifndef KIM_COMPUTE_CALLBACK_NAME_HPP_
55 #include "KIM_ComputeCallbackName.hpp"
56 #endif
57 extern "C" {
58 #ifndef KIM_COMPUTE_CALLBACK_NAME_H_
59 #include "KIM_ComputeCallbackName.h"
60 #endif
61 } // extern "C"
62
63 #ifndef KIM_MODEL_COMPUTE_ARGUMENTS_HPP_
64 #include "KIM_ModelComputeArguments.hpp"
65 #endif
66 extern "C" {
67 #ifndef KIM_MODEL_COMPUTE_ARGUMENTS_H_
68 #include "KIM_ModelComputeArguments.h"
69 #endif
70 } // extern "C"
71
72
73 struct KIM_ModelComputeArguments
74 {
75 void * p;
76 };
77
78 #define CONVERT_POINTER \
79 KIM::ModelComputeArguments * pModelComputeArguments \
80 = reinterpret_cast<KIM::ModelComputeArguments *>( \
81 modelComputeArguments->p)
82
83 namespace
84 {
makeLogVerbosityCpp(KIM_LogVerbosity const logVerbosity)85 KIM::LogVerbosity makeLogVerbosityCpp(KIM_LogVerbosity const logVerbosity)
86 {
87 return KIM::LogVerbosity(logVerbosity.logVerbosityID);
88 }
89
90 KIM::ComputeArgumentName
makeComputeArgumentNameCpp(KIM_ComputeArgumentName const computeArgumentName)91 makeComputeArgumentNameCpp(KIM_ComputeArgumentName const computeArgumentName)
92 {
93 return KIM::ComputeArgumentName(computeArgumentName.computeArgumentNameID);
94 }
95
96 KIM::ComputeCallbackName
makeComputeCallbackNameCpp(KIM_ComputeCallbackName const computeCallbackName)97 makeComputeCallbackNameCpp(KIM_ComputeCallbackName const computeCallbackName)
98 {
99 return KIM::ComputeCallbackName(computeCallbackName.computeCallbackNameID);
100 }
101 } // namespace
102
103
104 extern "C" {
KIM_ModelComputeArguments_GetNeighborList(KIM_ModelComputeArguments const * const modelComputeArguments,int const neighborListIndex,int const particleNumber,int * const numberOfNeighbors,int const ** const neighborsOfParticle)105 int KIM_ModelComputeArguments_GetNeighborList(
106 KIM_ModelComputeArguments const * const modelComputeArguments,
107 int const neighborListIndex,
108 int const particleNumber,
109 int * const numberOfNeighbors,
110 int const ** const neighborsOfParticle)
111 {
112 CONVERT_POINTER;
113
114 return pModelComputeArguments->GetNeighborList(neighborListIndex,
115 particleNumber,
116 numberOfNeighbors,
117 neighborsOfParticle);
118 }
119
KIM_ModelComputeArguments_ProcessDEDrTerm(KIM_ModelComputeArguments const * const modelComputeArguments,double const de,double const r,double const * const dx,int const i,int const j)120 int KIM_ModelComputeArguments_ProcessDEDrTerm(
121 KIM_ModelComputeArguments const * const modelComputeArguments,
122 double const de,
123 double const r,
124 double const * const dx,
125 int const i,
126 int const j)
127 {
128 CONVERT_POINTER;
129
130 return pModelComputeArguments->ProcessDEDrTerm(de, r, dx, i, j);
131 }
132
KIM_ModelComputeArguments_ProcessD2EDr2Term(KIM_ModelComputeArguments const * const modelComputeArguments,double const de,double const * const r,double const * const dx,int const * const i,int const * const j)133 int KIM_ModelComputeArguments_ProcessD2EDr2Term(
134 KIM_ModelComputeArguments const * const modelComputeArguments,
135 double const de,
136 double const * const r,
137 double const * const dx,
138 int const * const i,
139 int const * const j)
140 {
141 CONVERT_POINTER;
142
143 return pModelComputeArguments->ProcessD2EDr2Term(de, r, dx, i, j);
144 }
145
KIM_ModelComputeArguments_GetArgumentPointerInteger(KIM_ModelComputeArguments const * const modelComputeArguments,KIM_ComputeArgumentName const computeArgumentName,int ** const ptr)146 int KIM_ModelComputeArguments_GetArgumentPointerInteger(
147 KIM_ModelComputeArguments const * const modelComputeArguments,
148 KIM_ComputeArgumentName const computeArgumentName,
149 int ** const ptr)
150 {
151 CONVERT_POINTER;
152
153 return pModelComputeArguments->GetArgumentPointer(
154 makeComputeArgumentNameCpp(computeArgumentName), ptr);
155 }
156
KIM_ModelComputeArguments_GetArgumentPointerDouble(KIM_ModelComputeArguments const * const modelComputeArguments,KIM_ComputeArgumentName const computeArgumentName,double ** const ptr)157 int KIM_ModelComputeArguments_GetArgumentPointerDouble(
158 KIM_ModelComputeArguments const * const modelComputeArguments,
159 KIM_ComputeArgumentName const computeArgumentName,
160 double ** const ptr)
161 {
162 CONVERT_POINTER;
163
164 return pModelComputeArguments->GetArgumentPointer(
165 makeComputeArgumentNameCpp(computeArgumentName), ptr);
166 }
167
KIM_ModelComputeArguments_IsCallbackPresent(KIM_ModelComputeArguments const * const modelComputeArguments,KIM_ComputeCallbackName const computeCallbackName,int * const present)168 int KIM_ModelComputeArguments_IsCallbackPresent(
169 KIM_ModelComputeArguments const * const modelComputeArguments,
170 KIM_ComputeCallbackName const computeCallbackName,
171 int * const present)
172 {
173 CONVERT_POINTER;
174
175 KIM::ComputeCallbackName computeCallbackNameC
176 = makeComputeCallbackNameCpp(computeCallbackName);
177 return pModelComputeArguments->IsCallbackPresent(computeCallbackNameC,
178 present);
179 }
180
KIM_ModelComputeArguments_SetModelBufferPointer(KIM_ModelComputeArguments * const modelComputeArguments,void * const ptr)181 void KIM_ModelComputeArguments_SetModelBufferPointer(
182 KIM_ModelComputeArguments * const modelComputeArguments, void * const ptr)
183 {
184 CONVERT_POINTER;
185
186 pModelComputeArguments->SetModelBufferPointer(ptr);
187 }
188
KIM_ModelComputeArguments_GetModelBufferPointer(KIM_ModelComputeArguments const * const modelComputeArguments,void ** const ptr)189 void KIM_ModelComputeArguments_GetModelBufferPointer(
190 KIM_ModelComputeArguments const * const modelComputeArguments,
191 void ** const ptr)
192 {
193 CONVERT_POINTER;
194
195 pModelComputeArguments->GetModelBufferPointer(ptr);
196 }
197
KIM_ModelComputeArguments_LogEntry(KIM_ModelComputeArguments const * const modelComputeArguments,KIM_LogVerbosity const logVerbosity,char const * const message,int const lineNumber,char const * const fileName)198 void KIM_ModelComputeArguments_LogEntry(
199 KIM_ModelComputeArguments const * const modelComputeArguments,
200 KIM_LogVerbosity const logVerbosity,
201 char const * const message,
202 int const lineNumber,
203 char const * const fileName)
204 {
205 CONVERT_POINTER;
206
207 pModelComputeArguments->LogEntry(
208 makeLogVerbosityCpp(logVerbosity), message, lineNumber, fileName);
209 }
210
KIM_ModelComputeArguments_ToString(KIM_ModelComputeArguments const * const modelComputeArguments)211 char const * KIM_ModelComputeArguments_ToString(
212 KIM_ModelComputeArguments const * const modelComputeArguments)
213 {
214 CONVERT_POINTER;
215
216 return pModelComputeArguments->ToString().c_str();
217 }
218
219 } // extern "C"
220