1 /**
2 * @file local.cpp
3 * @brief Python-specific SWIG support code for wrapping libSBML API
4 * @author Ben Bornstein
5 * @author Ben Kovitz
6 *
7 * <!--------------------------------------------------------------------------
8 * This file is part of libSBML. Please visit http://sbml.org for more
9 * information about SBML, and the latest version of libSBML.
10 *
11 * Copyright (C) 2020 jointly by the following organizations:
12 * 1. California Institute of Technology, Pasadena, CA, USA
13 * 2. University of Heidelberg, Heidelberg, Germany
14 * 3. University College London, London, UK
15 *
16 * Copyright (C) 2019 jointly by the following organizations:
17 * 1. California Institute of Technology, Pasadena, CA, USA
18 * 2. University of Heidelberg, Heidelberg, Germany
19 *
20 * Copyright (C) 2013-2018 jointly by the following organizations:
21 * 1. California Institute of Technology, Pasadena, CA, USA
22 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
23 * 3. University of Heidelberg, Heidelberg, Germany
24 *
25 * Copyright (C) 2009-2013 jointly by the following organizations:
26 * 1. California Institute of Technology, Pasadena, CA, USA
27 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
28 *
29 * Copyright (C) 2006-2008 by the California Institute of Technology,
30 * Pasadena, CA, USA
31 *
32 * Copyright (C) 2002-2005 jointly by the following organizations:
33 * 1. California Institute of Technology, Pasadena, CA, USA
34 * 2. Japan Science and Technology Agency, Japan
35 *
36 * This library is free software; you can redistribute it and/or modify it
37 * under the terms of the GNU Lesser General Public License as published by
38 * the Free Software Foundation. A copy of the license agreement is provided
39 * in the file named "LICENSE.txt" included with this software distribution
40 * and also available online as http://sbml.org/software/libsbml/license.html
41 * ---------------------------------------------------------------------- -->*/
42
43 #include <cstddef>
44 #include "sbml/SBase.h"
45
46 /**
47 * @return the most specific Swig type for the given SBMLExtension object.
48 */
49 struct swig_type_info*
GetDowncastSwigType(SBMLExtension * se)50 GetDowncastSwigType (SBMLExtension* se)
51 {
52 if (se == 0) return SWIGTYPE_p_SBMLExtension;
53
54 const std::string pkgName = se->getName();
55
56 #include "local-downcast-extension.cpp"
57
58 return SWIGTYPE_p_SBMLExtension;
59 }
60
61 /**
62 * @return the most specific Swig type for the given SBMLConverter object.
63 */
64 struct swig_type_info*
GetDowncastSwigType(SBMLConverter * con)65 GetDowncastSwigType (SBMLConverter* con)
66 {
67 if (con == 0) return SWIGTYPE_p_SBMLConverter;
68
69 const std::string& conName = con->getName();
70
71 if (conName == "SBML Units Converter")
72 return SWIGTYPE_p_SBMLUnitsConverter;
73 else if (conName == "SBML Strip Package Converter")
74 return SWIGTYPE_p_SBMLStripPackageConverter;
75 else if (conName == "SBML Rule Converter")
76 return SWIGTYPE_p_SBMLRuleConverter;
77 else if (conName == "SBML Reaction Converter")
78 return SWIGTYPE_p_SBMLReactionConverter;
79 else if (conName == "SBML Local Parameter Converter")
80 return SWIGTYPE_p_SBMLLocalParameterConverter;
81 else if (conName == "SBML Level Version Converter")
82 return SWIGTYPE_p_SBMLLevelVersionConverter;
83 else if (conName == "SBML Initial Assignment Converter")
84 return SWIGTYPE_p_SBMLInitialAssignmentConverter;
85 else if (conName == "SBML Infer Units Converter")
86 return SWIGTYPE_p_SBMLInferUnitsConverter;
87 else if (conName == "SBML Id Converter")
88 return SWIGTYPE_p_SBMLIdConverter;
89 else if (conName == "SBML Function Definition Converter")
90 return SWIGTYPE_p_SBMLFunctionDefinitionConverter;
91
92 #include "local-downcast-converters.cpp"
93
94 return SWIGTYPE_p_SBMLConverter;
95 }
96
97 /**
98 * @return the most specific Swig type for the given SBMLNamespaces object.
99 */
100 struct swig_type_info*
GetDowncastSwigType(SBMLNamespaces * se)101 GetDowncastSwigType (SBMLNamespaces* se)
102 {
103 if (se == 0) return SWIGTYPE_p_SBMLNamespaces;
104
105 const std::string pkgName = se->getPackageName();
106
107 #include "local-downcast-namespaces.cpp"
108
109 return SWIGTYPE_p_SBMLNamespaces;
110 }
111
112 /**
113 * @return the most specific Swig type for the given SBasePlugin object.
114 */
115 struct swig_type_info*
GetDowncastSwigType(SBasePlugin * sbp)116 GetDowncastSwigType (SBasePlugin* sbp)
117 {
118 if (sbp == 0) return SWIGTYPE_p_SBasePlugin;
119
120 const std::string pkgName = sbp->getPackageName();
121 SBase* sb = sbp->getParentSBMLObject();
122 if (!sb) return SWIGTYPE_p_SBasePlugin;
123
124 #include "local-downcast-plugins.cpp"
125
126 if (sb->getTypeCode() == SBML_DOCUMENT)
127 return SWIGTYPE_p_SBMLDocumentPlugin;
128
129 return SWIGTYPE_p_SBasePlugin;
130 }
131
132
133 struct swig_type_info*
134 GetDowncastSwigTypeForPackage (SBase* sb, const std::string &pkgName);
135
136 /**
137 * @return the most specific Swig type for the given SBase object.
138 */
139 struct swig_type_info*
GetDowncastSwigType(SBase * sb)140 GetDowncastSwigType (SBase* sb)
141 {
142 if (sb == 0) return SWIGTYPE_p_SBase;
143 const std::string pkgName = sb->getPackageName();
144 return GetDowncastSwigTypeForPackage(sb, pkgName);
145 }
146 /**
147 * @return the most specific Swig type for the given SBase object.
148 */
149 struct swig_type_info*
GetDowncastSwigTypeForPackage(SBase * sb,const std::string & pkgName)150 GetDowncastSwigTypeForPackage (SBase* sb, const std::string &pkgName)
151 {
152 if (sb == 0) return SWIGTYPE_p_SBase;
153
154 std::string name;
155
156 if (pkgName == "core")
157 {
158 switch (sb->getTypeCode())
159 {
160 case SBML_COMPARTMENT:
161 return SWIGTYPE_p_Compartment;
162
163 case SBML_COMPARTMENT_TYPE:
164 return SWIGTYPE_p_CompartmentType;
165
166 case SBML_CONSTRAINT:
167 return SWIGTYPE_p_Constraint;
168
169 case SBML_DOCUMENT:
170 return SWIGTYPE_p_SBMLDocument;
171
172 case SBML_EVENT:
173 return SWIGTYPE_p_Event;
174
175 case SBML_EVENT_ASSIGNMENT:
176 return SWIGTYPE_p_EventAssignment;
177
178 case SBML_FUNCTION_DEFINITION:
179 return SWIGTYPE_p_FunctionDefinition;
180
181 case SBML_INITIAL_ASSIGNMENT:
182 return SWIGTYPE_p_InitialAssignment;
183
184 case SBML_KINETIC_LAW:
185 return SWIGTYPE_p_KineticLaw;
186
187 case SBML_LIST_OF:
188 name = sb->getElementName();
189 if(name == "listOf"){
190 return SWIGTYPE_p_ListOf;
191 }
192 else if(name == "listOfCompartments"){
193 return SWIGTYPE_p_ListOfCompartments;
194 }
195 else if(name == "listOfCompartmentTypes"){
196 return SWIGTYPE_p_ListOfCompartmentTypes;
197 }
198 else if(name == "listOfConstraints"){
199 return SWIGTYPE_p_ListOfConstraints;
200 }
201 else if(name == "listOfEvents"){
202 return SWIGTYPE_p_ListOfEvents;
203 }
204 else if(name == "listOfEventAssignments"){
205 return SWIGTYPE_p_ListOfEventAssignments;
206 }
207 else if(name == "listOfFunctionDefinitions"){
208 return SWIGTYPE_p_ListOfFunctionDefinitions;
209 }
210 else if(name == "listOfInitialAssignments"){
211 return SWIGTYPE_p_ListOfInitialAssignments;
212 }
213 else if(name == "listOfParameters"){
214 return SWIGTYPE_p_ListOfParameters;
215 }
216 else if(name == "listOfLocalParameters"){
217 return SWIGTYPE_p_ListOfLocalParameters;
218 }
219 else if(name == "listOfReactions"){
220 return SWIGTYPE_p_ListOfReactions;
221 }
222 else if(name == "listOfRules"){
223 return SWIGTYPE_p_ListOfRules;
224 }
225 else if(name == "listOfSpecies"){
226 return SWIGTYPE_p_ListOfSpecies;
227 }
228 else if(name == "listOfUnknowns"){
229 return SWIGTYPE_p_ListOfSpeciesReferences;
230 }
231 else if(name == "listOfReactants"){
232 return SWIGTYPE_p_ListOfSpeciesReferences;
233 }
234 else if(name == "listOfProducts"){
235 return SWIGTYPE_p_ListOfSpeciesReferences;
236 }
237 else if(name == "listOfModifiers"){
238 return SWIGTYPE_p_ListOfSpeciesReferences;
239 }
240 else if(name == "listOfSpeciesTypes"){
241 return SWIGTYPE_p_ListOfSpeciesTypes;
242 }
243 else if(name == "listOfUnits"){
244 return SWIGTYPE_p_ListOfUnits;
245 }
246 else if(name == "listOfUnitDefinitions"){
247 return SWIGTYPE_p_ListOfUnitDefinitions;
248 }
249 return SWIGTYPE_p_ListOf;
250
251 case SBML_MODEL:
252 return SWIGTYPE_p_Model;
253
254 case SBML_PARAMETER:
255 return SWIGTYPE_p_Parameter;
256
257 case SBML_LOCAL_PARAMETER:
258 return SWIGTYPE_p_LocalParameter;
259
260 case SBML_REACTION:
261 return SWIGTYPE_p_Reaction;
262
263 case SBML_SPECIES:
264 return SWIGTYPE_p_Species;
265
266 case SBML_SPECIES_REFERENCE:
267 return SWIGTYPE_p_SpeciesReference;
268
269 case SBML_MODIFIER_SPECIES_REFERENCE:
270 return SWIGTYPE_p_ModifierSpeciesReference;
271
272 case SBML_SPECIES_TYPE:
273 return SWIGTYPE_p_SpeciesType;
274
275 case SBML_UNIT_DEFINITION:
276 return SWIGTYPE_p_UnitDefinition;
277
278 case SBML_UNIT:
279 return SWIGTYPE_p_Unit;
280
281 case SBML_ALGEBRAIC_RULE:
282 return SWIGTYPE_p_AlgebraicRule;
283
284 case SBML_ASSIGNMENT_RULE:
285 return SWIGTYPE_p_AssignmentRule;
286
287 case SBML_RATE_RULE:
288 return SWIGTYPE_p_RateRule;
289
290 case SBML_DELAY:
291 return SWIGTYPE_p_Delay;
292
293 case SBML_TRIGGER:
294 return SWIGTYPE_p_Trigger;
295
296 case SBML_STOICHIOMETRY_MATH:
297 return SWIGTYPE_p_StoichiometryMath;
298
299 case SBML_PRIORITY:
300 return SWIGTYPE_p_Priority;
301
302 default:
303 return SWIGTYPE_p_SBase;
304 }
305 }
306
307 #include "local-downcast.cpp"
308
309 return SWIGTYPE_p_SBase;
310 }
311
312
313 /**
314 * @return the most specific Swig type for the given ASTBasePlugin object.
315 */
316 struct swig_type_info*
GetDowncastSwigType(ASTBasePlugin * sbp)317 GetDowncastSwigType (ASTBasePlugin* sbp)
318 {
319 if (sbp == 0) return SWIGTYPE_p_ASTBasePlugin;
320
321 const std::string pkgName = sbp->getPackageName();
322
323 #include "local-downcast-astplugins.cpp"
324
325 return SWIGTYPE_p_ASTBasePlugin;
326 }
327
328
329
330 /* Compatibility bug fix for swig 2.0.7 and Python 3.
331 * See http://patch-tracker.debian.org/patch/series/view/swig2.0/2.0.7-3/pyint_fromsize_t.diff
332 */
333 #if (PY_MAJOR_VERSION >= 3)
334 #define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
335 #endif
336