@@ -249,6 +249,24 @@ and return a (possibly) different pointer */
249249}
250250
251251
252+ /* TYPEMAPS FOR MEMORY MANAGEMNET OF INT ARRAYS */
253+ %typemap(in, numinputs=0 )int ** int_out (long * temp), int* int_dim (int temp){
254+ $1 = &temp;
255+ }
256+ %typemap(argout) (int ** int_out, int * int_dim) {
257+ if (*$1 ) {
258+ PyObject *o = PyList_New (*$2 );
259+ int i;
260+ long * temp = (long *)*$1 ;
261+ for (i=0 ; i<*$2 ; i++) {
262+ PyList_SetItem (o, i, PyInt_FromLong (temp[i]));
263+ }
264+ $result = SWIG_Python_AppendOutput ($result, o);
265+ free (*$1 );
266+ }
267+ }
268+
269+
252270/* TYPEMAP FOR ENUMERATED TYPES */
253271%typemap(in) EnumeratedType (int val, int ecode = 0 ) {
254272 if (PyObject_HasAttrString ($input," value" )) {
@@ -262,7 +280,7 @@ and return a (possibly) different pointer */
262280
263281 $1 = ($1_type)(val);
264282}
265- %apply EnumeratedType {EN_SaveOption, EN_NodeProperty};
283+ %apply EnumeratedType {EN_SaveOption, EN_NodeProperty, EN_LinkProperty };
266284
267285
268286/* RENAME FUNCTIONS PYTHON STYLE */
@@ -302,11 +320,13 @@ int DLLEXPORT EN_getnodetype(EN_ProjectHandle ph, int index, int *int_out);
302320int DLLEXPORT EN_getnodevalue (EN_ProjectHandle ph, int index, EN_NodeProperty code, float *float_out);
303321
304322// RETREIVING INFORMATION ABOUT NETWORK LINKS
305- int DLLEXPORT EN_getlinkindex (EN_ProjectHandle ph, char *id, int *index);
306- int DLLEXPORT EN_getlinkid (EN_ProjectHandle ph, int index, char *id);
307- int DLLEXPORT EN_getlinktype (EN_ProjectHandle ph, int index, EN_LinkType *code);
308- int DLLEXPORT EN_getlinknodes (EN_ProjectHandle ph, int index, int *node1, int *node2);
309- int DLLEXPORT EN_getlinkvalue (EN_ProjectHandle ph, int index, EN_LinkProperty code, EN_API_FLOAT_TYPE *value);
323+ int DLLEXPORT EN_getlinkindex (EN_ProjectHandle ph, char *id, int *int_out);
324+ // int DLLEXPORT EN_getlinkid(EN_ProjectHandle ph, int index, char *id);
325+ int DLLEXPORT EN_getlinkname (EN_ProjectHandle ph, int index, char **string_out, int *slen);
326+ int DLLEXPORT EN_getlinktype (EN_ProjectHandle ph, int index, int *int_out);
327+ // int DLLEXPORT EN_getlinknodes(EN_ProjectHandle ph, int index, int *node1, int *node2);
328+ int DLLEXPORT EN_getlinknodearray (EN_ProjectHandle ph, int index, int **int_out, int *int_dim);
329+ int DLLEXPORT EN_getlinkvalue (EN_ProjectHandle ph, int index, EN_LinkProperty code, float *float_out);
310330
311331// RETREIVING INFORMATION ABOUT TIME PATTERNS
312332int DLLEXPORT EN_getpatternid (EN_ProjectHandle ph, int index, char *id);
@@ -384,6 +404,18 @@ class NodeType(enum.Enum):
384404 TANK = EN_TANK
385405
386406
407+ class LinkType (enum .Enum ):
408+ CVPIPE = EN_CVPIPE
409+ PIPE = EN_PIPE
410+ PUMP = EN_PUMP
411+ PRV = EN_PRV
412+ PSV = EN_PSV
413+ PBV = EN_PBV
414+ FCV = EN_FCV
415+ TCV = EN_TCV
416+ GPV = EN_GPV
417+
418+
387419class NodeProperty (enum .Enum ):
388420 ELEVATION = EN_ELEVATION
389421 BASEDEMAND = EN_BASEDEMAND
@@ -413,6 +445,29 @@ class NodeProperty(enum.Enum):
413445 MAXVOLUME = EN_MAXVOLUME
414446
415447
448+ class LinkProperty (enum .Enum ):
449+ DIAMETER = EN_DIAMETER
450+ LENGTH = EN_LENGTH
451+ ROUGHNESS = EN_ROUGHNESS
452+ MINORLOSS = EN_MINORLOSS
453+ INITIALSTATUS = EN_INITSTATUS
454+ INITIALSETTINT = EN_INITSETTING
455+ KBULK = EN_KBULK
456+ KWALL = EN_KWALL
457+ FLOW = EN_FLOW
458+ VELOCITY = EN_VELOCITY
459+ HEADLOSS = EN_HEADLOSS
460+ STATUS = EN_STATUS
461+ SETTING = EN_SETTING
462+ ENERGY = EN_ENERGY
463+ LINKQUAL = EN_LINKQUAL
464+ LINKPATTERN = EN_LINKPATTERN
465+ EFFICIENCY = EN_EFFICIENCY
466+ HEADCURVE = EN_HEADCURVE
467+ EFFICIENCYCURVE = EN_EFFICIENCYCURVE
468+ PRICEPATTERN = EN_PRICEPATTERN
469+
470+
416471class SaveOptions (enum .Enum ):
417472 NOSAVE = EN_NOSAVE
418473 SAVE = EN_SAVE
0 commit comments