epanet-plus 0.2.1__cp311-cp311-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. docs/conf.py +67 -0
  2. epanet-msx-src/dispersion.h +27 -0
  3. epanet-msx-src/hash.c +107 -0
  4. epanet-msx-src/hash.h +28 -0
  5. epanet-msx-src/include/epanetmsx.h +104 -0
  6. epanet-msx-src/include/epanetmsx_export.h +42 -0
  7. epanet-msx-src/mathexpr.c +937 -0
  8. epanet-msx-src/mathexpr.h +39 -0
  9. epanet-msx-src/mempool.c +204 -0
  10. epanet-msx-src/mempool.h +24 -0
  11. epanet-msx-src/msxchem.c +1285 -0
  12. epanet-msx-src/msxcompiler.c +368 -0
  13. epanet-msx-src/msxdict.h +42 -0
  14. epanet-msx-src/msxdispersion.c +586 -0
  15. epanet-msx-src/msxerr.c +116 -0
  16. epanet-msx-src/msxfile.c +260 -0
  17. epanet-msx-src/msxfuncs.c +175 -0
  18. epanet-msx-src/msxfuncs.h +35 -0
  19. epanet-msx-src/msxinp.c +1504 -0
  20. epanet-msx-src/msxout.c +398 -0
  21. epanet-msx-src/msxproj.c +791 -0
  22. epanet-msx-src/msxqual.c +2011 -0
  23. epanet-msx-src/msxrpt.c +400 -0
  24. epanet-msx-src/msxtank.c +422 -0
  25. epanet-msx-src/msxtoolkit.c +1164 -0
  26. epanet-msx-src/msxtypes.h +551 -0
  27. epanet-msx-src/msxutils.c +524 -0
  28. epanet-msx-src/msxutils.h +56 -0
  29. epanet-msx-src/newton.c +158 -0
  30. epanet-msx-src/newton.h +34 -0
  31. epanet-msx-src/rk5.c +287 -0
  32. epanet-msx-src/rk5.h +39 -0
  33. epanet-msx-src/ros2.c +293 -0
  34. epanet-msx-src/ros2.h +35 -0
  35. epanet-msx-src/smatrix.c +816 -0
  36. epanet-msx-src/smatrix.h +29 -0
  37. epanet-src/AUTHORS +60 -0
  38. epanet-src/LICENSE +21 -0
  39. epanet-src/enumstxt.h +151 -0
  40. epanet-src/epanet.c +5937 -0
  41. epanet-src/epanet2.c +961 -0
  42. epanet-src/epanet2.def +131 -0
  43. epanet-src/errors.dat +79 -0
  44. epanet-src/flowbalance.c +186 -0
  45. epanet-src/funcs.h +219 -0
  46. epanet-src/genmmd.c +1000 -0
  47. epanet-src/hash.c +177 -0
  48. epanet-src/hash.h +28 -0
  49. epanet-src/hydcoeffs.c +1303 -0
  50. epanet-src/hydraul.c +1164 -0
  51. epanet-src/hydsolver.c +781 -0
  52. epanet-src/hydstatus.c +442 -0
  53. epanet-src/include/epanet2.h +466 -0
  54. epanet-src/include/epanet2_2.h +1962 -0
  55. epanet-src/include/epanet2_enums.h +518 -0
  56. epanet-src/inpfile.c +884 -0
  57. epanet-src/input1.c +672 -0
  58. epanet-src/input2.c +970 -0
  59. epanet-src/input3.c +2265 -0
  60. epanet-src/leakage.c +527 -0
  61. epanet-src/mempool.c +146 -0
  62. epanet-src/mempool.h +24 -0
  63. epanet-src/output.c +853 -0
  64. epanet-src/project.c +1691 -0
  65. epanet-src/quality.c +695 -0
  66. epanet-src/qualreact.c +800 -0
  67. epanet-src/qualroute.c +696 -0
  68. epanet-src/report.c +1559 -0
  69. epanet-src/rules.c +1500 -0
  70. epanet-src/smatrix.c +871 -0
  71. epanet-src/text.h +508 -0
  72. epanet-src/types.h +928 -0
  73. epanet-src/util/cstr_helper.c +59 -0
  74. epanet-src/util/cstr_helper.h +38 -0
  75. epanet-src/util/errormanager.c +92 -0
  76. epanet-src/util/errormanager.h +39 -0
  77. epanet-src/util/filemanager.c +212 -0
  78. epanet-src/util/filemanager.h +81 -0
  79. epanet-src/validate.c +408 -0
  80. epanet.cpython-311-darwin.so +0 -0
  81. epanet_plus/VERSION +1 -0
  82. epanet_plus/__init__.py +8 -0
  83. epanet_plus/epanet_plus.c +118 -0
  84. epanet_plus/epanet_toolkit.py +2833 -0
  85. epanet_plus/epanet_wrapper.py +2434 -0
  86. epanet_plus/include/epanet_plus.h +9 -0
  87. epanet_plus-0.2.1.dist-info/METADATA +157 -0
  88. epanet_plus-0.2.1.dist-info/RECORD +106 -0
  89. epanet_plus-0.2.1.dist-info/WHEEL +6 -0
  90. epanet_plus-0.2.1.dist-info/licenses/LICENSE +21 -0
  91. epanet_plus-0.2.1.dist-info/top_level.txt +11 -0
  92. examples/basic_usage.py +35 -0
  93. examples/epanet_msx.py +35 -0
  94. python-extension/ext.c +344 -0
  95. python-extension/pyepanet.c +2771 -0
  96. python-extension/pyepanet.h +144 -0
  97. python-extension/pyepanet2.c +2453 -0
  98. python-extension/pyepanet2.h +142 -0
  99. python-extension/pyepanet_plus.c +43 -0
  100. python-extension/pyepanet_plus.h +4 -0
  101. python-extension/pyepanetmsx.c +524 -0
  102. python-extension/pyepanetmsx.h +35 -0
  103. tests/test_epanet.py +18 -0
  104. tests/test_epanetmsx.py +38 -0
  105. tests/test_epyt.py +115 -0
  106. tests/test_load_inp_from_buffer.py +59 -0
@@ -0,0 +1,2453 @@
1
+ #include <Python.h>
2
+ #include "epanet2.h"
3
+ #include "types.h"
4
+
5
+
6
+ PyObject* method_ENopen(PyObject* self, PyObject* args)
7
+ {
8
+ char *inpFile, *rptFile, *outFile = NULL;
9
+
10
+ if(!PyArg_ParseTuple(args, "sss", &inpFile, &rptFile, &outFile)) {
11
+ return NULL;
12
+ }
13
+
14
+ PyObject* err = PyLong_FromLong(ENopen(inpFile, rptFile, outFile));
15
+
16
+ PyObject* r = PyTuple_Pack(1, err);
17
+ Py_DECREF(err);
18
+
19
+ return r;
20
+ }
21
+
22
+ PyObject* method_ENopenX(PyObject* self, PyObject* args)
23
+ {
24
+ char *inpFile, *rptFile, *outFile = NULL;
25
+
26
+ if(!PyArg_ParseTuple(args, "sss", &inpFile, &rptFile, &outFile)) {
27
+ return NULL;
28
+ }
29
+
30
+ PyObject* err = PyLong_FromLong(ENopenX(inpFile, rptFile, outFile));
31
+
32
+ PyObject* r = PyTuple_Pack(1, err);
33
+ Py_DECREF(err);
34
+
35
+ return r;
36
+ }
37
+
38
+ PyObject* method_ENclose(PyObject* self, PyObject* Py_UNUSED(args))
39
+ {
40
+ PyObject* err = PyLong_FromLong(ENclose());
41
+
42
+ PyObject* r = PyTuple_Pack(1, err);
43
+ Py_DECREF(err);
44
+
45
+ return r;
46
+ }
47
+
48
+ PyObject* method_ENaddcontrol(PyObject* self, PyObject* args)
49
+ {
50
+ int type;
51
+ int linkIndex;
52
+ float setting;
53
+ int nodeIndex;
54
+ float level;
55
+ int index;
56
+
57
+ if(!PyArg_ParseTuple(args, "iifif", &type, &linkIndex, &setting, &nodeIndex, &level)) {
58
+ return NULL;
59
+ }
60
+
61
+ PyObject* err = PyLong_FromLong(ENaddcontrol(type, linkIndex, setting, nodeIndex, level, &index));
62
+ PyObject* pyIndex = PyLong_FromLong(index);
63
+
64
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
65
+ Py_DECREF(err);
66
+ Py_DECREF(pyIndex);
67
+
68
+ return r;
69
+ }
70
+
71
+ PyObject* method_ENaddcurve(PyObject* self, PyObject* args)
72
+ {
73
+ char* id = NULL;
74
+ if(!PyArg_ParseTuple(args, "s", &id)) {
75
+ return NULL;
76
+ }
77
+
78
+ PyObject* err = PyLong_FromLong(ENaddcurve(id));
79
+
80
+ PyObject* r = PyTuple_Pack(1, err);
81
+ Py_DECREF(err);
82
+
83
+ return r;
84
+ }
85
+
86
+ PyObject* method_ENadddemand(PyObject* self, PyObject* args)
87
+ {
88
+ int nodeIndex;
89
+ float baseDemand;
90
+ char* demandPattern = NULL;
91
+ char* demandName = NULL;
92
+
93
+ if(!PyArg_ParseTuple(args, "ifss", &nodeIndex, &baseDemand, &demandPattern, &demandName)) {
94
+ return NULL;
95
+ }
96
+
97
+ PyObject* err = PyLong_FromLong(ENadddemand(nodeIndex, baseDemand, demandPattern, demandName));
98
+
99
+ PyObject* r = PyTuple_Pack(1, err);
100
+ Py_DECREF(err);
101
+
102
+ return r;
103
+ }
104
+
105
+ PyObject* method_ENaddlink(PyObject* self, PyObject* args)
106
+ {
107
+ char* id = NULL;
108
+ int linkType;
109
+ char* fromNode = NULL;
110
+ char* toNode = NULL;
111
+ int index;
112
+
113
+ if(!PyArg_ParseTuple(args, "siss", &id, &linkType, &fromNode, &toNode)) {
114
+ return NULL;
115
+ }
116
+
117
+ PyObject* err = PyLong_FromLong(ENaddlink(id, linkType, fromNode, toNode, &index));
118
+ PyObject* pyIndex = PyLong_FromLong(index);
119
+
120
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
121
+ Py_DECREF(err);
122
+ Py_DECREF(pyIndex);
123
+
124
+ return r;
125
+ }
126
+
127
+ PyObject* method_ENaddnode(PyObject* self, PyObject* args)
128
+ {
129
+ char* id = NULL;
130
+ int nodeType;
131
+ int index;
132
+
133
+ if(!PyArg_ParseTuple(args, "si", &id, &nodeType)) {
134
+ return NULL;
135
+ }
136
+
137
+ PyObject* err = PyLong_FromLong(ENaddnode(id, nodeType, &index));
138
+ PyObject* pyIndex = PyLong_FromLong(index);
139
+
140
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
141
+ Py_DECREF(err);
142
+ Py_DECREF(pyIndex);
143
+
144
+ return r;
145
+ }
146
+
147
+ PyObject* method_ENaddpattern(PyObject* self, PyObject* args)
148
+ {
149
+ char* id = NULL;
150
+
151
+ if(!PyArg_ParseTuple(args, "s", &id)) {
152
+ return NULL;
153
+ }
154
+
155
+ PyObject* err = PyLong_FromLong(ENaddpattern(id));
156
+
157
+ PyObject* r = PyTuple_Pack(1, err);
158
+ Py_DECREF(err);
159
+
160
+ return r;
161
+ }
162
+
163
+ PyObject* method_ENaddrule(PyObject* self, PyObject* args)
164
+ {
165
+ char* rule = NULL;
166
+
167
+ if(!PyArg_ParseTuple(args, "s", &rule)) {
168
+ return NULL;
169
+ }
170
+
171
+ PyObject* err = PyLong_FromLong(ENaddrule(rule));
172
+
173
+ PyObject* r = PyTuple_Pack(1, err);
174
+ Py_DECREF(err);
175
+
176
+ return r;
177
+ }
178
+
179
+ PyObject* method_ENclearreport(PyObject* self, PyObject* Py_UNUSED(args))
180
+ {
181
+ PyObject* err = PyLong_FromLong(ENclearreport());
182
+
183
+ PyObject* r = PyTuple_Pack(1, err);
184
+ Py_DECREF(err);
185
+
186
+ return r;
187
+ }
188
+
189
+ PyObject* method_ENcloseH(PyObject* self, PyObject* Py_UNUSED(args))
190
+ {
191
+ PyObject* err = PyLong_FromLong(ENcloseH());
192
+
193
+ PyObject* r = PyTuple_Pack(1, err);
194
+ Py_DECREF(err);
195
+
196
+ return r;
197
+ }
198
+
199
+ PyObject* method_ENcloseQ(PyObject* self, PyObject* Py_UNUSED(args))
200
+ {
201
+ PyObject* err = PyLong_FromLong(ENcloseQ());
202
+
203
+ PyObject* r = PyTuple_Pack(1, err);
204
+ Py_DECREF(err);
205
+
206
+ return r;
207
+ }
208
+
209
+ PyObject* method_ENcopyreport(PyObject* self, PyObject* args)
210
+ {
211
+ char* filename = NULL;
212
+
213
+ if(!PyArg_ParseTuple(args, "s", &filename)) {
214
+ return NULL;
215
+ }
216
+
217
+ PyObject* err = PyLong_FromLong(ENcopyreport(filename));
218
+
219
+ PyObject* r = PyTuple_Pack(1, err);
220
+ Py_DECREF(err);
221
+
222
+ return r;
223
+ }
224
+
225
+ PyObject* method_ENdeletecontrol(PyObject* self, PyObject* args)
226
+ {
227
+ int index;
228
+
229
+ if(!PyArg_ParseTuple(args, "i", &index)) {
230
+ return NULL;
231
+ }
232
+
233
+ PyObject* err = PyLong_FromLong(ENdeletecontrol(index));
234
+
235
+ PyObject* r = PyTuple_Pack(1, err);
236
+ Py_DECREF(err);
237
+
238
+ return r;
239
+ }
240
+
241
+ PyObject* method_ENdeletecurve(PyObject* self, PyObject* args)
242
+ {
243
+ int index;
244
+
245
+ if(!PyArg_ParseTuple(args, "i", &index)) {
246
+ return NULL;
247
+ }
248
+
249
+ PyObject* err = PyLong_FromLong(ENdeletecurve(index));
250
+
251
+ PyObject* r = PyTuple_Pack(1, err);
252
+ Py_DECREF(err);
253
+
254
+ return r;
255
+ }
256
+
257
+ PyObject* method_ENdeletedemand(PyObject* self, PyObject* args)
258
+ {
259
+ int nodeIndex, demandIndex;
260
+
261
+ if(!PyArg_ParseTuple(args, "ii", &nodeIndex, &demandIndex)) {
262
+ return NULL;
263
+ }
264
+
265
+ PyObject* err = PyLong_FromLong(ENdeletedemand(nodeIndex, demandIndex));
266
+
267
+ PyObject* r = PyTuple_Pack(1, err);
268
+ Py_DECREF(err);
269
+
270
+ return r;
271
+ }
272
+
273
+ PyObject* method_ENdeletelink(PyObject* self, PyObject* args)
274
+ {
275
+ int index, actionCode;
276
+
277
+ if(!PyArg_ParseTuple(args, "ii", &index, &actionCode)) {
278
+ return NULL;
279
+ }
280
+
281
+ PyObject* err = PyLong_FromLong(ENdeletelink(index, actionCode));
282
+
283
+ PyObject* r = PyTuple_Pack(1, err);
284
+ Py_DECREF(err);
285
+
286
+ return r;
287
+ }
288
+
289
+ PyObject* method_ENdeletenode(PyObject* self, PyObject* args)
290
+ {
291
+ int index, actionCode;
292
+
293
+ if(!PyArg_ParseTuple(args, "ii", &index, &actionCode)) {
294
+ return NULL;
295
+ }
296
+
297
+ PyObject* err = PyLong_FromLong(ENdeletenode(index, actionCode));
298
+
299
+ PyObject* r = PyTuple_Pack(1, err);
300
+ Py_DECREF(err);
301
+
302
+ return r;
303
+ }
304
+
305
+ PyObject* method_ENdeletepattern(PyObject* self, PyObject* args)
306
+ {
307
+ int index;
308
+
309
+ if(!PyArg_ParseTuple(args, "i", &index)) {
310
+ return NULL;
311
+ }
312
+
313
+ PyObject* err = PyLong_FromLong(ENdeletepattern(index));
314
+
315
+ PyObject* r = PyTuple_Pack(1, err);
316
+ Py_DECREF(err);
317
+
318
+ return r;
319
+ }
320
+
321
+ PyObject* method_ENdeleterule(PyObject* self, PyObject* args)
322
+ {
323
+ int index;
324
+
325
+ if(!PyArg_ParseTuple(args, "i", &index)) {
326
+ return NULL;
327
+ }
328
+
329
+ PyObject* err = PyLong_FromLong(ENdeleterule(index));
330
+
331
+ PyObject* r = PyTuple_Pack(1, err);
332
+ Py_DECREF(err);
333
+
334
+ return r;
335
+ }
336
+
337
+ PyObject* method_ENgetaveragepatternvalue(PyObject* self, PyObject* args)
338
+ {
339
+ int index;
340
+ float value;
341
+
342
+ if(!PyArg_ParseTuple(args, "i", &index)) {
343
+ return NULL;
344
+ }
345
+
346
+ PyObject* err = PyLong_FromLong(ENgetaveragepatternvalue(index, &value));
347
+
348
+ PyObject* r = PyTuple_Pack(1, err);
349
+ Py_DECREF(err);
350
+
351
+ return r;
352
+ }
353
+
354
+ PyObject* method_ENgetbasedemand(PyObject* self, PyObject* args)
355
+ {
356
+ int nodeIndex, demandIndex;
357
+ float baseDemand;
358
+
359
+ if(!PyArg_ParseTuple(args, "ii", &nodeIndex, &demandIndex)) {
360
+ return NULL;
361
+ }
362
+
363
+ PyObject* err = PyLong_FromLong(ENgetbasedemand(nodeIndex, demandIndex, &baseDemand));
364
+ PyObject* pyBaseDemand = PyFloat_FromDouble(baseDemand);
365
+
366
+ PyObject* r = PyTuple_Pack(2, err, pyBaseDemand);
367
+ Py_DECREF(err);
368
+ Py_DECREF(pyBaseDemand);
369
+
370
+ return r;
371
+ }
372
+
373
+ PyObject* method_ENgetcomment(PyObject* self, PyObject* args)
374
+ {
375
+ int object, index;
376
+ if(!PyArg_ParseTuple(args, "ii", &object, &index)) {
377
+ return NULL;
378
+ }
379
+
380
+ char comment[MAXLINE + 1];
381
+ PyObject* err = PyLong_FromLong(ENgetcomment(object, index, &comment[0]));
382
+ PyObject* pyComment = PyUnicode_FromString(&comment[0]);
383
+
384
+ PyObject* r = PyTuple_Pack(2, err, pyComment);
385
+ Py_DECREF(err);
386
+ Py_DECREF(pyComment);
387
+
388
+ return r;
389
+ }
390
+
391
+ PyObject* method_ENgetcontrol(PyObject* self, PyObject* args)
392
+ {
393
+ int index, type, linkIndex, nodeIndex;
394
+ float setting, level;
395
+
396
+ if(!PyArg_ParseTuple(args, "i", &index)) {
397
+ return NULL;
398
+ }
399
+
400
+ PyObject* err = PyLong_FromLong(ENgetcontrol(index, &type, &linkIndex, &setting, &nodeIndex, &level));
401
+ PyObject* pyType = PyLong_FromLong(type);
402
+ PyObject* pyLinkIndex = PyLong_FromLong(linkIndex);
403
+ PyObject* pySetting = PyFloat_FromDouble(setting);
404
+ PyObject* pyNodeIndex = PyLong_FromLong(nodeIndex);
405
+ PyObject* pyLevel = PyFloat_FromDouble(level);
406
+
407
+ PyObject* r = PyTuple_Pack(6, err, pyType, pyLinkIndex, pySetting, pyNodeIndex, pyLevel);
408
+ Py_DECREF(err);
409
+ Py_DECREF(pyType);
410
+ Py_DECREF(pyLinkIndex);
411
+ Py_DECREF(pySetting);
412
+ Py_DECREF(pyNodeIndex);
413
+ Py_DECREF(pyLevel);
414
+
415
+ return r;
416
+ }
417
+
418
+ PyObject* method_ENgetcoord(PyObject* self, PyObject* args)
419
+ {
420
+ int index;
421
+ double x, y;
422
+
423
+ if(!PyArg_ParseTuple(args, "i", &index)) {
424
+ return NULL;
425
+ }
426
+
427
+ PyObject* err = PyLong_FromLong(ENgetcoord(index, &x, &y));
428
+ PyObject* pyX = PyFloat_FromDouble(x);
429
+ PyObject* pyY = PyFloat_FromDouble(y);
430
+
431
+ PyObject* r = PyTuple_Pack(3, err, pyX, pyY);
432
+ Py_DECREF(err);
433
+ Py_DECREF(pyX);
434
+ Py_DECREF(pyY);
435
+
436
+ return r;
437
+ }
438
+
439
+ PyObject* method_ENgetcount(PyObject* self, PyObject* args)
440
+ {
441
+ int object, count;
442
+
443
+ if(!PyArg_ParseTuple(args, "i", &object)) {
444
+ return NULL;
445
+ }
446
+
447
+ PyObject* err = PyLong_FromLong(ENgetcount(object, &count));
448
+ PyObject* pyCount = PyLong_FromLong(count);
449
+
450
+ PyObject* r = PyTuple_Pack(2, err, pyCount);
451
+ Py_DECREF(err);
452
+ Py_DECREF(pyCount);
453
+
454
+ return r;
455
+ }
456
+
457
+ PyObject* method_ENgetcurve(PyObject* self, PyObject* args)
458
+ {
459
+ int index;
460
+ if(!PyArg_ParseTuple(args, "i", &index)) {
461
+ return NULL;
462
+ }
463
+
464
+ int len;
465
+ int errcode = ENgetcurvelen(index, &len);
466
+ if(errcode != 0) {
467
+ PyObject* err = PyLong_FromLong(errcode);
468
+ PyObject* r = PyTuple_Pack(1, err);
469
+ Py_DECREF(err);
470
+
471
+ return r;
472
+ }
473
+
474
+ char out_id[MAXID + 1];
475
+ int nPoints;
476
+ float* xValues = (float*) PyMem_Calloc(len, sizeof(float));
477
+ float* yValues = (float*) PyMem_Calloc(len, sizeof(float));
478
+ PyObject* err = PyLong_FromLong(ENgetcurve(index, &out_id[0], &nPoints, xValues, yValues));
479
+
480
+ PyObject* xValuesList = PyList_New(nPoints);
481
+ PyObject* yValuesList = PyList_New(nPoints);
482
+
483
+ for(int i=0; i != nPoints; i++) {
484
+ PyList_SetItem(xValuesList, i, PyFloat_FromDouble(xValues[i]));
485
+ PyList_SetItem(yValuesList, i, PyFloat_FromDouble(yValues[i]));
486
+ }
487
+
488
+ PyMem_Free(xValues);
489
+ PyMem_Free(yValues);
490
+
491
+ PyObject* pyOutId = PyUnicode_FromString(&out_id[0]);
492
+ PyObject* pyNPoints = PyLong_FromLong(nPoints);
493
+
494
+ PyObject* r = PyTuple_Pack(5, err, pyOutId, pyNPoints, xValuesList, yValuesList);
495
+ Py_DECREF(xValuesList);
496
+ Py_DECREF(yValuesList);
497
+ Py_DECREF(err);
498
+ Py_DECREF(pyOutId);
499
+ Py_DECREF(pyNPoints);
500
+
501
+ return r;
502
+ }
503
+
504
+ PyObject* method_ENgetcurveid(PyObject* self, PyObject* args)
505
+ {
506
+ int index;
507
+
508
+ if(!PyArg_ParseTuple(args, "i", &index)) {
509
+ return NULL;
510
+ }
511
+
512
+ char out_id[MAXID + 1];
513
+ PyObject* err = PyLong_FromLong(ENgetcurveid(index, &out_id[0]));
514
+ PyObject* pyId = PyUnicode_FromString(&out_id[0]);
515
+
516
+ PyObject* r = PyTuple_Pack(2, err, pyId);
517
+ Py_DECREF(err);
518
+ Py_DECREF(pyId);
519
+
520
+ return r;
521
+ }
522
+
523
+ PyObject* method_ENgetcurveindex(PyObject* self, PyObject* args)
524
+ {
525
+ char* id = NULL;
526
+ int index;
527
+
528
+ if(!PyArg_ParseTuple(args, "s", &id)) {
529
+ return NULL;
530
+ }
531
+
532
+ PyObject* err = PyLong_FromLong(ENgetcurveindex(id, &index));
533
+ PyObject* pyIndex = PyLong_FromLong(index);
534
+
535
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
536
+ Py_DECREF(err);
537
+ Py_DECREF(pyIndex);
538
+
539
+ return r;
540
+ }
541
+
542
+ PyObject* method_ENgetcurvelen(PyObject* self, PyObject* args)
543
+ {
544
+ int index, len;
545
+
546
+ if(!PyArg_ParseTuple(args, "i", &index)) {
547
+ return NULL;
548
+ }
549
+
550
+ PyObject* err = PyLong_FromLong(ENgetcurvelen(index, &len));
551
+ PyObject* pyLen = PyLong_FromLong(len);
552
+
553
+ PyObject* r = PyTuple_Pack(2, err, pyLen);
554
+ Py_DECREF(err);
555
+ Py_DECREF(pyLen);
556
+
557
+ return r;
558
+ }
559
+
560
+ PyObject* method_ENgetcurvetype(PyObject* self, PyObject* args)
561
+ {
562
+ int index, type;
563
+
564
+ if(!PyArg_ParseTuple(args, "i", &index)) {
565
+ return NULL;
566
+ }
567
+
568
+ PyObject* err = PyLong_FromLong(ENgetcurvetype(index, &type));
569
+ PyObject* pyType = PyLong_FromLong(type);
570
+
571
+ PyObject* r = PyTuple_Pack(2, err, pyType);
572
+ Py_DECREF(err);
573
+ Py_DECREF(pyType);
574
+
575
+ return r;
576
+ }
577
+
578
+ PyObject* method_ENgetcurvevalue(PyObject* self, PyObject* args)
579
+ {
580
+ int curveIndex, pointIndex;
581
+ float x, y;
582
+
583
+ if(!PyArg_ParseTuple(args, "ii", &curveIndex, &pointIndex)) {
584
+ return NULL;
585
+ }
586
+
587
+ PyObject* err = PyLong_FromLong(ENgetcurvevalue(curveIndex, pointIndex, &x, &y));
588
+ PyObject* pyX = PyFloat_FromDouble(x);
589
+ PyObject* pyY = PyFloat_FromDouble(y);
590
+
591
+ PyObject* r = PyTuple_Pack(3, err, pyX, pyY);
592
+ Py_DECREF(err);
593
+ Py_DECREF(pyX);
594
+ Py_DECREF(pyY);
595
+
596
+ return r;
597
+ }
598
+
599
+ PyObject* method_ENgetdemandindex(PyObject* self, PyObject* args)
600
+ {
601
+ int nodeIndex, demandIndex;
602
+ char* demandName = NULL;
603
+
604
+ if(!PyArg_ParseTuple(args, "is", &nodeIndex, &demandName)) {
605
+ return NULL;
606
+ }
607
+
608
+ PyObject* err = PyLong_FromLong(ENgetdemandindex(nodeIndex, demandName, &demandIndex));
609
+ PyObject* pyDemandIndex = PyLong_FromLong(demandIndex);
610
+
611
+ PyObject* r = PyTuple_Pack(2, err, pyDemandIndex);
612
+ Py_DECREF(err);
613
+ Py_DECREF(pyDemandIndex);
614
+
615
+ return r;
616
+ }
617
+
618
+ PyObject* method_ENgetdemandmodel(PyObject* self, PyObject* Py_UNUSED(args))
619
+ {
620
+ int model;
621
+ float pmin, preq, pexp;
622
+
623
+ PyObject* err = PyLong_FromLong(ENgetdemandmodel(&model, &pmin, &preq, &pexp));
624
+ PyObject* pyModel = PyLong_FromLong(model);
625
+ PyObject* pyPMin = PyFloat_FromDouble(pmin);
626
+ PyObject* pyPReq = PyFloat_FromDouble(preq);
627
+ PyObject* pyPExp = PyFloat_FromDouble(pexp);
628
+
629
+ PyObject* r = PyTuple_Pack(5, err, pyModel, pyPMin, pyPReq, pyPExp);
630
+ Py_DECREF(err);
631
+ Py_DECREF(pyModel);
632
+ Py_DECREF(pyPMin);
633
+ Py_DECREF(pyPReq);
634
+ Py_DECREF(pyPExp);
635
+
636
+ return r;
637
+ }
638
+
639
+ PyObject* method_ENgetdemandname(PyObject* self, PyObject* args)
640
+ {
641
+ int nodeIndex, demandIndex;
642
+ if(!PyArg_ParseTuple(args, "ii", &nodeIndex, &demandIndex)) {
643
+ return NULL;
644
+ }
645
+
646
+ char demandName[MAXID + 1];
647
+ PyObject* err = PyLong_FromLong(ENgetdemandname(nodeIndex, demandIndex, &demandName[0]));
648
+ PyObject* pyDemandName = PyUnicode_FromString(&demandName[0]);
649
+
650
+ PyObject* r = PyTuple_Pack(2, err, pyDemandName);
651
+ Py_DECREF(err);
652
+ Py_DECREF(pyDemandName);
653
+
654
+ return r;
655
+ }
656
+
657
+ PyObject* method_ENgetdemandpattern(PyObject* self, PyObject* args)
658
+ {
659
+ int nodeIndex, demandIndex, patIndex;
660
+
661
+ if(!PyArg_ParseTuple(args, "ii", &nodeIndex, &demandIndex)) {
662
+ return NULL;
663
+ }
664
+
665
+ PyObject* err = PyLong_FromLong(ENgetdemandpattern(nodeIndex, demandIndex, &patIndex));
666
+ PyObject* pyPatIndex = PyLong_FromLong(patIndex);
667
+
668
+ PyObject* r = PyTuple_Pack(2, err, pyPatIndex);
669
+ Py_DECREF(err);
670
+ Py_DECREF(pyPatIndex);
671
+
672
+ return r;
673
+ }
674
+
675
+ PyObject* method_ENgetelseaction(PyObject* self, PyObject* args)
676
+ {
677
+ int ruleIndex, actionIndex, linkIndex, status;
678
+ float setting;
679
+
680
+ if(!PyArg_ParseTuple(args, "ii", &ruleIndex, &actionIndex)) {
681
+ return NULL;
682
+ }
683
+
684
+ PyObject* err = PyLong_FromLong(ENgetelseaction(ruleIndex, actionIndex, &linkIndex, &status, &setting));
685
+ PyObject* pyLinkIndex = PyLong_FromLong(linkIndex);
686
+ PyObject* pyStatus = PyLong_FromLong(status);
687
+ PyObject* pySetting = PyFloat_FromDouble(setting);
688
+
689
+ PyObject* r = PyTuple_Pack(4, err, pyLinkIndex, pyStatus, pySetting);
690
+ Py_DECREF(err);
691
+ Py_DECREF(pyLinkIndex);
692
+ Py_DECREF(pyStatus);
693
+ Py_DECREF(pySetting);
694
+
695
+ return r;
696
+ }
697
+
698
+ PyObject* method_ENgeterror(PyObject* self, PyObject* args)
699
+ {
700
+ int errcode;
701
+ char errmsg[MAXMSG + 1];
702
+
703
+ if(!PyArg_ParseTuple(args, "i", &errcode)) {
704
+ return NULL;
705
+ }
706
+
707
+ PyObject* err = PyLong_FromLong(ENgeterror(errcode, &errmsg[0], MAXMSG));
708
+ PyObject* pyErrmsg = PyUnicode_FromString(&errmsg[0]);
709
+
710
+ PyObject* r = PyTuple_Pack(2, err, pyErrmsg);
711
+ Py_DECREF(err);
712
+ Py_DECREF(pyErrmsg);
713
+
714
+ return r;
715
+ }
716
+
717
+ PyObject* method_ENgetflowunits(PyObject* self, PyObject* Py_UNUSED(args))
718
+ {
719
+ int units;
720
+ PyObject* err = PyLong_FromLong(ENgetflowunits(&units));
721
+ PyObject* pyUnits = PyLong_FromLong(units);
722
+
723
+ PyObject* r = PyTuple_Pack(2, err, pyUnits);
724
+ Py_DECREF(err);
725
+ Py_DECREF(pyUnits);
726
+
727
+ return r;
728
+ }
729
+
730
+ PyObject* method_ENgetheadcurveindex(PyObject* self, PyObject* args)
731
+ {
732
+ int linkIndex, curveIndex;
733
+
734
+ if(!PyArg_ParseTuple(args, "i", &linkIndex)) {
735
+ return NULL;
736
+ }
737
+
738
+ PyObject* err = PyLong_FromLong(ENgetheadcurveindex(linkIndex, &curveIndex));
739
+ PyObject* pyCurveIndex = PyLong_FromLong(curveIndex);
740
+
741
+ PyObject* r = PyTuple_Pack(2, err, pyCurveIndex);
742
+ Py_DECREF(err);
743
+ Py_DECREF(pyCurveIndex);
744
+
745
+ return r;
746
+ }
747
+
748
+ PyObject* method_ENgetlinkid(PyObject* self, PyObject* args)
749
+ {
750
+ int index;
751
+ char id[MAXID + 1];
752
+
753
+ if(!PyArg_ParseTuple(args, "i", &index)) {
754
+ return NULL;
755
+ }
756
+
757
+ PyObject* err = PyLong_FromLong(ENgetlinkid(index, &id[0]));
758
+ PyObject* pyId = PyUnicode_FromString(&id[0]);
759
+
760
+ PyObject* r = PyTuple_Pack(2, err, pyId);
761
+ Py_DECREF(err);
762
+ Py_DECREF(pyId);
763
+
764
+ return r;
765
+ }
766
+
767
+ PyObject* method_ENgetlinkindex(PyObject* self, PyObject* args)
768
+ {
769
+ int index;
770
+ char* id = NULL;
771
+
772
+ if(!PyArg_ParseTuple(args, "s", &id)) {
773
+ return NULL;
774
+ }
775
+
776
+ PyObject* err = PyLong_FromLong(ENgetlinkindex(id, &index));
777
+ PyObject* pyIndex = PyLong_FromLong(index);
778
+
779
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
780
+ Py_DECREF(err);
781
+ Py_DECREF(pyIndex);
782
+
783
+ return r;
784
+ }
785
+
786
+ PyObject* method_ENgetlinknodes(PyObject* self, PyObject* args)
787
+ {
788
+ int index, node1, node2;
789
+
790
+ if(!PyArg_ParseTuple(args, "i", &index)) {
791
+ return NULL;
792
+ }
793
+
794
+ PyObject* err = PyLong_FromLong(ENgetlinknodes(index, &node1, &node2));
795
+ PyObject* pyNode1 = PyLong_FromLong(node1);
796
+ PyObject* pyNode2 = PyLong_FromLong(node2);
797
+
798
+ PyObject* r = PyTuple_Pack(3, err, pyNode1, pyNode2);
799
+ Py_DECREF(err);
800
+ Py_DECREF(pyNode1);
801
+ Py_DECREF(pyNode2);
802
+
803
+ return r;
804
+ }
805
+
806
+ PyObject* method_ENgetlinktype(PyObject* self, PyObject* args)
807
+ {
808
+ int index, linkType;
809
+
810
+ if(!PyArg_ParseTuple(args, "i", &index)) {
811
+ return NULL;
812
+ }
813
+
814
+ PyObject* err = PyLong_FromLong(ENgetlinktype(index, &linkType));
815
+ PyObject* pyLinkType = PyLong_FromLong(linkType);
816
+
817
+ PyObject* r = PyTuple_Pack(2, err, pyLinkType);
818
+ Py_DECREF(err);
819
+ Py_DECREF(pyLinkType);
820
+
821
+ return r;
822
+ }
823
+
824
+ PyObject* method_ENgetlinkvalue(PyObject* self, PyObject* args)
825
+ {
826
+ int index, property;
827
+ float value;
828
+
829
+ if(!PyArg_ParseTuple(args, "ii", &index, &property)) {
830
+ return NULL;
831
+ }
832
+
833
+ PyObject* err = PyLong_FromLong(ENgetlinkvalue(index, property, &value));
834
+ PyObject* pyValue = PyFloat_FromDouble(value);
835
+
836
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
837
+ Py_DECREF(err);
838
+ Py_DECREF(pyValue);
839
+
840
+ return r;
841
+ }
842
+
843
+ PyObject* method_ENgetnodeid(PyObject* self, PyObject* args)
844
+ {
845
+ int index;
846
+ if(!PyArg_ParseTuple(args, "i", &index)) {
847
+ return NULL;
848
+ }
849
+
850
+ char id[MAXID + 1];
851
+ PyObject* err = PyLong_FromLong(ENgetnodeid(index, &id[0]));
852
+ PyObject* pyId = PyUnicode_FromString(&id[0]);
853
+
854
+ PyObject* r = PyTuple_Pack(2, err, pyId);
855
+ Py_DECREF(err);
856
+ Py_DECREF(pyId);
857
+
858
+ return r;
859
+ }
860
+
861
+ PyObject* method_ENgetnodeindex(PyObject* self, PyObject* args)
862
+ {
863
+ char* id = NULL;
864
+ if(!PyArg_ParseTuple(args, "s", &id)) {
865
+ return NULL;
866
+ }
867
+
868
+ int index;
869
+ PyObject* err = PyLong_FromLong(ENgetnodeindex(id, &index));
870
+ PyObject* pyIndex = PyLong_FromLong(index);
871
+
872
+ PyObject* r = PyTuple_Pack(2, err, PyLong_FromLong(index));
873
+ Py_DECREF(err);
874
+ Py_DECREF(pyIndex);
875
+
876
+ return r;
877
+ }
878
+
879
+ PyObject* method_ENgetnodetype(PyObject* self, PyObject* args)
880
+ {
881
+ int index, nodeType;
882
+
883
+ if(!PyArg_ParseTuple(args, "i", &index)) {
884
+ return NULL;
885
+ }
886
+
887
+ PyObject* err = PyLong_FromLong(ENgetnodetype(index, &nodeType));
888
+ PyObject* pyNodeType = PyLong_FromLong(nodeType);
889
+
890
+ PyObject* r = PyTuple_Pack(2, err, pyNodeType);
891
+ Py_DECREF(err);
892
+ Py_DECREF(pyNodeType);
893
+
894
+ return r;
895
+ }
896
+
897
+ PyObject* method_ENgetnodevalue(PyObject* self, PyObject* args)
898
+ {
899
+ int index, property;
900
+ float value;
901
+
902
+ if(!PyArg_ParseTuple(args, "ii", &index, &property)) {
903
+ return NULL;
904
+ }
905
+
906
+ PyObject* err = PyLong_FromLong(ENgetnodevalue(index, property, &value));
907
+ PyObject* pyValue = PyFloat_FromDouble(value);
908
+
909
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
910
+ Py_DECREF(err);
911
+ Py_DECREF(pyValue);
912
+
913
+ return r;
914
+ }
915
+
916
+ PyObject* method_ENgetnumdemands(PyObject* self, PyObject* args)
917
+ {
918
+ int nodeIndex, numDemands;
919
+
920
+ if(!PyArg_ParseTuple(args, "i", &nodeIndex)) {
921
+ return NULL;
922
+ }
923
+
924
+ PyObject* err = PyLong_FromLong(ENgetnumdemands(nodeIndex, &numDemands));
925
+ PyObject* pyNumDemands = PyLong_FromLong(numDemands);
926
+
927
+ PyObject* r = PyTuple_Pack(2, err, pyNumDemands);
928
+ Py_DECREF(err);
929
+ Py_DECREF(pyNumDemands);
930
+
931
+ return r;
932
+ }
933
+
934
+ PyObject* method_ENgetoption(PyObject* self, PyObject* args)
935
+ {
936
+ int option;
937
+ float value;
938
+
939
+ if(!PyArg_ParseTuple(args, "i", &option)) {
940
+ return NULL;
941
+ }
942
+
943
+ PyObject* err = PyLong_FromLong(ENgetoption(option, &value));
944
+ PyObject* pyValue = PyLong_FromDouble(value);
945
+
946
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
947
+ Py_DECREF(err);
948
+ Py_DECREF(pyValue);
949
+
950
+ return r;
951
+ }
952
+
953
+ PyObject* method_ENgetpatternid(PyObject* self, PyObject* args)
954
+ {
955
+ int index;
956
+ if(!PyArg_ParseTuple(args, "i", &index)) {
957
+ return NULL;
958
+ }
959
+
960
+ char id[MAXID + 1];
961
+ PyObject* err = PyLong_FromLong(ENgetpatternid(index, &id[0]));
962
+ PyObject* pyId = PyUnicode_FromString(&id[0]);
963
+
964
+ PyObject* r = PyTuple_Pack(2, err, pyId);
965
+ Py_DECREF(err);
966
+ Py_DECREF(pyId);
967
+
968
+ return r;
969
+ }
970
+
971
+ PyObject* method_ENgetpatternindex(PyObject* self, PyObject* args)
972
+ {
973
+ char *id = NULL;
974
+ if(!PyArg_ParseTuple(args, "s", &id)) {
975
+ return NULL;
976
+ }
977
+
978
+ int index;
979
+ PyObject* err = PyLong_FromLong(ENgetpatternindex(id, &index));
980
+ PyObject* pyIndex = PyLong_FromLong(index);
981
+
982
+ PyObject* r = PyTuple_Pack(2, err, pyIndex);
983
+ Py_DECREF(err);
984
+ Py_DECREF(pyIndex);
985
+
986
+ return r;
987
+ }
988
+
989
+ PyObject* method_ENgetpatternlen(PyObject* self, PyObject* args)
990
+ {
991
+ int index, len;
992
+
993
+ if(!PyArg_ParseTuple(args, "i", &index)) {
994
+ return NULL;
995
+ }
996
+
997
+ PyObject* err = PyLong_FromLong(ENgetpatternlen(index, &len));
998
+ PyObject* pyLen = PyLong_FromLong(len);
999
+
1000
+ PyObject* r = PyTuple_Pack(2, err, pyLen);
1001
+ Py_DECREF(err);
1002
+ Py_DECREF(pyLen);
1003
+
1004
+ return r;
1005
+ }
1006
+
1007
+ PyObject* method_ENgetpatternvalue(PyObject* self, PyObject* args)
1008
+ {
1009
+ int index, period;
1010
+ float value;
1011
+
1012
+ if(!PyArg_ParseTuple(args, "ii", &index, &period)) {
1013
+ return NULL;
1014
+ }
1015
+
1016
+ PyObject* err = PyLong_FromLong(ENgetpatternvalue(index, period, &value));
1017
+ PyObject* pyValue = PyFloat_FromDouble(value);
1018
+
1019
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
1020
+ Py_DECREF(err);
1021
+ Py_DECREF(pyValue);
1022
+
1023
+ return r;
1024
+ }
1025
+
1026
+ PyObject* method_ENgetpremise(PyObject* self, PyObject* args)
1027
+ {
1028
+ int ruleIndex, premiseIndex, logop, object, objIndex, variable, relop, status;
1029
+ float value;
1030
+
1031
+ if(!PyArg_ParseTuple(args, "ii", &ruleIndex, &premiseIndex)) {
1032
+ return NULL;
1033
+ }
1034
+
1035
+ PyObject* err = PyLong_FromLong(ENgetpremise(ruleIndex, premiseIndex, &logop, &object, &objIndex, &variable, &relop, &status, &value));
1036
+ PyObject* pyLogop = PyLong_FromLong(logop);
1037
+ PyObject* pyObject = PyLong_FromLong(object);
1038
+ PyObject* pyObjIndex = PyLong_FromLong(objIndex);
1039
+ PyObject* pyVariable = PyLong_FromLong(variable);
1040
+ PyObject* pyRelop = PyLong_FromLong(relop);
1041
+ PyObject* pyStatus = PyLong_FromLong(status);
1042
+ PyObject* pyValue = PyFloat_FromDouble(value);
1043
+
1044
+ PyObject* r = PyTuple_Pack(8, err, pyLogop, pyObject, pyObjIndex, pyVariable, pyRelop, pyStatus, pyValue);
1045
+ Py_DECREF(err);
1046
+ Py_DECREF(pyLogop);
1047
+ Py_DECREF(pyObject);
1048
+ Py_DECREF(pyObjIndex);
1049
+ Py_DECREF(pyVariable);
1050
+ Py_DECREF(pyRelop);
1051
+ Py_DECREF(pyStatus);
1052
+ Py_DECREF(pyValue);
1053
+
1054
+ return r;
1055
+ }
1056
+
1057
+ PyObject* method_ENgetpumptype(PyObject* self, PyObject* args)
1058
+ {
1059
+ int linkIndex, pumpType;
1060
+
1061
+ if(!PyArg_ParseTuple(args, "i", &linkIndex)) {
1062
+ return NULL;
1063
+ }
1064
+
1065
+ PyObject* err = PyLong_FromLong(ENgetpumptype(linkIndex, &pumpType));
1066
+ PyObject* pyPumpType = PyLong_FromLong(pumpType);
1067
+
1068
+ PyObject* r = PyTuple_Pack(2, err, pyPumpType);
1069
+ Py_DECREF(err);
1070
+ Py_DECREF(pyPumpType);
1071
+
1072
+ return r;
1073
+ }
1074
+
1075
+ PyObject* method_ENgetqualinfo(PyObject* self, PyObject* Py_UNUSED(args))
1076
+ {
1077
+ int qualType, traceNode;
1078
+ char chemName[MAXID + 1];
1079
+ char chemUnits[MAXID + 1];
1080
+
1081
+ PyObject* err = PyLong_FromLong(ENgetqualinfo(&qualType, &chemName[0], &chemUnits[0], &traceNode));
1082
+ PyObject* pyQualType = PyLong_FromLong(qualType);
1083
+ PyObject* pyChemName = PyUnicode_FromString(&chemName[0]);
1084
+ PyObject* pyChemUnits = PyUnicode_FromString(&chemUnits[0]);
1085
+ PyObject* pyTraceNode = PyLong_FromLong(traceNode);
1086
+
1087
+ PyObject* r = PyTuple_Pack(5, err, pyQualType, pyChemName, pyChemUnits, pyTraceNode);
1088
+ Py_DECREF(err);
1089
+ Py_DECREF(pyQualType);
1090
+ Py_DECREF(pyChemName);
1091
+ Py_DECREF(pyChemUnits);
1092
+ Py_DECREF(pyTraceNode);
1093
+
1094
+ return r;
1095
+ }
1096
+
1097
+ PyObject* method_ENgetqualtype(PyObject* self, PyObject* Py_UNUSED(args))
1098
+ {
1099
+ int qualType, traceNode;
1100
+
1101
+ PyObject* err = PyLong_FromLong(ENgetqualtype(&qualType, &traceNode));
1102
+ PyObject* pyQualType = PyLong_FromLong(qualType);
1103
+ PyObject* pyTraceNode = PyLong_FromLong(traceNode);
1104
+
1105
+ PyObject* r = PyTuple_Pack(3, err, pyQualType, pyTraceNode);
1106
+ Py_DECREF(err);
1107
+ Py_DECREF(pyQualType);
1108
+ Py_DECREF(pyTraceNode);
1109
+
1110
+ return r;
1111
+ }
1112
+
1113
+ PyObject* method_ENgetresultindex(PyObject* self, PyObject* args)
1114
+ {
1115
+ int type, index, value;
1116
+
1117
+ if(!PyArg_ParseTuple(args, "ii", &type, &index)) {
1118
+ return NULL;
1119
+ }
1120
+
1121
+ PyObject* err = PyLong_FromLong(ENgetresultindex(type, index, &value));
1122
+ PyObject* pyValue = PyLong_FromLong(value);
1123
+
1124
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
1125
+ Py_DECREF(err);
1126
+ Py_DECREF(pyValue);
1127
+
1128
+ return r;
1129
+ }
1130
+
1131
+ PyObject* method_ENgetrule(PyObject* self, PyObject* args)
1132
+ {
1133
+ int index, nPremises, nThenActions, nElseActions;
1134
+ float priority;
1135
+
1136
+ if(!PyArg_ParseTuple(args, "i", &index)) {
1137
+ return NULL;
1138
+ }
1139
+
1140
+ PyObject* err = PyLong_FromLong(ENgetrule(index, &nPremises, &nThenActions, &nElseActions, &priority));
1141
+ PyObject* pyNPremises = PyLong_FromLong(nPremises);
1142
+ PyObject* pyNThenActions = PyLong_FromLong(nThenActions);
1143
+ PyObject* pyNElseActions = PyLong_FromLong(nElseActions);
1144
+ PyObject* pyPriority = PyFloat_FromDouble(priority);
1145
+
1146
+ PyObject* r = PyTuple_Pack(5, err, pyNPremises, pyNThenActions, pyNElseActions, pyPriority);
1147
+ Py_DECREF(err);
1148
+ Py_DECREF(pyNPremises);
1149
+ Py_DECREF(pyNThenActions);
1150
+ Py_DECREF(pyNElseActions);
1151
+ Py_DECREF(pyPriority);
1152
+
1153
+ return r;
1154
+ }
1155
+
1156
+ PyObject* method_ENgetruleID(PyObject* self, PyObject* args)
1157
+ {
1158
+ int index;
1159
+ char id[MAXID + 1];
1160
+
1161
+ if(!PyArg_ParseTuple(args, "i", &index)) {
1162
+ return NULL;
1163
+ }
1164
+
1165
+ PyObject* err = PyLong_FromLong(ENgetruleID(index, &id[0]));
1166
+ PyObject* pyId = PyUnicode_FromString(&id[0]);
1167
+
1168
+ PyObject* r = PyTuple_Pack(2, err, pyId);
1169
+ Py_DECREF(err);
1170
+ Py_DECREF(pyId);
1171
+
1172
+ return r;
1173
+ }
1174
+
1175
+ PyObject* method_ENgetstatistic(PyObject* self, PyObject* args)
1176
+ {
1177
+ int type;
1178
+ float value;
1179
+
1180
+ if(!PyArg_ParseTuple(args, "i", &type)) {
1181
+ return NULL;
1182
+ }
1183
+
1184
+ PyObject* err = PyLong_FromLong(ENgetstatistic(type, &value));
1185
+ PyObject* pyValue = PyFloat_FromDouble(value);
1186
+
1187
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
1188
+ Py_DECREF(err);
1189
+ Py_DECREF(pyValue);
1190
+
1191
+ return r;
1192
+ }
1193
+
1194
+ PyObject* method_ENgetthenaction(PyObject* self, PyObject* args)
1195
+ {
1196
+ int ruleIndex, actionIndex, linkIndex, status;
1197
+ float setting;
1198
+
1199
+ if(!PyArg_ParseTuple(args, "ii", &ruleIndex, &actionIndex)) {
1200
+ return NULL;
1201
+ }
1202
+
1203
+ PyObject* err = PyLong_FromLong(ENgetthenaction(ruleIndex, actionIndex, &linkIndex, &status, &setting));
1204
+ PyObject* pyLinkIndex = PyLong_FromLong(linkIndex);
1205
+ PyObject* pyStatus = PyLong_FromLong(status);
1206
+ PyObject* pySetting = PyLong_FromLong(setting);
1207
+
1208
+ PyObject* r = PyTuple_Pack(4, err, pyLinkIndex, pyStatus, pySetting);
1209
+ Py_DECREF(err);
1210
+ Py_DECREF(pyLinkIndex);
1211
+ Py_DECREF(pyStatus);
1212
+ Py_DECREF(pySetting);
1213
+
1214
+ return r;
1215
+ }
1216
+
1217
+ PyObject* method_ENgettimeparam(PyObject* self, PyObject* args)
1218
+ {
1219
+ int param;
1220
+ long value;
1221
+
1222
+ if(!PyArg_ParseTuple(args, "i", &param)) {
1223
+ return NULL;
1224
+ }
1225
+
1226
+ PyObject* err = PyLong_FromLong(ENgettimeparam(param, &value));
1227
+ PyObject* pyValue = PyLong_FromLong(value);
1228
+
1229
+ PyObject* r = PyTuple_Pack(2, err, pyValue);
1230
+ Py_DECREF(err);
1231
+ Py_DECREF(pyValue);
1232
+
1233
+ return r;
1234
+ }
1235
+
1236
+ PyObject* method_ENgettitle(PyObject* self, PyObject* Py_UNUSED(args))
1237
+ {
1238
+ char line1[TITLELEN + 1];
1239
+ char line2[TITLELEN + 1];
1240
+ char line3[TITLELEN + 1];
1241
+
1242
+ PyObject* err = PyLong_FromLong(ENgettitle(&line1[0], &line2[0], &line3[0]));
1243
+ PyObject* pyLine1 = PyUnicode_FromString(&line1[0]);
1244
+ PyObject* pyLine2 = PyUnicode_FromString(&line2[0]);
1245
+ PyObject* pyLine3 = PyUnicode_FromString(&line3[0]);
1246
+
1247
+ PyObject* r = PyTuple_Pack(4, err, pyLine1, pyLine2, pyLine3);
1248
+ Py_DECREF(err);
1249
+ Py_DECREF(pyLine1);
1250
+ Py_DECREF(pyLine2);
1251
+ Py_DECREF(pyLine3);
1252
+
1253
+ return r;
1254
+ }
1255
+
1256
+ PyObject* method_ENgetversion(PyObject* self, PyObject* Py_UNUSED(args))
1257
+ {
1258
+ int version;
1259
+ PyObject* err = PyLong_FromLong(ENgetversion(&version));
1260
+ PyObject* pyVersion = PyLong_FromLong(version);
1261
+
1262
+ PyObject* r = PyTuple_Pack(2, err, pyVersion);
1263
+ Py_DECREF(err);
1264
+ Py_DECREF(pyVersion);
1265
+
1266
+ return r;
1267
+ }
1268
+
1269
+ PyObject* method_ENgetvertex(PyObject* self, PyObject* args)
1270
+ {
1271
+ int index, vertex;
1272
+ double x, y;
1273
+
1274
+ if(!PyArg_ParseTuple(args, "ii", &index, &vertex)) {
1275
+ return NULL;
1276
+ }
1277
+
1278
+ PyObject* err = PyLong_FromLong(ENgetvertex(index, vertex, &x, &y));
1279
+ PyObject* pyX = PyFloat_FromDouble(x);
1280
+ PyObject* pyY = PyFloat_FromDouble(y);
1281
+
1282
+ PyObject* r = PyTuple_Pack(3, err, pyX, pyY);
1283
+ Py_DECREF(err);
1284
+ Py_DECREF(pyX);
1285
+ Py_DECREF(pyY);
1286
+
1287
+ return r;
1288
+ }
1289
+
1290
+ PyObject* method_ENgetvertexcount(PyObject* self, PyObject* args)
1291
+ {
1292
+ int index, count;
1293
+
1294
+ if(!PyArg_ParseTuple(args, "i", &index)) {
1295
+ return NULL;
1296
+ }
1297
+
1298
+ PyObject* err = PyLong_FromLong(ENgetvertexcount(index, &count));
1299
+ PyObject* pyCount = PyLong_FromLong(count);
1300
+
1301
+ PyObject* r = PyTuple_Pack(2, err, pyCount);
1302
+ Py_DECREF(err);
1303
+ Py_DECREF(pyCount);
1304
+
1305
+ return r;
1306
+ }
1307
+
1308
+ PyObject* method_ENinit(PyObject* self, PyObject* args)
1309
+ {
1310
+ char* rptFile, *outFile = NULL;
1311
+ int unitsType, headlossType;
1312
+
1313
+ if(!PyArg_ParseTuple(args, "ssii", &rptFile, &outFile, &unitsType, &headlossType)) {
1314
+ return NULL;
1315
+ }
1316
+
1317
+ PyObject* err = PyLong_FromLong(ENinit(rptFile, outFile, unitsType, headlossType));
1318
+
1319
+ PyObject* r = PyTuple_Pack(1, err);
1320
+ Py_DECREF(err);
1321
+
1322
+ return r;
1323
+ }
1324
+
1325
+ PyObject* method_ENinitH(PyObject* self, PyObject* args)
1326
+ {
1327
+ int initFlag;
1328
+ if(!PyArg_ParseTuple(args, "i", &initFlag)) {
1329
+ return NULL;
1330
+ }
1331
+
1332
+ PyObject* err = PyLong_FromLong(ENinitH(initFlag));
1333
+
1334
+ PyObject* r = PyTuple_Pack(1, err);
1335
+ Py_DECREF(err);
1336
+
1337
+ return r;
1338
+ }
1339
+
1340
+ PyObject* method_ENinitQ(PyObject* self, PyObject* args)
1341
+ {
1342
+ int saveFlag;
1343
+ if(!PyArg_ParseTuple(args, "i", &saveFlag)) {
1344
+ return NULL;
1345
+ }
1346
+
1347
+ PyObject* err = PyLong_FromLong(ENinitQ(saveFlag));
1348
+
1349
+ PyObject* r = PyTuple_Pack(1, err);
1350
+ Py_DECREF(err);
1351
+
1352
+ return r;
1353
+ }
1354
+
1355
+ PyObject* method_ENnextH(PyObject* self, PyObject* Py_UNUSED(args))
1356
+ {
1357
+ long lStep;
1358
+ PyObject* err = PyLong_FromLong(ENnextH(&lStep));
1359
+ PyObject* pyLStep = PyLong_FromLong(lStep);
1360
+
1361
+ PyObject* r = PyTuple_Pack(2, err, pyLStep);
1362
+ Py_DECREF(err);
1363
+ Py_DECREF(pyLStep);
1364
+
1365
+ return r;
1366
+ }
1367
+
1368
+ PyObject* method_ENnextQ(PyObject* self, PyObject* Py_UNUSED(args))
1369
+ {
1370
+ long tStep;
1371
+ PyObject* err = PyLong_FromLong(ENnextQ(&tStep));
1372
+ PyObject* pyTStep = PyLong_FromLong(tStep);
1373
+
1374
+ PyObject* r = PyTuple_Pack(2, err, pyTStep);
1375
+ Py_DECREF(err);
1376
+ Py_DECREF(pyTStep);
1377
+
1378
+ return r;
1379
+ }
1380
+
1381
+ PyObject* method_ENopenH(PyObject* self, PyObject* Py_UNUSED(args))
1382
+ {
1383
+ PyObject* err = PyLong_FromLong(ENopenH());
1384
+
1385
+ PyObject* r = PyTuple_Pack(1, err);
1386
+ Py_DECREF(err);
1387
+
1388
+ return r;
1389
+ }
1390
+
1391
+ PyObject* method_ENopenQ(PyObject* self, PyObject* Py_UNUSED(args))
1392
+ {
1393
+ PyObject* err = PyLong_FromLong(ENopenQ());
1394
+
1395
+ PyObject* r = PyTuple_Pack(1, err);
1396
+ Py_DECREF(err);
1397
+
1398
+ return r;
1399
+ }
1400
+
1401
+ PyObject* method_ENreport(PyObject* self, PyObject* Py_UNUSED(args))
1402
+ {
1403
+ PyObject* err = PyLong_FromLong(ENreport());
1404
+
1405
+ PyObject* r = PyTuple_Pack(1, err);
1406
+ Py_DECREF(err);
1407
+
1408
+ return r;
1409
+ }
1410
+
1411
+ PyObject* method_ENresetreport(PyObject* self, PyObject* Py_UNUSED(args))
1412
+ {
1413
+ PyObject* err = PyLong_FromLong(ENresetreport());
1414
+
1415
+ PyObject* r = PyTuple_Pack(1, err);
1416
+ Py_DECREF(err);
1417
+
1418
+ return r;
1419
+ }
1420
+
1421
+ PyObject* method_ENrunH(PyObject* self, PyObject* Py_UNUSED(args))
1422
+ {
1423
+ long currentTime;
1424
+ PyObject* err = PyLong_FromLong(ENrunH(&currentTime));
1425
+ PyObject* pyCurrentTime = PyLong_FromLong(currentTime);
1426
+
1427
+ PyObject* r = PyTuple_Pack(2, err, pyCurrentTime);
1428
+ Py_DECREF(err);
1429
+ Py_DECREF(pyCurrentTime);
1430
+
1431
+ return r;
1432
+ }
1433
+
1434
+ PyObject* method_ENrunQ(PyObject* self, PyObject* Py_UNUSED(args))
1435
+ {
1436
+ long currentTime;
1437
+ PyObject* err = PyLong_FromLong(ENrunQ(&currentTime));
1438
+ PyObject* pyCurrentTime = PyLong_FromLong(currentTime);
1439
+
1440
+ PyObject* r = PyTuple_Pack(2, err, pyCurrentTime);
1441
+ Py_DECREF(err);
1442
+ Py_DECREF(pyCurrentTime);
1443
+
1444
+ return r;
1445
+ }
1446
+
1447
+ PyObject* method_ENsavehydfile(PyObject* self, PyObject* args)
1448
+ {
1449
+ char* filename = NULL;
1450
+
1451
+ if(!PyArg_ParseTuple(args, "s", &filename)) {
1452
+ return NULL;
1453
+ }
1454
+
1455
+ PyObject* err = PyLong_FromLong(ENsavehydfile(filename));
1456
+
1457
+ PyObject* r = PyTuple_Pack(1, err);
1458
+ Py_DECREF(err);
1459
+
1460
+ return r;
1461
+ }
1462
+
1463
+ PyObject* method_ENsaveH(PyObject* self, PyObject* Py_UNUSED(args))
1464
+ {
1465
+ PyObject* err = PyLong_FromLong(ENsaveH());
1466
+
1467
+ PyObject* r = PyTuple_Pack(1, err);
1468
+ Py_DECREF(err);
1469
+
1470
+ return r;
1471
+ }
1472
+
1473
+ PyObject* method_ENsaveinpfile(PyObject* self, PyObject* args)
1474
+ {
1475
+ char* filename = NULL;
1476
+
1477
+ if(!PyArg_ParseTuple(args, "s", &filename)) {
1478
+ return NULL;
1479
+ }
1480
+
1481
+ PyObject* err = PyLong_FromLong(ENsaveinpfile(filename));
1482
+
1483
+ PyObject* r = PyTuple_Pack(1, err);
1484
+ Py_DECREF(err);
1485
+
1486
+ return r;
1487
+ }
1488
+
1489
+ PyObject* method_ENsetbasedemand(PyObject* self, PyObject* args)
1490
+ {
1491
+ int nodeIndex, demandIndex;
1492
+ float baseDemand;
1493
+
1494
+ if(!PyArg_ParseTuple(args, "iif", &nodeIndex, &demandIndex, &baseDemand)) {
1495
+ return NULL;
1496
+ }
1497
+
1498
+ PyObject* err = PyLong_FromLong(ENsetbasedemand(nodeIndex, demandIndex, baseDemand));
1499
+
1500
+ PyObject* r = PyTuple_Pack(1, err);
1501
+ Py_DECREF(err);
1502
+
1503
+ return r;
1504
+ }
1505
+
1506
+ PyObject* method_ENsetcomment(PyObject* self, PyObject* args)
1507
+ {
1508
+ int object, index;
1509
+ char* comment = NULL;
1510
+
1511
+ if(!PyArg_ParseTuple(args, "iis", &object, &index, &comment)) {
1512
+ return NULL;
1513
+ }
1514
+
1515
+ PyObject* err = PyLong_FromLong(ENsetcomment(object, index, comment));
1516
+
1517
+ PyObject* r = PyTuple_Pack(1, err);
1518
+ Py_DECREF(err);
1519
+
1520
+ return r;
1521
+ }
1522
+
1523
+ PyObject* method_ENsetcontrol(PyObject* self, PyObject* args)
1524
+ {
1525
+ int index, type, linkIndex, nodeIndex;
1526
+ float setting, level;
1527
+
1528
+ if(!PyArg_ParseTuple(args, "iiifif", &index, &type, &linkIndex, &setting, &nodeIndex, &level)) {
1529
+ return NULL;
1530
+ }
1531
+
1532
+ PyObject* err = PyLong_FromLong(ENsetcontrol(index, type, linkIndex, setting, nodeIndex, level));
1533
+
1534
+ PyObject* r = PyTuple_Pack(1, err);
1535
+ Py_DECREF(err);
1536
+
1537
+ return r;
1538
+ }
1539
+
1540
+ PyObject* method_ENsetcurveid(PyObject* self, PyObject* args)
1541
+ {
1542
+ int index;
1543
+ char* id = NULL;
1544
+
1545
+ if(!PyArg_ParseTuple(args, "is", &index, &id)) {
1546
+ return NULL;
1547
+ }
1548
+
1549
+ PyObject* err = PyLong_FromLong(ENsetcurveid(index, id));
1550
+
1551
+ PyObject* r = PyTuple_Pack(1, err);
1552
+ Py_DECREF(err);
1553
+
1554
+ return r;
1555
+ }
1556
+
1557
+ PyObject* method_ENsetcurve(PyObject* self, PyObject* args)
1558
+ {
1559
+ int index, nPoints;
1560
+ PyObject* xValues = NULL;
1561
+ PyObject* yValues = NULL;
1562
+ if(!PyArg_ParseTuple(args, "iOOi", &index, &xValues, &yValues, &nPoints)) {
1563
+ return NULL;
1564
+ }
1565
+
1566
+ float* xValuesRaw = (float*) malloc(sizeof(float) * nPoints);
1567
+ float* yValuesRaw = (float*) malloc(sizeof(float) * nPoints);
1568
+
1569
+ for(int i=0; i != nPoints; i++) {
1570
+ xValuesRaw[i] = (float) PyFloat_AsDouble(PyList_GET_ITEM(xValues, i));
1571
+ yValuesRaw[i] = (float) PyFloat_AsDouble(PyList_GET_ITEM(yValues, i));
1572
+ }
1573
+
1574
+ PyObject* err = PyLong_FromLong(ENsetcurve(index, xValuesRaw, yValuesRaw, nPoints));
1575
+ free(xValuesRaw);
1576
+ free(yValuesRaw);
1577
+
1578
+ PyObject* r = PyTuple_Pack(1, err);
1579
+ Py_DECREF(err);
1580
+
1581
+ return r;
1582
+ }
1583
+
1584
+ PyObject* method_ENsetcoord(PyObject* self, PyObject* args)
1585
+ {
1586
+ int index;
1587
+ double x, y;
1588
+
1589
+ if(!PyArg_ParseTuple(args, "idd", &index, &x, &y)) {
1590
+ return NULL;
1591
+ }
1592
+
1593
+ PyObject* err = PyLong_FromLong(ENsetcoord(index, x, y));
1594
+
1595
+ PyObject* r = PyTuple_Pack(1, err);
1596
+ Py_DECREF(err);
1597
+
1598
+ return r;
1599
+ }
1600
+
1601
+ PyObject* method_ENsetcurvevalue(PyObject* self, PyObject* args)
1602
+ {
1603
+ int curveIndex, pointIndex;
1604
+ float x, y;
1605
+
1606
+ if(!PyArg_ParseTuple(args, "iiff", &curveIndex, &pointIndex, &x, &y)) {
1607
+ return NULL;
1608
+ }
1609
+
1610
+ PyObject* err = PyLong_FromLong(ENsetcurvevalue(curveIndex, pointIndex, x, y));
1611
+
1612
+ PyObject* r = PyTuple_Pack(1, err);
1613
+ Py_DECREF(err);
1614
+
1615
+ return r;
1616
+ }
1617
+
1618
+ PyObject* method_ENsetdemandmodel(PyObject* self, PyObject* args)
1619
+ {
1620
+ int model;
1621
+ float pmin, preq, pexp;
1622
+
1623
+ if(!PyArg_ParseTuple(args, "ifff", &model, &pmin, &preq, &pexp)) {
1624
+ return NULL;
1625
+ }
1626
+
1627
+ PyObject* err = PyLong_FromLong(ENsetdemandmodel(model, pmin, preq, pexp));
1628
+
1629
+ PyObject* r = PyTuple_Pack(1, err);
1630
+ Py_DECREF(err);
1631
+
1632
+ return r;
1633
+ }
1634
+
1635
+ PyObject* method_ENsetdemandname(PyObject* self, PyObject* args)
1636
+ {
1637
+ int nodeIndex, demandIndex;
1638
+ char* demandName = NULL;
1639
+
1640
+ if(!PyArg_ParseTuple(args, "iis", &nodeIndex, &demandIndex, &demandName)) {
1641
+ return NULL;
1642
+ }
1643
+
1644
+ PyObject* err = PyLong_FromLong(ENsetdemandname(nodeIndex, demandIndex, demandName));
1645
+
1646
+ PyObject* r = PyTuple_Pack(1, err);
1647
+ Py_DECREF(err);
1648
+
1649
+ return r;
1650
+ }
1651
+
1652
+ PyObject* method_ENsetdemandpattern(PyObject* self, PyObject* args)
1653
+ {
1654
+ int nodeIndex, demandIndex, patIndex;
1655
+
1656
+ if(!PyArg_ParseTuple(args, "iii", &nodeIndex, &demandIndex, &patIndex)) {
1657
+ return NULL;
1658
+ }
1659
+
1660
+ PyObject* err = PyLong_FromLong(ENsetdemandpattern(nodeIndex, demandIndex, patIndex));
1661
+
1662
+ PyObject* r = PyTuple_Pack(1, err);
1663
+ Py_DECREF(err);
1664
+
1665
+ return r;
1666
+ }
1667
+
1668
+ PyObject* method_ENsetelseaction(PyObject* self, PyObject* args)
1669
+ {
1670
+ int ruleIndex, actionIndex, linkIndex, status;
1671
+ float setting;
1672
+
1673
+ if(!PyArg_ParseTuple(args, "iiiif", &ruleIndex, &actionIndex, &linkIndex, &status, &setting)) {
1674
+ return NULL;
1675
+ }
1676
+
1677
+ PyObject* err = PyLong_FromLong(ENsetelseaction(ruleIndex, actionIndex, linkIndex, status, setting));
1678
+
1679
+ PyObject* r = PyTuple_Pack(1, err);
1680
+ Py_DECREF(err);
1681
+
1682
+ return r;
1683
+ }
1684
+
1685
+ PyObject* method_ENsetflowunits(PyObject* self, PyObject* args)
1686
+ {
1687
+ int units;
1688
+
1689
+ if(!PyArg_ParseTuple(args, "i", &units)) {
1690
+ return NULL;
1691
+ }
1692
+
1693
+ PyObject* err = PyLong_FromLong(ENsetflowunits(units));
1694
+
1695
+ PyObject* r = PyTuple_Pack(1, err);
1696
+ Py_DECREF(err);
1697
+
1698
+ return r;
1699
+ }
1700
+
1701
+ PyObject* method_ENsetheadcurveindex(PyObject* self, PyObject* args)
1702
+ {
1703
+ int linkIndex, curveIndex;
1704
+
1705
+ if(!PyArg_ParseTuple(args, "ii", &linkIndex, &curveIndex)) {
1706
+ return NULL;
1707
+ }
1708
+
1709
+ PyObject* err = PyLong_FromLong(ENsetheadcurveindex(linkIndex, curveIndex));
1710
+
1711
+ PyObject* r = PyTuple_Pack(1, err);
1712
+ Py_DECREF(err);
1713
+
1714
+ return r;
1715
+ }
1716
+
1717
+ PyObject* method_ENsetjuncdata(PyObject* self, PyObject* args)
1718
+ {
1719
+ int index;
1720
+ float elev, dmnd;
1721
+ char* dmndpat = NULL;
1722
+
1723
+ if(!PyArg_ParseTuple(args, "iffs", &index, &elev, &dmnd, &dmndpat)) {
1724
+ return NULL;
1725
+ }
1726
+
1727
+ PyObject* err = PyLong_FromLong(ENsetjuncdata(index, elev, dmnd, dmndpat));
1728
+
1729
+ PyObject* r = PyTuple_Pack(1, err);
1730
+ Py_DECREF(err);
1731
+
1732
+ return r;
1733
+ }
1734
+
1735
+ PyObject* method_ENsetlinkid(PyObject* self, PyObject* args)
1736
+ {
1737
+ int index;
1738
+ char* newid = NULL;
1739
+
1740
+ if(!PyArg_ParseTuple(args, "is", &index, &newid)) {
1741
+ return NULL;
1742
+ }
1743
+
1744
+ PyObject* err = PyLong_FromLong(ENsetlinkid(index, newid));
1745
+
1746
+ PyObject* r = PyTuple_Pack(1, err);
1747
+ Py_DECREF(err);
1748
+
1749
+ return r;
1750
+ }
1751
+
1752
+ PyObject* method_ENsetlinknodes(PyObject* self, PyObject* args)
1753
+ {
1754
+ int index, node1, node2;
1755
+
1756
+ if(!PyArg_ParseTuple(args, "iii", &index, &node1, &node2)) {
1757
+ return NULL;
1758
+ }
1759
+
1760
+ PyObject* err = PyLong_FromLong(ENsetlinknodes(index, node1, node2));
1761
+
1762
+ PyObject* r = PyTuple_Pack(1, err);
1763
+ Py_DECREF(err);
1764
+
1765
+ return r;
1766
+ }
1767
+
1768
+ PyObject* method_ENsetlinktype(PyObject* self, PyObject* args)
1769
+ {
1770
+ int index;
1771
+ int linkType, actionCode;
1772
+
1773
+ if(!PyArg_ParseTuple(args, "iii", &index, &linkType, &actionCode)) {
1774
+ return NULL;
1775
+ }
1776
+
1777
+ PyObject* err = PyLong_FromLong(ENsetlinktype(&index, linkType, actionCode));
1778
+
1779
+ PyObject* r = PyTuple_Pack(1, err);
1780
+ Py_DECREF(err);
1781
+
1782
+ return r;
1783
+ }
1784
+
1785
+ PyObject* method_ENsetlinkvalue(PyObject* self, PyObject* args)
1786
+ {
1787
+ int index, property;
1788
+ float value;
1789
+
1790
+ if(!PyArg_ParseTuple(args, "iif", &index, &property, &value)) {
1791
+ return NULL;
1792
+ }
1793
+
1794
+ PyObject* err = PyLong_FromLong(ENsetlinkvalue(index, property, value));
1795
+
1796
+ PyObject* r = PyTuple_Pack(1, err);
1797
+ Py_DECREF(err);
1798
+
1799
+ return r;
1800
+ }
1801
+
1802
+ PyObject* method_ENsetnodeid(PyObject* self, PyObject* args)
1803
+ {
1804
+ int index;
1805
+ char* newid = NULL;
1806
+
1807
+ if(!PyArg_ParseTuple(args, "is", &index, &newid)) {
1808
+ return NULL;
1809
+ }
1810
+
1811
+ PyObject* err = PyLong_FromLong(ENsetnodeid(index, newid));
1812
+
1813
+ PyObject* r = PyTuple_Pack(1, err);
1814
+ Py_DECREF(err);
1815
+
1816
+ return r;
1817
+ }
1818
+
1819
+ PyObject* method_ENsetnodevalue(PyObject* self, PyObject* args)
1820
+ {
1821
+ int index, property;
1822
+ float value;
1823
+
1824
+ if(!PyArg_ParseTuple(args, "iif", &index, &property, &value)) {
1825
+ return NULL;
1826
+ }
1827
+
1828
+ PyObject* err = PyLong_FromLong(ENsetnodevalue(index, property, value));
1829
+
1830
+ PyObject* r = PyTuple_Pack(1, err);
1831
+ Py_DECREF(err);
1832
+
1833
+ return r;
1834
+ }
1835
+
1836
+ PyObject* method_ENsetoption(PyObject* self, PyObject* args)
1837
+ {
1838
+ int option;
1839
+ float value;
1840
+
1841
+ if(!PyArg_ParseTuple(args, "if", &option, &value)) {
1842
+ return NULL;
1843
+ }
1844
+
1845
+ PyObject* err = PyLong_FromLong(ENsetoption(option, value));
1846
+
1847
+ PyObject* r = PyTuple_Pack(1, err);
1848
+ Py_DECREF(err);
1849
+
1850
+ return r;
1851
+ }
1852
+
1853
+ PyObject* method_ENsetpattern(PyObject* self, PyObject* args)
1854
+ {
1855
+ int index;
1856
+ PyObject* values = NULL;
1857
+ int len;
1858
+ if(!PyArg_ParseTuple(args, "iOi", &index, &values, &len)) {
1859
+ return NULL;
1860
+ }
1861
+
1862
+ int numValues = PyList_Size(values);
1863
+ float* valuesRaw = (float*) malloc(sizeof(float) * numValues);
1864
+ for(int i=0; i != numValues; i++) {
1865
+ valuesRaw[i] = (float) PyFloat_AsDouble(PyList_GET_ITEM(values, i));
1866
+ }
1867
+
1868
+ PyObject* err = PyLong_FromLong(ENsetpattern(index, valuesRaw, len));
1869
+ free(valuesRaw);
1870
+
1871
+ PyObject* r = PyTuple_Pack(1, err);
1872
+ Py_DECREF(err);
1873
+
1874
+ return r;
1875
+ }
1876
+
1877
+ PyObject* method_ENsetpatternid(PyObject* self, PyObject* args)
1878
+ {
1879
+ int index;
1880
+ char* id = NULL;
1881
+
1882
+ if(!PyArg_ParseTuple(args, "is", &index, &id)) {
1883
+ return NULL;
1884
+ }
1885
+
1886
+ PyObject* err = PyLong_FromLong(ENsetpatternid(index, id));
1887
+
1888
+ PyObject* r = PyTuple_Pack(1, err);
1889
+ Py_DECREF(err);
1890
+
1891
+ return r;
1892
+ }
1893
+
1894
+ PyObject* method_ENsetpatternvalue(PyObject* self, PyObject* args)
1895
+ {
1896
+ int index, period;
1897
+ float value;
1898
+
1899
+ if(!PyArg_ParseTuple(args, "iif", &index, &period, &value)) {
1900
+ return NULL;
1901
+ }
1902
+
1903
+ PyObject* err = PyLong_FromLong(ENsetpatternvalue(index, period, value));
1904
+
1905
+ PyObject* r = PyTuple_Pack(1, err);
1906
+ Py_DECREF(err);
1907
+
1908
+ return r;
1909
+ }
1910
+
1911
+ PyObject* method_ENsetpipedata(PyObject* self, PyObject* args)
1912
+ {
1913
+ int index;
1914
+ float length, diam, rough, mloss;
1915
+
1916
+ if(!PyArg_ParseTuple(args, "iffff", &index, &length, &diam, &rough, &mloss)) {
1917
+ return NULL;
1918
+ }
1919
+
1920
+ PyObject* err = PyLong_FromLong(ENsetpipedata(index, length, diam, rough, mloss));
1921
+
1922
+ PyObject* r = PyTuple_Pack(1, err);
1923
+ Py_DECREF(err);
1924
+
1925
+ return r;
1926
+ }
1927
+
1928
+ PyObject* method_ENsetpremise(PyObject* self, PyObject* args)
1929
+ {
1930
+ int ruleIndex, premiseIndex, logop, object, objIndex, variable, relop, status;
1931
+ float value;
1932
+
1933
+ if(!PyArg_ParseTuple(args, "iiiiiiiif", &ruleIndex, &premiseIndex, &logop, &object, &objIndex, &variable, &relop, &status, &value)) {
1934
+ return NULL;
1935
+ }
1936
+
1937
+ PyObject* err = PyLong_FromLong(ENsetpremise(ruleIndex, premiseIndex, logop, object, objIndex, variable, relop, status, value));
1938
+
1939
+ PyObject* r = PyTuple_Pack(1, err);
1940
+ Py_DECREF(err);
1941
+
1942
+ return r;
1943
+ }
1944
+
1945
+ PyObject* method_ENsetpremiseindex(PyObject* self, PyObject* args)
1946
+ {
1947
+ int ruleIndex, premiseIndex, objIndex;
1948
+
1949
+ if(!PyArg_ParseTuple(args, "iii", &ruleIndex, &premiseIndex, &objIndex)) {
1950
+ return NULL;
1951
+ }
1952
+
1953
+ PyObject* err = PyLong_FromLong(ENsetpremiseindex(ruleIndex, premiseIndex, objIndex));
1954
+
1955
+ PyObject* r = PyTuple_Pack(1, err);
1956
+ Py_DECREF(err);
1957
+
1958
+ return r;
1959
+ }
1960
+
1961
+ PyObject* method_ENsetpremisevalue(PyObject* self, PyObject* args)
1962
+ {
1963
+ int ruleIndex, premiseIndex;
1964
+ float value;
1965
+
1966
+ if(!PyArg_ParseTuple(args, "iif", &ruleIndex, &premiseIndex, &value)) {
1967
+ return NULL;
1968
+ }
1969
+
1970
+ PyObject* err = PyLong_FromLong(ENsetpremisevalue(ruleIndex, premiseIndex, value));
1971
+
1972
+ PyObject* r = PyTuple_Pack(1, err);
1973
+ Py_DECREF(err);
1974
+
1975
+ return r;
1976
+ }
1977
+
1978
+ PyObject* method_ENsetpremisestatus(PyObject* self, PyObject* args)
1979
+ {
1980
+ int ruleIndex, premiseIndex, status;
1981
+ if(!PyArg_ParseTuple(args, "iii", &ruleIndex, &premiseIndex, &status)) {
1982
+ return NULL;
1983
+ }
1984
+
1985
+ PyObject* err = PyLong_FromLong(ENsetpremisestatus(ruleIndex, premiseIndex, status));
1986
+
1987
+ PyObject* r = PyTuple_Pack(1, err);
1988
+ Py_DECREF(err);
1989
+
1990
+ return r;
1991
+ }
1992
+
1993
+ PyObject* method_ENsetqualtype(PyObject* self, PyObject* args)
1994
+ {
1995
+ int qualtype;
1996
+ char* chemName = NULL;
1997
+ char* chemUnits = NULL;
1998
+ char* traceNode = NULL;
1999
+
2000
+ if(!PyArg_ParseTuple(args, "isss", &qualtype, &chemName, &chemUnits, &traceNode)) {
2001
+ return NULL;
2002
+ }
2003
+
2004
+ PyObject* err = PyLong_FromLong(ENsetqualtype(qualtype, chemName, chemUnits, traceNode));
2005
+
2006
+ PyObject* r = PyTuple_Pack(1, err);
2007
+ Py_DECREF(err);
2008
+
2009
+ return r;
2010
+ }
2011
+
2012
+ PyObject* method_ENsetreport(PyObject* self, PyObject* args)
2013
+ {
2014
+ char* format = NULL;
2015
+
2016
+ if(!PyArg_ParseTuple(args, "s", &format)) {
2017
+ return NULL;
2018
+ }
2019
+
2020
+ PyObject* err = PyLong_FromLong(ENsetreport(format));
2021
+
2022
+ PyObject* r = PyTuple_Pack(1, err);
2023
+ Py_DECREF(err);
2024
+
2025
+ return r;
2026
+ }
2027
+
2028
+ PyObject* method_ENsetrulepriority(PyObject* self, PyObject* args)
2029
+ {
2030
+ int index;
2031
+ float priority;
2032
+
2033
+ if(!PyArg_ParseTuple(args, "if", &index, &priority)) {
2034
+ return NULL;
2035
+ }
2036
+
2037
+ PyObject* err = PyLong_FromLong(ENsetrulepriority(index, priority));
2038
+
2039
+ PyObject* r = PyTuple_Pack(1, err);
2040
+ Py_DECREF(err);
2041
+
2042
+ return r;
2043
+ }
2044
+
2045
+ PyObject* method_ENsetstatusreport(PyObject* self, PyObject* args)
2046
+ {
2047
+ int level;
2048
+
2049
+ if(!PyArg_ParseTuple(args, "i", &level)) {
2050
+ return NULL;
2051
+ }
2052
+
2053
+ PyObject* err = PyLong_FromLong(ENsetstatusreport(level));
2054
+
2055
+ PyObject* r = PyTuple_Pack(1, err);
2056
+ Py_DECREF(err);
2057
+
2058
+ return r;
2059
+ }
2060
+
2061
+ PyObject* method_ENsettankdata(PyObject* self, PyObject* args)
2062
+ {
2063
+ int index;
2064
+ float elev, initlvl, minlvl, maxlvl, diam, minvol;
2065
+ char* volcurve = NULL;
2066
+
2067
+ if(!PyArg_ParseTuple(args, "iffffffs", &index, &elev, &initlvl, &minlvl, &maxlvl, &diam, &minvol, &volcurve)) {
2068
+ return NULL;
2069
+ }
2070
+
2071
+ PyObject* err = PyLong_FromLong(ENsettankdata(index, elev, initlvl, minlvl, maxlvl, diam, minvol, volcurve));
2072
+
2073
+ PyObject* r = PyTuple_Pack(1, err);
2074
+ Py_DECREF(err);
2075
+
2076
+ return r;
2077
+ }
2078
+
2079
+ PyObject* method_ENsetthenaction(PyObject* self, PyObject* args)
2080
+ {
2081
+ int ruleIndex, actionIndex, linkIndex, status;
2082
+ float setting;
2083
+
2084
+ if(!PyArg_ParseTuple(args, "iiiif", &ruleIndex, &actionIndex, &linkIndex, &status, &setting)) {
2085
+ return NULL;
2086
+ }
2087
+
2088
+ PyObject* err = PyLong_FromLong(ENsetthenaction(ruleIndex, actionIndex, linkIndex, status, setting));
2089
+
2090
+ PyObject* r = PyTuple_Pack(1, err);
2091
+ Py_DECREF(err);
2092
+
2093
+ return r;
2094
+ }
2095
+
2096
+ PyObject* method_ENsettimeparam(PyObject* self, PyObject* args)
2097
+ {
2098
+ int param;
2099
+ long value;
2100
+
2101
+ if(!PyArg_ParseTuple(args, "il", &param, &value)) {
2102
+ return NULL;
2103
+ }
2104
+
2105
+ PyObject* err = PyLong_FromLong(ENsettimeparam(param, value));
2106
+
2107
+ PyObject* r = PyTuple_Pack(1, err);
2108
+ Py_DECREF(err);
2109
+
2110
+ return r;
2111
+ }
2112
+
2113
+ PyObject* method_ENsettitle(PyObject* self, PyObject* args)
2114
+ {
2115
+ char* line1 = NULL;
2116
+ char* line2 = NULL;
2117
+ char* line3 = NULL;
2118
+
2119
+ if(!PyArg_ParseTuple(args, "sss", &line1, &line2, &line3)) {
2120
+ return NULL;
2121
+ }
2122
+
2123
+ PyObject* err = PyLong_FromLong(ENsettitle(line1, line2, line3));
2124
+
2125
+ PyObject* r = PyTuple_Pack(1, err);
2126
+ Py_DECREF(err);
2127
+
2128
+ return r;
2129
+ }
2130
+
2131
+ PyObject* method_ENsetvertices(PyObject* self, PyObject* args)
2132
+ {
2133
+ int index;
2134
+ double* x = NULL;
2135
+ double* y = NULL;
2136
+ int count;
2137
+ if(!PyArg_ParseTuple(args, "iOOi", &index, &x, &y, &count)) {
2138
+ return NULL;
2139
+ }
2140
+
2141
+ double* xRaw = (double*) malloc(sizeof(double) * count);
2142
+ double* yRaw = (double*) malloc(sizeof(double) * count);
2143
+
2144
+ for(int i=0; i != count; i++) {
2145
+ xRaw[i] = PyFloat_AsDouble(PyList_GET_ITEM(x, i));
2146
+ yRaw[i] = PyFloat_AsDouble(PyList_GET_ITEM(y, i));
2147
+ }
2148
+
2149
+ PyObject* err = PyLong_FromLong(ENsetvertices(index, xRaw, yRaw, count));
2150
+ free(xRaw);
2151
+ free(yRaw);
2152
+
2153
+ PyObject* r = PyTuple_Pack(1, err);
2154
+ Py_DECREF(err);
2155
+
2156
+ return r;
2157
+ }
2158
+
2159
+ PyObject* method_ENsolveH(PyObject* self, PyObject* Py_UNUSED(args))
2160
+ {
2161
+ PyObject* err = PyLong_FromLong(ENsolveH());
2162
+
2163
+ PyObject* r = PyTuple_Pack(1, err);
2164
+ Py_DECREF(err);
2165
+
2166
+ return r;
2167
+ }
2168
+
2169
+ PyObject* method_ENsolveQ(PyObject* self, PyObject* Py_UNUSED(args))
2170
+ {
2171
+ PyObject* err = PyLong_FromLong(ENsolveQ());
2172
+
2173
+ PyObject* r = PyTuple_Pack(1, err);
2174
+ Py_DECREF(err);
2175
+
2176
+ return r;
2177
+ }
2178
+
2179
+ PyObject* method_ENstepQ(PyObject* self, PyObject* Py_UNUSED(args))
2180
+ {
2181
+ long timeLeft;
2182
+ PyObject* err = PyLong_FromLong(ENstepQ(&timeLeft));
2183
+ PyObject* pyTimeLeft = PyLong_FromLong(timeLeft);
2184
+
2185
+ PyObject* r = PyTuple_Pack(2, err, pyTimeLeft);
2186
+ Py_DECREF(err);
2187
+ Py_DECREF(pyTimeLeft);
2188
+
2189
+ return r;
2190
+ }
2191
+
2192
+ PyObject* method_ENusehydfile(PyObject* self, PyObject* args)
2193
+ {
2194
+ char* filename = NULL;
2195
+ if(!PyArg_ParseTuple(args, "s", &filename)) {
2196
+ return NULL;
2197
+ }
2198
+
2199
+ PyObject* err = PyLong_FromLong(ENusehydfile(filename));
2200
+
2201
+ PyObject* r = PyTuple_Pack(1, err);
2202
+ Py_DECREF(err);
2203
+
2204
+ return r;
2205
+ }
2206
+
2207
+ PyObject* method_ENwriteline(PyObject* self, PyObject* args)
2208
+ {
2209
+ char* line = NULL;
2210
+ if(!PyArg_ParseTuple(args, "s", &line)) {
2211
+ return NULL;
2212
+ }
2213
+
2214
+ PyObject* err = PyLong_FromLong(ENwriteline(line));
2215
+
2216
+ PyObject* r = PyTuple_Pack(1, err);
2217
+ Py_DECREF(err);
2218
+
2219
+ return r;
2220
+ }
2221
+
2222
+ PyObject* method_ENgettag(PyObject* self, PyObject* args)
2223
+ {
2224
+ int object, index;
2225
+ if(!PyArg_ParseTuple(args, "ii", &object, &index)) {
2226
+ return NULL;
2227
+ }
2228
+
2229
+ char tag[MAXID + 1];
2230
+ PyObject* err = PyLong_FromLong(ENgettag(object, index, &tag[0]));
2231
+ PyObject* pyTag = PyUnicode_FromString(&tag[0]);
2232
+
2233
+ PyObject* r = PyTuple_Pack(2, err, pyTag);
2234
+ Py_DECREF(err);
2235
+ Py_DECREF(pyTag);
2236
+
2237
+ return r;
2238
+ }
2239
+
2240
+ PyObject* method_ENsettag(PyObject* self, PyObject* args)
2241
+ {
2242
+ int object, index;
2243
+ char* tag = NULL;
2244
+ if(!PyArg_ParseTuple(args, "iis", &object, &index, &tag)) {
2245
+ return NULL;
2246
+ }
2247
+
2248
+ PyObject* err = PyLong_FromLong(ENsettag(object, index, tag));
2249
+
2250
+ PyObject* r = PyTuple_Pack(1, err);
2251
+ Py_DECREF(err);
2252
+
2253
+ return r;
2254
+ }
2255
+
2256
+ PyObject* method_ENtimetonextevent(PyObject* self, PyObject* Py_UNUSED(args))
2257
+ {
2258
+ int eventType, elemIndex;
2259
+ long duration;
2260
+ PyObject* err = PyLong_FromLong(ENtimetonextevent(&eventType, &duration, &elemIndex));
2261
+ PyObject* pyEventType = PyLong_FromLong(eventType);
2262
+ PyObject* pyDuration = PyLong_FromLong(duration);
2263
+ PyObject* pyElemIndex = PyLong_FromLong(elemIndex);
2264
+
2265
+ PyObject* r = PyTuple_Pack(4, err, pyEventType, pyDuration, pyElemIndex);
2266
+ Py_DECREF(err);
2267
+ Py_DECREF(pyEventType);
2268
+ Py_DECREF(pyDuration);
2269
+ Py_DECREF(pyElemIndex);
2270
+
2271
+ return r;
2272
+ }
2273
+
2274
+ PyObject* method_ENgetnodevalues(PyObject* self, PyObject* args)
2275
+ {
2276
+ int property;
2277
+ if(!PyArg_ParseTuple(args, "i", &property)) {
2278
+ return NULL;
2279
+ }
2280
+
2281
+ int numNodes;
2282
+ int errcode = ENgetcount(EN_NODECOUNT, &numNodes);
2283
+ if(errcode != 0) {
2284
+ PyObject* err = PyLong_FromLong(errcode);
2285
+ PyObject* r = PyTuple_Pack(1, err);
2286
+ Py_DECREF(err);
2287
+
2288
+ return r;
2289
+ }
2290
+
2291
+ float* values = (float*) malloc(sizeof(float) * numNodes);
2292
+ PyObject* err = PyLong_FromLong(ENgetnodevalues(property, values));
2293
+
2294
+ PyObject* valuesList = PyList_New(numNodes);
2295
+ for(int i=0; i != numNodes; i++) {
2296
+ PyList_SET_ITEM(valuesList, i, PyFloat_FromDouble((double) values[i]));
2297
+ }
2298
+
2299
+ free(values);
2300
+
2301
+ PyObject* r = PyTuple_Pack(2, err, valuesList);
2302
+ Py_DECREF(valuesList);
2303
+ Py_DECREF(err);
2304
+
2305
+ return r;
2306
+ }
2307
+
2308
+ PyObject* method_ENgetlinkvalues(PyObject* self, PyObject* args)
2309
+ {
2310
+ int property;
2311
+ if(!PyArg_ParseTuple(args, "i", &property)) {
2312
+ return NULL;
2313
+ }
2314
+
2315
+ int numLinks;
2316
+ int errcode = ENgetcount(EN_LINKCOUNT, &numLinks);
2317
+ if(errcode != 0) {
2318
+ PyObject* err = PyLong_FromLong(errcode);
2319
+ PyObject* r = PyTuple_Pack(1, err);
2320
+ Py_DECREF(err);
2321
+
2322
+ return r;
2323
+ }
2324
+
2325
+ float* value = (float*) malloc(sizeof(float) * numLinks);
2326
+ PyObject* err = PyLong_FromLong(ENgetlinkvalues(property, value));
2327
+
2328
+ PyObject* valuesList = PyList_New(numLinks);
2329
+ for(int i=0; i != numLinks; i++) {
2330
+ PyList_SET_ITEM(valuesList, i, PyFloat_FromDouble(value[i]));
2331
+ }
2332
+
2333
+ free(value);
2334
+
2335
+ PyObject* r = PyTuple_Pack(2, err, valuesList);
2336
+ Py_DECREF(valuesList);
2337
+ Py_DECREF(err);
2338
+
2339
+ return r;
2340
+ }
2341
+
2342
+ PyObject* method_ENsetvertex(PyObject* self, PyObject* args)
2343
+ {
2344
+ int index, vertex;
2345
+ double x, y;
2346
+ if(!PyArg_ParseTuple(args, "iidd", &index, &vertex, &x, &y)) {
2347
+ return NULL;
2348
+ }
2349
+
2350
+ PyObject* err = PyLong_FromLong(ENsetvertex(index, vertex, x, y));
2351
+
2352
+ PyObject* r = PyTuple_Pack(1, err);
2353
+ Py_DECREF(err);
2354
+
2355
+ return r;
2356
+ }
2357
+
2358
+ PyObject* method_ENloadpatternfile(PyObject* self, PyObject* args)
2359
+ {
2360
+ char* filename = NULL;
2361
+ char* id = NULL;
2362
+ if(!PyArg_ParseTuple(args, "ss", &filename, &id)) {
2363
+ return NULL;
2364
+ }
2365
+
2366
+ PyObject* err = PyLong_FromLong(ENloadpatternfile(filename, id));
2367
+
2368
+ PyObject* r = PyTuple_Pack(1, err);
2369
+ Py_DECREF(err);
2370
+
2371
+ return r;
2372
+ }
2373
+
2374
+ PyObject* method_ENsetcurvetype(PyObject* self, PyObject* args)
2375
+ {
2376
+ int index, type;
2377
+ if(!PyArg_ParseTuple(args, "ii", &index, &type)) {
2378
+ return NULL;
2379
+ }
2380
+
2381
+ PyObject* err = PyLong_FromLong(ENsetcurvetype(index, type));
2382
+
2383
+ PyObject* r = PyTuple_Pack(1, err);
2384
+ Py_DECREF(err);
2385
+
2386
+ return r;
2387
+ }
2388
+
2389
+ PyObject* method_ENgetcontrolenabled(PyObject* self, PyObject* args)
2390
+ {
2391
+ int index;
2392
+ if(!PyArg_ParseTuple(args, "i", &index)) {
2393
+ return NULL;
2394
+ }
2395
+
2396
+ int out_enabled;
2397
+ PyObject* err = PyLong_FromLong(ENgetcontrolenabled(index, &out_enabled));
2398
+ PyObject* pyOutEnabled = PyLong_FromLong(out_enabled);
2399
+
2400
+ PyObject* r = PyTuple_Pack(2, err, pyOutEnabled);
2401
+ Py_DECREF(err);
2402
+ Py_DECREF(pyOutEnabled);
2403
+
2404
+ return r;
2405
+ }
2406
+
2407
+ PyObject* method_ENsetcontrolenabled(PyObject* self, PyObject* args)
2408
+ {
2409
+ int index, enabled;
2410
+ if(!PyArg_ParseTuple(args, "ii", &index, &enabled)) {
2411
+ return NULL;
2412
+ }
2413
+
2414
+ PyObject* err = PyLong_FromLong(ENsetcontrolenabled(index, enabled));
2415
+
2416
+ PyObject* r = PyTuple_Pack(1, err);
2417
+ Py_DECREF(err);
2418
+
2419
+ return r;
2420
+ }
2421
+
2422
+ PyObject* method_ENgetruleenabled(PyObject* self, PyObject* args)
2423
+ {
2424
+ int index;
2425
+ if(!PyArg_ParseTuple(args, "i", &index)) {
2426
+ return NULL;
2427
+ }
2428
+
2429
+ int out_enabled;
2430
+ PyObject* err = PyLong_FromLong(ENgetruleenabled(index, &out_enabled));
2431
+ PyObject* pyOutEnabled = PyLong_FromLong(out_enabled);
2432
+
2433
+ PyObject* r = PyTuple_Pack(2, err, pyOutEnabled);
2434
+ Py_DECREF(err);
2435
+ Py_DECREF(pyOutEnabled);
2436
+
2437
+ return r;
2438
+ }
2439
+
2440
+ PyObject* method_ENsetruleenabled(PyObject* self, PyObject* args)
2441
+ {
2442
+ int index, enabled;
2443
+ if(!PyArg_ParseTuple(args, "ii", &index, &enabled)) {
2444
+ return NULL;
2445
+ }
2446
+
2447
+ PyObject* err = PyLong_FromLong(ENsetruleenabled(index, enabled));
2448
+
2449
+ PyObject* r = PyTuple_Pack(1, err);
2450
+ Py_DECREF(err);
2451
+
2452
+ return r;
2453
+ }