Implmenting Toolkit API versioning
This commit is contained in:
671
src/epanet.c
671
src/epanet.c
@@ -17,7 +17,7 @@
|
||||
#ifndef __APPLE__
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include <float.h>
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "epanet2.h"
|
||||
@@ -26,638 +26,7 @@
|
||||
#include "text.h"
|
||||
#include "enumstxt.h"
|
||||
|
||||
// This single global variable is used only when the library is called
|
||||
// in "legacy mode" with the 2.1-style API.
|
||||
Project __defaultProject;
|
||||
Project *_defaultProject = &__defaultProject;
|
||||
|
||||
// Functions for creating and removing default temporary files
|
||||
void createtmpfiles()
|
||||
{
|
||||
getTmpName(_defaultProject->TmpHydFname);
|
||||
getTmpName(_defaultProject->TmpOutFname);
|
||||
getTmpName(_defaultProject->TmpStatFname);
|
||||
}
|
||||
void removetmpfiles()
|
||||
{
|
||||
remove(_defaultProject->TmpHydFname);
|
||||
remove(_defaultProject->TmpOutFname);
|
||||
remove(_defaultProject->TmpStatFname);
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
|
||||
System Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3,
|
||||
void (*pviewprog)(char *))
|
||||
{
|
||||
/*------------------------------------------------------------------------
|
||||
** Input: f1 = name of EPANET formatted input file
|
||||
** f2 = name of report file
|
||||
** f3 = name of binary output file
|
||||
** pviewprog = see note below
|
||||
** Output: none
|
||||
** Returns: error code
|
||||
** Purpose: runs a complete EPANET simulation
|
||||
**
|
||||
** The pviewprog() argument is a pointer to a callback function
|
||||
** that takes a character string (char *) as its only parameter.
|
||||
** The function would reside in and be used by the calling
|
||||
** program to display the progress messages that EPANET generates
|
||||
** as it carries out its computations. If this feature is not
|
||||
** needed then the argument should be NULL.
|
||||
**-------------------------------------------------------------------------
|
||||
*/
|
||||
int errcode = 0;
|
||||
int warncode = 0;
|
||||
|
||||
// Run the project and record any warning
|
||||
createtmpfiles();
|
||||
errcode = EN_runproject(_defaultProject, f1, f2, f3, pviewprog);
|
||||
if (errcode < 100) warncode = errcode;
|
||||
removetmpfiles();
|
||||
|
||||
// Return the warning code if the run had no errors
|
||||
if (warncode) errcode = MAX(errcode, warncode);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENinit(const char *f2, const char *f3, int UnitsType,
|
||||
int HeadlossFormula)
|
||||
{
|
||||
int errcode = 0;
|
||||
createtmpfiles();
|
||||
errcode = EN_init(_defaultProject, f2, f3, UnitsType, HeadlossFormula);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENopen(const char *f1, const char *f2, const char *f3)
|
||||
{
|
||||
int errcode = 0;
|
||||
createtmpfiles();
|
||||
errcode = EN_open(_defaultProject, f1, f2, f3);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsaveinpfile(const char *filename)
|
||||
{
|
||||
return EN_saveinpfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENclose()
|
||||
{
|
||||
EN_close(_defaultProject);
|
||||
removetmpfiles();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Hydraulic Analysis Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENsolveH() { return EN_solveH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsaveH() { return EN_saveH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENopenH() { return EN_openH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENinitH(int flag) { return EN_initH(_defaultProject, flag); }
|
||||
|
||||
int DLLEXPORT ENrunH(long *t) { return EN_runH(_defaultProject, t); }
|
||||
|
||||
int DLLEXPORT ENnextH(long *tstep) { return EN_nextH(_defaultProject, tstep); }
|
||||
|
||||
int DLLEXPORT ENcloseH() { return EN_closeH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsavehydfile(char *filename)
|
||||
{
|
||||
return EN_savehydfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENusehydfile(char *filename)
|
||||
{
|
||||
return EN_usehydfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Water Quality Analysis Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENsolveQ() { return EN_solveQ(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENopenQ() { return EN_openQ(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENinitQ(int saveflag) { return EN_initQ(_defaultProject, saveflag); }
|
||||
|
||||
int DLLEXPORT ENrunQ(long *t) { return EN_runQ(_defaultProject, t); }
|
||||
|
||||
int DLLEXPORT ENnextQ(long *tstep) { return EN_nextQ(_defaultProject, tstep); }
|
||||
|
||||
int DLLEXPORT ENstepQ(long *tleft) { return EN_stepQ(_defaultProject, tleft); }
|
||||
|
||||
int DLLEXPORT ENcloseQ() { return EN_closeQ(_defaultProject); }
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Reporting Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENwriteline(char *line) { return EN_writeline(_defaultProject, line); }
|
||||
|
||||
int DLLEXPORT ENreport() { return EN_report(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENresetreport() { return EN_resetreport(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsetreport(char *s) { return EN_setreport(_defaultProject, s); }
|
||||
|
||||
int DLLEXPORT ENsetstatusreport(int code)
|
||||
{
|
||||
return EN_setstatusreport(_defaultProject, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetversion(int *v) { return EN_getversion(v); }
|
||||
|
||||
int DLLEXPORT ENgetcount(int code, int *count)
|
||||
{
|
||||
return EN_getcount(_defaultProject, (EN_CountType)code, count);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgeterror(int errcode, char *errmsg, int n)
|
||||
{
|
||||
return EN_geterror(errcode, errmsg, n);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetstatistic(int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getstatistic(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Analysis Options Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetoption(int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getoption(_defaultProject, (EN_Option)code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetoption(int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setoption(_defaultProject, code, v);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetflowunits(int *code) { return EN_getflowunits(_defaultProject, code); }
|
||||
|
||||
int DLLEXPORT ENsetflowunits(int code) { return EN_setflowunits(_defaultProject, code); }
|
||||
|
||||
int DLLEXPORT ENgettimeparam(int code, long *value)
|
||||
{
|
||||
return EN_gettimeparam(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsettimeparam(int code, long value)
|
||||
{
|
||||
return EN_settimeparam(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetqualinfo(int *qualcode, char *chemname, char *chemunits,
|
||||
int *tracenode)
|
||||
{
|
||||
return EN_getqualinfo(_defaultProject, qualcode, chemname, chemunits, tracenode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetqualtype(int *qualcode, int *tracenode)
|
||||
{
|
||||
return EN_getqualtype(_defaultProject, qualcode, tracenode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetqualtype(int qualcode, char *chemname, char *chemunits,
|
||||
char *tracenode)
|
||||
{
|
||||
return EN_setqualtype(_defaultProject, qualcode, chemname, chemunits, tracenode);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Node Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddnode(char *id, EN_NodeType nodeType)
|
||||
{
|
||||
return EN_addnode(_defaultProject, id, nodeType);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletenode(int index, int actionCode)
|
||||
{
|
||||
return EN_deletenode(_defaultProject, index, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodeindex(char *id, int *index)
|
||||
{
|
||||
return EN_getnodeindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodeid(int index, char *id)
|
||||
{
|
||||
return EN_getnodeid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetnodeid(int index, char *newid)
|
||||
{
|
||||
return EN_setnodeid(_defaultProject, index, newid);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodetype(int index, int *code)
|
||||
{
|
||||
return EN_getnodetype(_defaultProject, index, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodevalue(int index, int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getnodevalue(_defaultProject, index, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetnodevalue(int index, int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setnodevalue(_defaultProject, index, code, v);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcoord(int index, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y)
|
||||
{
|
||||
return EN_getcoord(_defaultProject, index, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcoord(int index, EN_API_FLOAT_TYPE x, EN_API_FLOAT_TYPE y)
|
||||
{
|
||||
return EN_setcoord(_defaultProject, index, x, y);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Nodal Demand Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetdemandmodel(int *type, EN_API_FLOAT_TYPE *pmin,
|
||||
EN_API_FLOAT_TYPE *preq, EN_API_FLOAT_TYPE *pexp)
|
||||
{
|
||||
return EN_getdemandmodel(_defaultProject, type, pmin, preq, pexp);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandmodel(int type, EN_API_FLOAT_TYPE pmin,
|
||||
EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp)
|
||||
{
|
||||
return EN_setdemandmodel(_defaultProject, type, pmin, preq, pexp);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands)
|
||||
{
|
||||
return EN_getnumdemands(_defaultProject, nodeIndex, numDemands);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE *baseDemand)
|
||||
{
|
||||
return EN_getbasedemand(_defaultProject, nodeIndex, demandIdx, baseDemand);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand)
|
||||
{
|
||||
return EN_setbasedemand(_defaultProject, nodeIndex, demandIdx, baseDemand);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandpattern(int nodeIndex, int demandIdx, int patIndex)
|
||||
{
|
||||
return EN_setdemandpattern(_defaultProject, nodeIndex, demandIdx, patIndex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
||||
{
|
||||
return EN_getdemandpattern(_defaultProject, nodeIndex, demandIdx, pattIdx);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIdx, char *demandName)
|
||||
{
|
||||
return EN_getdemandname(_defaultProject, nodeIndex, demandIdx, demandName);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIdx, char *demandName)
|
||||
{
|
||||
return EN_setdemandname(_defaultProject, nodeIndex, demandIdx, demandName);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Link Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddlink(char *id, EN_LinkType linkType, char *fromNode, char *toNode)
|
||||
{
|
||||
return EN_addlink(_defaultProject, id, linkType, fromNode, toNode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletelink(int index, int actionCode)
|
||||
{
|
||||
return EN_deletelink(_defaultProject, index, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkindex(char *id, int *index)
|
||||
{
|
||||
return EN_getlinkindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkid(int index, char *id)
|
||||
{
|
||||
return EN_getlinkid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinkid(int index, char *newid)
|
||||
{
|
||||
return EN_setlinkid(_defaultProject, index, newid);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinktype(int index, EN_LinkType *code)
|
||||
{
|
||||
return EN_getlinktype(_defaultProject, index, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinktype(int *index, EN_LinkType type, int actionCode)
|
||||
{
|
||||
return EN_setlinktype(_defaultProject, index, type, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinknodes(int index, int *node1, int *node2)
|
||||
{
|
||||
return EN_getlinknodes(_defaultProject, index, node1, node2);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinknodes(int index, int node1, int node2)
|
||||
{
|
||||
return EN_setlinknodes(_defaultProject, index, node1, node2);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkvalue(int index, int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getlinkvalue(_defaultProject, index, (EN_LinkProperty)code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinkvalue(int index, int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setlinkvalue(_defaultProject, index, code, v);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Pump Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetpumptype(int index, int *type)
|
||||
{
|
||||
return EN_getpumptype(_defaultProject, index, type);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetheadcurveindex(int index, int *curveindex)
|
||||
{
|
||||
return EN_getheadcurveindex(_defaultProject, index, curveindex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetheadcurveindex(int index, int curveindex)
|
||||
{
|
||||
return EN_setheadcurveindex(_defaultProject, index, curveindex);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Time Pattern Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddpattern(char *id)
|
||||
{
|
||||
return EN_addpattern(_defaultProject, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternindex(char *id, int *index)
|
||||
{
|
||||
return EN_getpatternindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternid(int index, char *id)
|
||||
{
|
||||
return EN_getpatternid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternlen(int index, int *len)
|
||||
{
|
||||
return EN_getpatternlen(_defaultProject, index, len);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternvalue(int index, int period, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getpatternvalue(_defaultProject, index, period, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpatternvalue(int index, int period, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpatternvalue(_defaultProject, index, period, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getaveragepatternvalue(_defaultProject, index, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *f, int n)
|
||||
{
|
||||
return EN_setpattern(_defaultProject, index, f, n);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Data Curve Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddcurve(char *id)
|
||||
{
|
||||
return EN_addcurve(_defaultProject, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurveindex(char *id, int *index)
|
||||
{
|
||||
return EN_getcurveindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurveid(int index, char *id)
|
||||
{
|
||||
return EN_getcurveid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvelen(int index, int *len)
|
||||
{
|
||||
return EN_getcurvelen(_defaultProject, index, len);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvetype(int curveindex, int *type)
|
||||
{
|
||||
return EN_getcurvetype(_defaultProject, curveindex, type);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvevalue(int index, int pnt, EN_API_FLOAT_TYPE *x,
|
||||
EN_API_FLOAT_TYPE *y)
|
||||
{
|
||||
return EN_getcurvevalue(_defaultProject, index, pnt, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcurvevalue(int index, int pnt, EN_API_FLOAT_TYPE x,
|
||||
EN_API_FLOAT_TYPE y)
|
||||
{
|
||||
return EN_setcurvevalue(_defaultProject, index, pnt, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurve(int curveIndex, char *id, int *nValues,
|
||||
EN_API_FLOAT_TYPE **xValues, EN_API_FLOAT_TYPE **yValues)
|
||||
{
|
||||
return EN_getcurve(_defaultProject, curveIndex, id, nValues, xValues, yValues);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y, int n)
|
||||
{
|
||||
return EN_setcurve(_defaultProject, index, x, y, n);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Simple Controls Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddcontrol(int *cindex, int ctype, int lindex, EN_API_FLOAT_TYPE setting,
|
||||
int nindex, EN_API_FLOAT_TYPE level)
|
||||
{
|
||||
return EN_addcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletecontrol(int cindex)
|
||||
{
|
||||
return EN_deletecontrol(_defaultProject, cindex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcontrol(int cindex, int *ctype, int *lindex, EN_API_FLOAT_TYPE *setting,
|
||||
int *nindex, EN_API_FLOAT_TYPE *level)
|
||||
{
|
||||
return EN_getcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcontrol(int cindex, int ctype, int lindex, EN_API_FLOAT_TYPE setting,
|
||||
int nindex, EN_API_FLOAT_TYPE level)
|
||||
{
|
||||
return EN_setcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Rule-Based Controls Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddrule(char *rule)
|
||||
{
|
||||
return EN_addrule(_defaultProject, rule);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeleterule(int index)
|
||||
{
|
||||
return EN_deleterule(_defaultProject, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetrule(int index, int *nPremises, int *nThenActions, int *nElseActions,
|
||||
EN_API_FLOAT_TYPE *priority)
|
||||
{
|
||||
return EN_getrule(_defaultProject, index, nPremises, nThenActions, nElseActions, priority);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetruleID(int index, char* id)
|
||||
{
|
||||
return EN_getruleID(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpremise(int ruleIndex, int premiseIndex, int *logop,
|
||||
int *object, int *objIndex, int *variable,
|
||||
int *relop, int *status, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getpremise(_defaultProject, ruleIndex, premiseIndex, logop, object,
|
||||
objIndex, variable, relop, status, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremise(int ruleIndex, int premiseIndex, int logop,
|
||||
int object, int objIndex, int variable, int relop,
|
||||
int status, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpremise(_defaultProject, ruleIndex, premiseIndex, logop, object,
|
||||
objIndex, variable, relop, status, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremiseindex(int ruleIndex, int premiseIndex, int objIndex)
|
||||
{
|
||||
return EN_setpremiseindex(_defaultProject, ruleIndex, premiseIndex, objIndex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremisestatus(int ruleIndex, int premiseIndex, int status)
|
||||
{
|
||||
return EN_setpremisestatus(_defaultProject, ruleIndex, premiseIndex, status);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremisevalue(int ruleIndex, int premiseIndex, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpremisevalue(_defaultProject, ruleIndex, premiseIndex, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetthenaction(int ruleIndex, int actionIndex, int *linkIndex,
|
||||
int *status, EN_API_FLOAT_TYPE *setting)
|
||||
{
|
||||
return EN_getthenaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetthenaction(int ruleIndex, int actionIndex, int linkIndex,
|
||||
int status, EN_API_FLOAT_TYPE setting)
|
||||
{
|
||||
return EN_setthenaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetelseaction(int ruleIndex, int actionIndex, int *linkIndex,
|
||||
int *status, EN_API_FLOAT_TYPE *setting)
|
||||
{
|
||||
return EN_getelseaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex,
|
||||
int status, EN_API_FLOAT_TYPE setting)
|
||||
{
|
||||
return EN_setelseaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority)
|
||||
{
|
||||
return EN_setrulepriority(_defaultProject, index, priority);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
@@ -702,7 +71,7 @@ int DLLEXPORT EN_deleteproject(EN_Project *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DLLEXPORT EN_runproject(EN_Project p, const char *f1, const char *f2,
|
||||
int DLLEXPORT EN_runproject(EN_Project p, const char *f1, const char *f2,
|
||||
const char *f3, void (*pviewprog)(char *))
|
||||
/*------------------------------------------------------------------------
|
||||
** Input: f1 = name of EPANET formatted input file
|
||||
@@ -774,7 +143,7 @@ int DLLEXPORT EN_init(EN_Project p, const char *f2, const char *f3,
|
||||
|
||||
// Open files
|
||||
errcode = openfiles(p, "", f2, f3);
|
||||
|
||||
|
||||
// Initialize memory used for project's data objects
|
||||
initpointers(p);
|
||||
ERRCODE(netsize(p));
|
||||
@@ -887,7 +256,7 @@ int DLLEXPORT EN_close(EN_Project p)
|
||||
// Free all project data
|
||||
if (p->Openflag) writetime(p, FMT105);
|
||||
freedata(p);
|
||||
|
||||
|
||||
// Close output file
|
||||
out = &p->outfile;
|
||||
if (out->TmpOutFile != out->OutFile)
|
||||
@@ -965,7 +334,7 @@ int DLLEXPORT EN_solveH(EN_Project p)
|
||||
sprintf(p->Msg, FMT101, p->report.Atime);
|
||||
writewin(p->viewprog, p->Msg);
|
||||
|
||||
// Solve for hydraulics & advance to next time period
|
||||
// Solve for hydraulics & advance to next time period
|
||||
tstep = 0;
|
||||
ERRCODE(EN_runH(p, &t));
|
||||
ERRCODE(EN_nextH(p, &tstep));
|
||||
@@ -1146,11 +515,11 @@ int DLLEXPORT EN_savehydfile(EN_Project p, char *filename)
|
||||
FILE *f;
|
||||
FILE *HydFile;
|
||||
int c;
|
||||
|
||||
|
||||
// Check that hydraulics results exist
|
||||
if (p->outfile.HydFile == NULL || !p->outfile.SaveHflag) return 104;
|
||||
|
||||
// Open the permanent hydraulics file
|
||||
// Open the permanent hydraulics file
|
||||
if ((f = fopen(filename, "w+b")) == NULL) return 305;
|
||||
|
||||
// Copy from the scratch file to f
|
||||
@@ -1880,7 +1249,7 @@ int DLLEXPORT EN_gettimeparam(EN_Project p, int code, long *value)
|
||||
Times *time = &p->times;
|
||||
|
||||
int i;
|
||||
|
||||
|
||||
*value = 0;
|
||||
if (!p->Openflag) return 102;
|
||||
if (code < EN_DURATION || code > EN_NEXTEVENTIDX) return 251;
|
||||
@@ -3089,7 +2458,7 @@ int DLLEXPORT EN_getdemandname(EN_Project p, int nodeIndex, int demandIdx, char
|
||||
|
||||
strcpy(demandName, "");
|
||||
|
||||
// Check for valid arguments
|
||||
// Check for valid arguments
|
||||
if (!p->Openflag) return 102;
|
||||
if (nodeIndex <= 0 || nodeIndex > p->network.Njuncs) return 203;
|
||||
|
||||
@@ -4276,7 +3645,7 @@ int DLLEXPORT EN_setpattern(EN_Project p, int index, EN_API_FLOAT_TYPE *f, int n
|
||||
|
||||
int j;
|
||||
Spattern *Pattern = net->Pattern;
|
||||
|
||||
|
||||
// Check for valid arguments
|
||||
if (!p->Openflag) return 102;
|
||||
if (index <= 0 || index > net->Npats) return 205;
|
||||
@@ -4312,14 +3681,14 @@ int DLLEXPORT EN_addcurve(EN_Project p, char *id)
|
||||
int i, n, err = 0;
|
||||
Scurve *curve;
|
||||
|
||||
// Check if a curve with same id already exists
|
||||
// Check if a curve with same id already exists
|
||||
if (!p->Openflag) return 102;
|
||||
if (EN_getcurveindex(p, id, &i) == 0) return 215;
|
||||
|
||||
// Check that id name is not too long
|
||||
if (strlen(id) > MAXID) return 250;
|
||||
|
||||
// Expand the array of curves
|
||||
// Expand the array of curves
|
||||
n = net->Ncurves + 1;
|
||||
net->Curve = (Scurve *) realloc(net->Curve, (n + 1) * sizeof(Scurve));
|
||||
|
||||
@@ -4338,7 +3707,7 @@ int DLLEXPORT EN_addcurve(EN_Project p, char *id)
|
||||
curve->Y[0] = 1.0;
|
||||
}
|
||||
|
||||
// Abort if memory allocation error
|
||||
// Abort if memory allocation error
|
||||
if (err)
|
||||
{
|
||||
free(curve->X);
|
||||
@@ -4888,12 +4257,12 @@ int DLLEXPORT EN_addrule(EN_Project p, char *rule)
|
||||
// Find where current line ends and next one begins
|
||||
nextline = strchr(line, '\n');
|
||||
if (nextline) *nextline = '\0';
|
||||
|
||||
|
||||
// Copy and tokenize the current line
|
||||
strcpy(line2, line);
|
||||
strcat(line2, "\n"); // Tokenizer won't work without this
|
||||
parser->Ntokens = gettokens(line2, parser->Tok, MAXTOKS, parser->Comment);
|
||||
|
||||
|
||||
// Process the line to build up the rule's contents
|
||||
if (parser->Ntokens > 0 && *parser->Tok[0] != ';')
|
||||
{
|
||||
@@ -4950,7 +4319,7 @@ int DLLEXPORT EN_getrule(EN_Project p, int index, int *nPremises,
|
||||
|
||||
if (index < 1 || index > net->Nrules) return 257;
|
||||
*priority = (EN_API_FLOAT_TYPE)p->network.Rule[index].priority;
|
||||
|
||||
|
||||
count = 1;
|
||||
premise = net->Rule[index].Premises;
|
||||
while (premise->next != NULL)
|
||||
@@ -4959,7 +4328,7 @@ int DLLEXPORT EN_getrule(EN_Project p, int index, int *nPremises,
|
||||
premise = premise->next;
|
||||
}
|
||||
*nPremises = count;
|
||||
|
||||
|
||||
count = 1;
|
||||
action = net->Rule[index].ThenActions;
|
||||
while (action->next != NULL)
|
||||
@@ -5020,7 +4389,7 @@ int DLLEXPORT EN_getpremise(EN_Project p, int ruleIndex, int premiseIndex,
|
||||
{
|
||||
Spremise *premises;
|
||||
Spremise *premise;
|
||||
|
||||
|
||||
if (ruleIndex < 1 || ruleIndex > p->network.Nrules) return 257;
|
||||
|
||||
premises = p->network.Rule[ruleIndex].Premises;
|
||||
@@ -5059,7 +4428,7 @@ int DLLEXPORT EN_setpremise(EN_Project p, int ruleIndex, int premiseIndex,
|
||||
{
|
||||
Spremise *premises;
|
||||
Spremise *premise;
|
||||
|
||||
|
||||
if (ruleIndex < 1 || ruleIndex > p->network.Nrules) return 257;
|
||||
|
||||
premises = p->network.Rule[ruleIndex].Premises;
|
||||
@@ -5173,7 +4542,7 @@ int DLLEXPORT EN_getthenaction(EN_Project p, int ruleIndex, int actionIndex,
|
||||
actions = p->network.Rule[ruleIndex].ThenActions;
|
||||
action = getaction(actions, actionIndex);
|
||||
if (action == NULL) return 258;
|
||||
|
||||
|
||||
*linkIndex = action->link;
|
||||
*status = action->status;
|
||||
*setting = (EN_API_FLOAT_TYPE)action->setting;
|
||||
|
||||
654
src/epanet2_1.c
Normal file
654
src/epanet2_1.c
Normal file
@@ -0,0 +1,654 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
Project: OWA EPANET
|
||||
Version: 2.2
|
||||
Module: epanet.c
|
||||
Description: implementation of the EPANET 2.1 API functions
|
||||
Authors: see AUTHORS
|
||||
Copyright: see AUTHORS
|
||||
License: see LICENSE
|
||||
Last Updated: 11/29/2018
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "types.h"
|
||||
#include "funcs.h"
|
||||
|
||||
#include "epanet2_1.h"
|
||||
#include "epanet2.h"
|
||||
|
||||
|
||||
// This single global variable is used only when the library is called
|
||||
// in "legacy mode" with the 2.1-style API.
|
||||
Project __defaultProject;
|
||||
Project *_defaultProject = &__defaultProject;
|
||||
|
||||
// Functions for creating and removing default temporary files
|
||||
void createtmpfiles()
|
||||
{
|
||||
getTmpName(_defaultProject->TmpHydFname);
|
||||
getTmpName(_defaultProject->TmpOutFname);
|
||||
getTmpName(_defaultProject->TmpStatFname);
|
||||
}
|
||||
|
||||
void removetmpfiles()
|
||||
{
|
||||
remove(_defaultProject->TmpHydFname);
|
||||
remove(_defaultProject->TmpOutFname);
|
||||
remove(_defaultProject->TmpStatFname);
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************
|
||||
|
||||
System Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3,
|
||||
void (*pviewprog)(char *))
|
||||
{
|
||||
/*------------------------------------------------------------------------
|
||||
** Input: f1 = name of EPANET formatted input file
|
||||
** f2 = name of report file
|
||||
** f3 = name of binary output file
|
||||
** pviewprog = see note below
|
||||
** Output: none
|
||||
** Returns: error code
|
||||
** Purpose: runs a complete EPANET simulation
|
||||
**
|
||||
** The pviewprog() argument is a pointer to a callback function
|
||||
** that takes a character string (char *) as its only parameter.
|
||||
** The function would reside in and be used by the calling
|
||||
** program to display the progress messages that EPANET generates
|
||||
** as it carries out its computations. If this feature is not
|
||||
** needed then the argument should be NULL.
|
||||
**-------------------------------------------------------------------------
|
||||
*/
|
||||
int errcode = 0;
|
||||
int warncode = 0;
|
||||
|
||||
// Run the project and record any warning
|
||||
createtmpfiles();
|
||||
errcode = EN_runproject(_defaultProject, f1, f2, f3, pviewprog);
|
||||
if (errcode < 100) warncode = errcode;
|
||||
removetmpfiles();
|
||||
|
||||
// Return the warning code if the run had no errors
|
||||
if (warncode) errcode = MAX(errcode, warncode);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENinit(const char *f2, const char *f3, int UnitsType,
|
||||
int HeadlossFormula)
|
||||
{
|
||||
int errcode = 0;
|
||||
createtmpfiles();
|
||||
errcode = EN_init(_defaultProject, f2, f3, UnitsType, HeadlossFormula);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENopen(const char *f1, const char *f2, const char *f3)
|
||||
{
|
||||
int errcode = 0;
|
||||
createtmpfiles();
|
||||
errcode = EN_open(_defaultProject, f1, f2, f3);
|
||||
return errcode;
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsaveinpfile(const char *filename)
|
||||
{
|
||||
return EN_saveinpfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENclose()
|
||||
{
|
||||
EN_close(_defaultProject);
|
||||
removetmpfiles();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Hydraulic Analysis Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENsolveH() { return EN_solveH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsaveH() { return EN_saveH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENopenH() { return EN_openH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENinitH(int flag) { return EN_initH(_defaultProject, flag); }
|
||||
|
||||
int DLLEXPORT ENrunH(long *t) { return EN_runH(_defaultProject, t); }
|
||||
|
||||
int DLLEXPORT ENnextH(long *tstep) { return EN_nextH(_defaultProject, tstep); }
|
||||
|
||||
int DLLEXPORT ENcloseH() { return EN_closeH(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsavehydfile(char *filename)
|
||||
{
|
||||
return EN_savehydfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENusehydfile(char *filename)
|
||||
{
|
||||
return EN_usehydfile(_defaultProject, filename);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Water Quality Analysis Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENsolveQ() { return EN_solveQ(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENopenQ() { return EN_openQ(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENinitQ(int saveflag) { return EN_initQ(_defaultProject, saveflag); }
|
||||
|
||||
int DLLEXPORT ENrunQ(long *t) { return EN_runQ(_defaultProject, t); }
|
||||
|
||||
int DLLEXPORT ENnextQ(long *tstep) { return EN_nextQ(_defaultProject, tstep); }
|
||||
|
||||
int DLLEXPORT ENstepQ(long *tleft) { return EN_stepQ(_defaultProject, tleft); }
|
||||
|
||||
int DLLEXPORT ENcloseQ() { return EN_closeQ(_defaultProject); }
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Reporting Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENwriteline(char *line) { return EN_writeline(_defaultProject, line); }
|
||||
|
||||
int DLLEXPORT ENreport() { return EN_report(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENresetreport() { return EN_resetreport(_defaultProject); }
|
||||
|
||||
int DLLEXPORT ENsetreport(char *s) { return EN_setreport(_defaultProject, s); }
|
||||
|
||||
int DLLEXPORT ENsetstatusreport(int code)
|
||||
{
|
||||
return EN_setstatusreport(_defaultProject, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetversion(int *v) { return EN_getversion(v); }
|
||||
|
||||
int DLLEXPORT ENgetcount(int code, int *count)
|
||||
{
|
||||
return EN_getcount(_defaultProject, (EN_CountType)code, count);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgeterror(int errcode, char *errmsg, int n)
|
||||
{
|
||||
return EN_geterror(errcode, errmsg, n);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetstatistic(int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getstatistic(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Analysis Options Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetoption(int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getoption(_defaultProject, (EN_Option)code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetoption(int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setoption(_defaultProject, code, v);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetflowunits(int *code) { return EN_getflowunits(_defaultProject, code); }
|
||||
|
||||
int DLLEXPORT ENsetflowunits(int code) { return EN_setflowunits(_defaultProject, code); }
|
||||
|
||||
int DLLEXPORT ENgettimeparam(int code, long *value)
|
||||
{
|
||||
return EN_gettimeparam(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsettimeparam(int code, long value)
|
||||
{
|
||||
return EN_settimeparam(_defaultProject, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetqualinfo(int *qualcode, char *chemname, char *chemunits,
|
||||
int *tracenode)
|
||||
{
|
||||
return EN_getqualinfo(_defaultProject, qualcode, chemname, chemunits, tracenode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetqualtype(int *qualcode, int *tracenode)
|
||||
{
|
||||
return EN_getqualtype(_defaultProject, qualcode, tracenode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetqualtype(int qualcode, char *chemname, char *chemunits,
|
||||
char *tracenode)
|
||||
{
|
||||
return EN_setqualtype(_defaultProject, qualcode, chemname, chemunits, tracenode);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Node Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddnode(char *id, EN_NodeType nodeType)
|
||||
{
|
||||
return EN_addnode(_defaultProject, id, nodeType);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletenode(int index, int actionCode)
|
||||
{
|
||||
return EN_deletenode(_defaultProject, index, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodeindex(char *id, int *index)
|
||||
{
|
||||
return EN_getnodeindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodeid(int index, char *id)
|
||||
{
|
||||
return EN_getnodeid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetnodeid(int index, char *newid)
|
||||
{
|
||||
return EN_setnodeid(_defaultProject, index, newid);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodetype(int index, int *code)
|
||||
{
|
||||
return EN_getnodetype(_defaultProject, index, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnodevalue(int index, int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getnodevalue(_defaultProject, index, code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetnodevalue(int index, int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setnodevalue(_defaultProject, index, code, v);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcoord(int index, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y)
|
||||
{
|
||||
return EN_getcoord(_defaultProject, index, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcoord(int index, EN_API_FLOAT_TYPE x, EN_API_FLOAT_TYPE y)
|
||||
{
|
||||
return EN_setcoord(_defaultProject, index, x, y);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Nodal Demand Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetdemandmodel(int *type, EN_API_FLOAT_TYPE *pmin,
|
||||
EN_API_FLOAT_TYPE *preq, EN_API_FLOAT_TYPE *pexp)
|
||||
{
|
||||
return EN_getdemandmodel(_defaultProject, type, pmin, preq, pexp);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandmodel(int type, EN_API_FLOAT_TYPE pmin,
|
||||
EN_API_FLOAT_TYPE preq, EN_API_FLOAT_TYPE pexp)
|
||||
{
|
||||
return EN_setdemandmodel(_defaultProject, type, pmin, preq, pexp);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetnumdemands(int nodeIndex, int *numDemands)
|
||||
{
|
||||
return EN_getnumdemands(_defaultProject, nodeIndex, numDemands);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE *baseDemand)
|
||||
{
|
||||
return EN_getbasedemand(_defaultProject, nodeIndex, demandIdx, baseDemand);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetbasedemand(int nodeIndex, int demandIdx, EN_API_FLOAT_TYPE baseDemand)
|
||||
{
|
||||
return EN_setbasedemand(_defaultProject, nodeIndex, demandIdx, baseDemand);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandpattern(int nodeIndex, int demandIdx, int patIndex)
|
||||
{
|
||||
return EN_setdemandpattern(_defaultProject, nodeIndex, demandIdx, patIndex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetdemandpattern(int nodeIndex, int demandIdx, int *pattIdx)
|
||||
{
|
||||
return EN_getdemandpattern(_defaultProject, nodeIndex, demandIdx, pattIdx);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetdemandname(int nodeIndex, int demandIdx, char *demandName)
|
||||
{
|
||||
return EN_getdemandname(_defaultProject, nodeIndex, demandIdx, demandName);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetdemandname(int nodeIndex, int demandIdx, char *demandName)
|
||||
{
|
||||
return EN_setdemandname(_defaultProject, nodeIndex, demandIdx, demandName);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Link Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddlink(char *id, EN_LinkType linkType, char *fromNode, char *toNode)
|
||||
{
|
||||
return EN_addlink(_defaultProject, id, linkType, fromNode, toNode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletelink(int index, int actionCode)
|
||||
{
|
||||
return EN_deletelink(_defaultProject, index, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkindex(char *id, int *index)
|
||||
{
|
||||
return EN_getlinkindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkid(int index, char *id)
|
||||
{
|
||||
return EN_getlinkid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinkid(int index, char *newid)
|
||||
{
|
||||
return EN_setlinkid(_defaultProject, index, newid);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinktype(int index, EN_LinkType *code)
|
||||
{
|
||||
return EN_getlinktype(_defaultProject, index, code);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinktype(int *index, EN_LinkType type, int actionCode)
|
||||
{
|
||||
return EN_setlinktype(_defaultProject, index, type, actionCode);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinknodes(int index, int *node1, int *node2)
|
||||
{
|
||||
return EN_getlinknodes(_defaultProject, index, node1, node2);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinknodes(int index, int node1, int node2)
|
||||
{
|
||||
return EN_setlinknodes(_defaultProject, index, node1, node2);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetlinkvalue(int index, int code, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getlinkvalue(_defaultProject, index, (EN_LinkProperty)code, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetlinkvalue(int index, int code, EN_API_FLOAT_TYPE v)
|
||||
{
|
||||
return EN_setlinkvalue(_defaultProject, index, code, v);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Pump Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENgetpumptype(int index, int *type)
|
||||
{
|
||||
return EN_getpumptype(_defaultProject, index, type);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetheadcurveindex(int index, int *curveindex)
|
||||
{
|
||||
return EN_getheadcurveindex(_defaultProject, index, curveindex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetheadcurveindex(int index, int curveindex)
|
||||
{
|
||||
return EN_setheadcurveindex(_defaultProject, index, curveindex);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Time Pattern Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddpattern(char *id)
|
||||
{
|
||||
return EN_addpattern(_defaultProject, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternindex(char *id, int *index)
|
||||
{
|
||||
return EN_getpatternindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternid(int index, char *id)
|
||||
{
|
||||
return EN_getpatternid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternlen(int index, int *len)
|
||||
{
|
||||
return EN_getpatternlen(_defaultProject, index, len);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpatternvalue(int index, int period, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getpatternvalue(_defaultProject, index, period, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpatternvalue(int index, int period, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpatternvalue(_defaultProject, index, period, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetaveragepatternvalue(int index, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getaveragepatternvalue(_defaultProject, index, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpattern(int index, EN_API_FLOAT_TYPE *f, int n)
|
||||
{
|
||||
return EN_setpattern(_defaultProject, index, f, n);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Data Curve Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddcurve(char *id)
|
||||
{
|
||||
return EN_addcurve(_defaultProject, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurveindex(char *id, int *index)
|
||||
{
|
||||
return EN_getcurveindex(_defaultProject, id, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurveid(int index, char *id)
|
||||
{
|
||||
return EN_getcurveid(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvelen(int index, int *len)
|
||||
{
|
||||
return EN_getcurvelen(_defaultProject, index, len);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvetype(int curveindex, int *type)
|
||||
{
|
||||
return EN_getcurvetype(_defaultProject, curveindex, type);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurvevalue(int index, int pnt, EN_API_FLOAT_TYPE *x,
|
||||
EN_API_FLOAT_TYPE *y)
|
||||
{
|
||||
return EN_getcurvevalue(_defaultProject, index, pnt, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcurvevalue(int index, int pnt, EN_API_FLOAT_TYPE x,
|
||||
EN_API_FLOAT_TYPE y)
|
||||
{
|
||||
return EN_setcurvevalue(_defaultProject, index, pnt, x, y);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcurve(int curveIndex, char *id, int *nValues,
|
||||
EN_API_FLOAT_TYPE **xValues, EN_API_FLOAT_TYPE **yValues)
|
||||
{
|
||||
return EN_getcurve(_defaultProject, curveIndex, id, nValues, xValues, yValues);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *x, EN_API_FLOAT_TYPE *y, int n)
|
||||
{
|
||||
return EN_setcurve(_defaultProject, index, x, y, n);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Simple Controls Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddcontrol(int *cindex, int ctype, int lindex, EN_API_FLOAT_TYPE setting,
|
||||
int nindex, EN_API_FLOAT_TYPE level)
|
||||
{
|
||||
return EN_addcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeletecontrol(int cindex)
|
||||
{
|
||||
return EN_deletecontrol(_defaultProject, cindex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetcontrol(int cindex, int *ctype, int *lindex, EN_API_FLOAT_TYPE *setting,
|
||||
int *nindex, EN_API_FLOAT_TYPE *level)
|
||||
{
|
||||
return EN_getcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetcontrol(int cindex, int ctype, int lindex, EN_API_FLOAT_TYPE setting,
|
||||
int nindex, EN_API_FLOAT_TYPE level)
|
||||
{
|
||||
return EN_setcontrol(_defaultProject, cindex, ctype, lindex, setting, nindex, level);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
|
||||
Rule-Based Controls Functions
|
||||
|
||||
********************************************************************/
|
||||
|
||||
int DLLEXPORT ENaddrule(char *rule)
|
||||
{
|
||||
return EN_addrule(_defaultProject, rule);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENdeleterule(int index)
|
||||
{
|
||||
return EN_deleterule(_defaultProject, index);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetrule(int index, int *nPremises, int *nThenActions, int *nElseActions,
|
||||
EN_API_FLOAT_TYPE *priority)
|
||||
{
|
||||
return EN_getrule(_defaultProject, index, nPremises, nThenActions, nElseActions, priority);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetruleID(int index, char* id)
|
||||
{
|
||||
return EN_getruleID(_defaultProject, index, id);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetpremise(int ruleIndex, int premiseIndex, int *logop,
|
||||
int *object, int *objIndex, int *variable,
|
||||
int *relop, int *status, EN_API_FLOAT_TYPE *value)
|
||||
{
|
||||
return EN_getpremise(_defaultProject, ruleIndex, premiseIndex, logop, object,
|
||||
objIndex, variable, relop, status, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremise(int ruleIndex, int premiseIndex, int logop,
|
||||
int object, int objIndex, int variable, int relop,
|
||||
int status, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpremise(_defaultProject, ruleIndex, premiseIndex, logop, object,
|
||||
objIndex, variable, relop, status, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremiseindex(int ruleIndex, int premiseIndex, int objIndex)
|
||||
{
|
||||
return EN_setpremiseindex(_defaultProject, ruleIndex, premiseIndex, objIndex);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremisestatus(int ruleIndex, int premiseIndex, int status)
|
||||
{
|
||||
return EN_setpremisestatus(_defaultProject, ruleIndex, premiseIndex, status);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetpremisevalue(int ruleIndex, int premiseIndex, EN_API_FLOAT_TYPE value)
|
||||
{
|
||||
return EN_setpremisevalue(_defaultProject, ruleIndex, premiseIndex, value);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetthenaction(int ruleIndex, int actionIndex, int *linkIndex,
|
||||
int *status, EN_API_FLOAT_TYPE *setting)
|
||||
{
|
||||
return EN_getthenaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetthenaction(int ruleIndex, int actionIndex, int linkIndex,
|
||||
int status, EN_API_FLOAT_TYPE setting)
|
||||
{
|
||||
return EN_setthenaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENgetelseaction(int ruleIndex, int actionIndex, int *linkIndex,
|
||||
int *status, EN_API_FLOAT_TYPE *setting)
|
||||
{
|
||||
return EN_getelseaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetelseaction(int ruleIndex, int actionIndex, int linkIndex,
|
||||
int status, EN_API_FLOAT_TYPE setting)
|
||||
{
|
||||
return EN_setelseaction(_defaultProject, ruleIndex, actionIndex, linkIndex,
|
||||
status, setting);
|
||||
}
|
||||
|
||||
int DLLEXPORT ENsetrulepriority(int index, EN_API_FLOAT_TYPE priority)
|
||||
{
|
||||
return EN_setrulepriority(_defaultProject, index, priority);
|
||||
}
|
||||
Reference in New Issue
Block a user