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_SPECIES_NAME_HPP_
39 #include "KIM_SpeciesName.hpp"
40 #endif
41 extern "C" {
42 #ifndef KIM_SPECIES_NAME_H_
43 #include "KIM_SpeciesName.h"
44 #endif
45 } // extern "C"
46
47 namespace
48 {
makeSpeciesNameCpp(KIM_SpeciesName const speciesName)49 KIM::SpeciesName makeSpeciesNameCpp(KIM_SpeciesName const speciesName)
50 {
51 KIM::SpeciesName const * const speciesNameCpp
52 = reinterpret_cast<KIM::SpeciesName const *>(&speciesName);
53 return *speciesNameCpp;
54 }
55
makeSpeciesNameC(KIM::SpeciesName speciesName)56 KIM_SpeciesName makeSpeciesNameC(KIM::SpeciesName speciesName)
57 {
58 KIM_SpeciesName const * const speciesNameC
59 = reinterpret_cast<KIM_SpeciesName const *>(&speciesName);
60 return *speciesNameC;
61 }
62 } // namespace
63
64 extern "C" {
KIM_SpeciesName_FromString(char const * const str)65 KIM_SpeciesName KIM_SpeciesName_FromString(char const * const str)
66 {
67 return makeSpeciesNameC(KIM::SpeciesName(std::string(str)));
68 }
69
KIM_SpeciesName_Known(KIM_SpeciesName const speciesName)70 int KIM_SpeciesName_Known(KIM_SpeciesName const speciesName)
71 {
72 return makeSpeciesNameCpp(speciesName).Known();
73 }
74
KIM_SpeciesName_Equal(KIM_SpeciesName const lhs,KIM_SpeciesName const rhs)75 int KIM_SpeciesName_Equal(KIM_SpeciesName const lhs, KIM_SpeciesName const rhs)
76 {
77 return (lhs.speciesNameID == rhs.speciesNameID);
78 }
79
KIM_SpeciesName_NotEqual(KIM_SpeciesName const lhs,KIM_SpeciesName const rhs)80 int KIM_SpeciesName_NotEqual(KIM_SpeciesName const lhs,
81 KIM_SpeciesName const rhs)
82 {
83 return (!KIM_SpeciesName_Equal(lhs, rhs));
84 }
85
KIM_SpeciesName_ToString(KIM_SpeciesName const speciesName)86 char const * KIM_SpeciesName_ToString(KIM_SpeciesName const speciesName)
87 {
88 return makeSpeciesNameCpp(speciesName).ToString().c_str();
89 }
90
91
92 #include "KIM_SpeciesName.inc"
93 KIM_SpeciesName const KIM_SPECIES_NAME_electron = {ID_electron}; // electron
94 KIM_SpeciesName const KIM_SPECIES_NAME_H = {ID_H}; // Hydrogen
95 KIM_SpeciesName const KIM_SPECIES_NAME_He = {ID_He}; // Helium
96 KIM_SpeciesName const KIM_SPECIES_NAME_Li = {ID_Li}; // Lithium
97 KIM_SpeciesName const KIM_SPECIES_NAME_Be = {ID_Be}; // Beryllium
98 KIM_SpeciesName const KIM_SPECIES_NAME_B = {ID_B}; // Boron
99 KIM_SpeciesName const KIM_SPECIES_NAME_C = {ID_C}; // Carbon
100 KIM_SpeciesName const KIM_SPECIES_NAME_N = {ID_N}; // Nitrogen
101 KIM_SpeciesName const KIM_SPECIES_NAME_O = {ID_O}; // Oxygen
102 KIM_SpeciesName const KIM_SPECIES_NAME_F = {ID_F}; // Fluorine
103 KIM_SpeciesName const KIM_SPECIES_NAME_Ne = {ID_Ne}; // Neon
104 KIM_SpeciesName const KIM_SPECIES_NAME_Na = {ID_Na}; // Sodium
105 KIM_SpeciesName const KIM_SPECIES_NAME_Mg = {ID_Mg}; // Magnesium
106 KIM_SpeciesName const KIM_SPECIES_NAME_Al = {ID_Al}; // Aluminum
107 KIM_SpeciesName const KIM_SPECIES_NAME_Si = {ID_Si}; // Silicon
108 KIM_SpeciesName const KIM_SPECIES_NAME_P = {ID_P}; // Phosphorus
109 KIM_SpeciesName const KIM_SPECIES_NAME_S = {ID_S}; // Sulfur
110 KIM_SpeciesName const KIM_SPECIES_NAME_Cl = {ID_Cl}; // Chlorine
111 KIM_SpeciesName const KIM_SPECIES_NAME_Ar = {ID_Ar}; // Argon
112 KIM_SpeciesName const KIM_SPECIES_NAME_K = {ID_K}; // Potassium
113 KIM_SpeciesName const KIM_SPECIES_NAME_Ca = {ID_Ca}; // Calcium
114 KIM_SpeciesName const KIM_SPECIES_NAME_Sc = {ID_Sc}; // Scandium
115 KIM_SpeciesName const KIM_SPECIES_NAME_Ti = {ID_Ti}; // Titanium
116 KIM_SpeciesName const KIM_SPECIES_NAME_V = {ID_V}; // Vanadium
117 KIM_SpeciesName const KIM_SPECIES_NAME_Cr = {ID_Cr}; // Chromium
118 KIM_SpeciesName const KIM_SPECIES_NAME_Mn = {ID_Mn}; // Manganese
119 KIM_SpeciesName const KIM_SPECIES_NAME_Fe = {ID_Fe}; // Iron
120 KIM_SpeciesName const KIM_SPECIES_NAME_Co = {ID_Co}; // Cobalt
121 KIM_SpeciesName const KIM_SPECIES_NAME_Ni = {ID_Ni}; // Nickel
122 KIM_SpeciesName const KIM_SPECIES_NAME_Cu = {ID_Cu}; // Copper
123 KIM_SpeciesName const KIM_SPECIES_NAME_Zn = {ID_Zn}; // Zinc
124 KIM_SpeciesName const KIM_SPECIES_NAME_Ga = {ID_Ga}; // Gallium
125 KIM_SpeciesName const KIM_SPECIES_NAME_Ge = {ID_Ge}; // Germanium
126 KIM_SpeciesName const KIM_SPECIES_NAME_As = {ID_As}; // Arsenic
127 KIM_SpeciesName const KIM_SPECIES_NAME_Se = {ID_Se}; // Selenium
128 KIM_SpeciesName const KIM_SPECIES_NAME_Br = {ID_Br}; // Bromine
129 KIM_SpeciesName const KIM_SPECIES_NAME_Kr = {ID_Kr}; // Krypton
130 KIM_SpeciesName const KIM_SPECIES_NAME_Rb = {ID_Rb}; // Rubidium
131 KIM_SpeciesName const KIM_SPECIES_NAME_Sr = {ID_Sr}; // Strontium
132 KIM_SpeciesName const KIM_SPECIES_NAME_Y = {ID_Y}; // Yttrium
133 KIM_SpeciesName const KIM_SPECIES_NAME_Zr = {ID_Zr}; // Zirconium
134 KIM_SpeciesName const KIM_SPECIES_NAME_Nb = {ID_Nb}; // Niobium
135 KIM_SpeciesName const KIM_SPECIES_NAME_Mo = {ID_Mo}; // Molybdenum
136 KIM_SpeciesName const KIM_SPECIES_NAME_Tc = {ID_Tc}; // Technetium
137 KIM_SpeciesName const KIM_SPECIES_NAME_Ru = {ID_Ru}; // Ruthenium
138 KIM_SpeciesName const KIM_SPECIES_NAME_Rh = {ID_Rh}; // Rhodium
139 KIM_SpeciesName const KIM_SPECIES_NAME_Pd = {ID_Pd}; // Palladium
140 KIM_SpeciesName const KIM_SPECIES_NAME_Ag = {ID_Ag}; // Silver
141 KIM_SpeciesName const KIM_SPECIES_NAME_Cd = {ID_Cd}; // Cadmium
142 KIM_SpeciesName const KIM_SPECIES_NAME_In = {ID_In}; // Indium
143 KIM_SpeciesName const KIM_SPECIES_NAME_Sn = {ID_Sn}; // Tin
144 KIM_SpeciesName const KIM_SPECIES_NAME_Sb = {ID_Sb}; // Antimony
145 KIM_SpeciesName const KIM_SPECIES_NAME_Te = {ID_Te}; // Tellurium
146 KIM_SpeciesName const KIM_SPECIES_NAME_I = {ID_I}; // Iodine
147 KIM_SpeciesName const KIM_SPECIES_NAME_Xe = {ID_Xe}; // Xenon
148 KIM_SpeciesName const KIM_SPECIES_NAME_Cs = {ID_Cs}; // Cesium
149 KIM_SpeciesName const KIM_SPECIES_NAME_Ba = {ID_Ba}; // Barium
150 KIM_SpeciesName const KIM_SPECIES_NAME_La = {ID_La}; // Lanthanum
151 KIM_SpeciesName const KIM_SPECIES_NAME_Ce = {ID_Ce}; // Cerium
152 KIM_SpeciesName const KIM_SPECIES_NAME_Pr = {ID_Pr}; // Praseodymium
153 KIM_SpeciesName const KIM_SPECIES_NAME_Nd = {ID_Nd}; // Neodymium
154 KIM_SpeciesName const KIM_SPECIES_NAME_Pm = {ID_Pm}; // Promethium
155 KIM_SpeciesName const KIM_SPECIES_NAME_Sm = {ID_Sm}; // Samarium
156 KIM_SpeciesName const KIM_SPECIES_NAME_Eu = {ID_Eu}; // Europium
157 KIM_SpeciesName const KIM_SPECIES_NAME_Gd = {ID_Gd}; // Gadolinium
158 KIM_SpeciesName const KIM_SPECIES_NAME_Tb = {ID_Tb}; // Terbium
159 KIM_SpeciesName const KIM_SPECIES_NAME_Dy = {ID_Dy}; // Dysprosium
160 KIM_SpeciesName const KIM_SPECIES_NAME_Ho = {ID_Ho}; // Holmium
161 KIM_SpeciesName const KIM_SPECIES_NAME_Er = {ID_Er}; // Erbium
162 KIM_SpeciesName const KIM_SPECIES_NAME_Tm = {ID_Tm}; // Thulium
163 KIM_SpeciesName const KIM_SPECIES_NAME_Yb = {ID_Yb}; // Ytterbium
164 KIM_SpeciesName const KIM_SPECIES_NAME_Lu = {ID_Lu}; // Lutetium
165 KIM_SpeciesName const KIM_SPECIES_NAME_Hf = {ID_Hf}; // Hafnium
166 KIM_SpeciesName const KIM_SPECIES_NAME_Ta = {ID_Ta}; // Tantalum
167 KIM_SpeciesName const KIM_SPECIES_NAME_W = {ID_W}; // Tungsten
168 KIM_SpeciesName const KIM_SPECIES_NAME_Re = {ID_Re}; // Rhenium
169 KIM_SpeciesName const KIM_SPECIES_NAME_Os = {ID_Os}; // Osmium
170 KIM_SpeciesName const KIM_SPECIES_NAME_Ir = {ID_Ir}; // Iridium
171 KIM_SpeciesName const KIM_SPECIES_NAME_Pt = {ID_Pt}; // Platinum
172 KIM_SpeciesName const KIM_SPECIES_NAME_Au = {ID_Au}; // Gold
173 KIM_SpeciesName const KIM_SPECIES_NAME_Hg = {ID_Hg}; // Mercury
174 KIM_SpeciesName const KIM_SPECIES_NAME_Tl = {ID_Tl}; // Thallium
175 KIM_SpeciesName const KIM_SPECIES_NAME_Pb = {ID_Pb}; // Lead
176 KIM_SpeciesName const KIM_SPECIES_NAME_Bi = {ID_Bi}; // Bismuth
177 KIM_SpeciesName const KIM_SPECIES_NAME_Po = {ID_Po}; // Polonium
178 KIM_SpeciesName const KIM_SPECIES_NAME_At = {ID_At}; // Astatine
179 KIM_SpeciesName const KIM_SPECIES_NAME_Rn = {ID_Rn}; // Radon
180 KIM_SpeciesName const KIM_SPECIES_NAME_Fr = {ID_Fr}; // Francium
181 KIM_SpeciesName const KIM_SPECIES_NAME_Ra = {ID_Ra}; // Radium
182 KIM_SpeciesName const KIM_SPECIES_NAME_Ac = {ID_Ac}; // Actinium
183 KIM_SpeciesName const KIM_SPECIES_NAME_Th = {ID_Th}; // Thorium
184 KIM_SpeciesName const KIM_SPECIES_NAME_Pa = {ID_Pa}; // Protactinium
185 KIM_SpeciesName const KIM_SPECIES_NAME_U = {ID_U}; // Uranium
186 KIM_SpeciesName const KIM_SPECIES_NAME_Np = {ID_Np}; // Neptunium
187 KIM_SpeciesName const KIM_SPECIES_NAME_Pu = {ID_Pu}; // Plutonium
188 KIM_SpeciesName const KIM_SPECIES_NAME_Am = {ID_Am}; // Americium
189 KIM_SpeciesName const KIM_SPECIES_NAME_Cm = {ID_Cm}; // Curium
190 KIM_SpeciesName const KIM_SPECIES_NAME_Bk = {ID_Bk}; // Berkelium
191 KIM_SpeciesName const KIM_SPECIES_NAME_Cf = {ID_Cf}; // Californium
192 KIM_SpeciesName const KIM_SPECIES_NAME_Es = {ID_Es}; // Einsteinium
193 KIM_SpeciesName const KIM_SPECIES_NAME_Fm = {ID_Fm}; // Fermium
194 KIM_SpeciesName const KIM_SPECIES_NAME_Md = {ID_Md}; // Mendelevium
195 KIM_SpeciesName const KIM_SPECIES_NAME_No = {ID_No}; // Nobelium
196 KIM_SpeciesName const KIM_SPECIES_NAME_Lr = {ID_Lr}; // Lawrencium
197 KIM_SpeciesName const KIM_SPECIES_NAME_Rf = {ID_Rf}; // Rutherfordium
198 KIM_SpeciesName const KIM_SPECIES_NAME_Db = {ID_Db}; // Dubnium
199 KIM_SpeciesName const KIM_SPECIES_NAME_Sg = {ID_Sg}; // Seaborgium
200 KIM_SpeciesName const KIM_SPECIES_NAME_Bh = {ID_Bh}; // Bohrium
201 KIM_SpeciesName const KIM_SPECIES_NAME_Hs = {ID_Hs}; // Hassium
202 KIM_SpeciesName const KIM_SPECIES_NAME_Mt = {ID_Mt}; // Meitnerium
203 KIM_SpeciesName const KIM_SPECIES_NAME_Ds = {ID_Ds}; // Darmstadtium
204 KIM_SpeciesName const KIM_SPECIES_NAME_Rg = {ID_Rg}; // Roentgenium
205 KIM_SpeciesName const KIM_SPECIES_NAME_Cn = {ID_Cn}; // Copernicium
206 KIM_SpeciesName const KIM_SPECIES_NAME_Nh = {ID_Nh}; // Nihonium
207 KIM_SpeciesName const KIM_SPECIES_NAME_Fl = {ID_Fl}; // Flerovium
208 KIM_SpeciesName const KIM_SPECIES_NAME_Mc = {ID_Mc}; // Moscovium
209 KIM_SpeciesName const KIM_SPECIES_NAME_Lv = {ID_Lv}; // Livermorium
210 KIM_SpeciesName const KIM_SPECIES_NAME_Ts = {ID_Ts}; // Tennessine
211 KIM_SpeciesName const KIM_SPECIES_NAME_Og = {ID_Og}; // Oganesson
212 KIM_SpeciesName const KIM_SPECIES_NAME_user01 = {ID_user01}; // user defined
213 KIM_SpeciesName const KIM_SPECIES_NAME_user02 = {ID_user02}; // user defined
214 KIM_SpeciesName const KIM_SPECIES_NAME_user03 = {ID_user03}; // user defined
215 KIM_SpeciesName const KIM_SPECIES_NAME_user04 = {ID_user04}; // user defined
216 KIM_SpeciesName const KIM_SPECIES_NAME_user05 = {ID_user05}; // user defined
217 KIM_SpeciesName const KIM_SPECIES_NAME_user06 = {ID_user06}; // user defined
218 KIM_SpeciesName const KIM_SPECIES_NAME_user07 = {ID_user07}; // user defined
219 KIM_SpeciesName const KIM_SPECIES_NAME_user08 = {ID_user08}; // user defined
220 KIM_SpeciesName const KIM_SPECIES_NAME_user09 = {ID_user09}; // user defined
221 KIM_SpeciesName const KIM_SPECIES_NAME_user10 = {ID_user10}; // user defined
222 KIM_SpeciesName const KIM_SPECIES_NAME_user11 = {ID_user11}; // user defined
223 KIM_SpeciesName const KIM_SPECIES_NAME_user12 = {ID_user12}; // user defined
224 KIM_SpeciesName const KIM_SPECIES_NAME_user13 = {ID_user13}; // user defined
225 KIM_SpeciesName const KIM_SPECIES_NAME_user14 = {ID_user14}; // user defined
226 KIM_SpeciesName const KIM_SPECIES_NAME_user15 = {ID_user15}; // user defined
227 KIM_SpeciesName const KIM_SPECIES_NAME_user16 = {ID_user16}; // user defined
228 KIM_SpeciesName const KIM_SPECIES_NAME_user17 = {ID_user17}; // user defined
229 KIM_SpeciesName const KIM_SPECIES_NAME_user18 = {ID_user18}; // user defined
230 KIM_SpeciesName const KIM_SPECIES_NAME_user19 = {ID_user19}; // user defined
231 KIM_SpeciesName const KIM_SPECIES_NAME_user20 = {ID_user20}; // user defined
232
KIM_SPECIES_NAME_GetNumberOfSpeciesNames(int * const numberOfSpeciesNames)233 void KIM_SPECIES_NAME_GetNumberOfSpeciesNames(int * const numberOfSpeciesNames)
234 {
235 KIM::SPECIES_NAME::GetNumberOfSpeciesNames(numberOfSpeciesNames);
236 }
237
KIM_SPECIES_NAME_GetSpeciesName(int const index,KIM_SpeciesName * const speciesName)238 int KIM_SPECIES_NAME_GetSpeciesName(int const index,
239 KIM_SpeciesName * const speciesName)
240 {
241 KIM::SpeciesName speciesNameCpp;
242 int error = KIM::SPECIES_NAME::GetSpeciesName(index, &speciesNameCpp);
243 if (error) return error;
244 *speciesName = makeSpeciesNameC(speciesNameCpp);
245 return false;
246 }
247
248 } // extern "C"
249