Adding support for custom epanet_py build target

This commit is contained in:
Michael Tryby
2019-02-04 14:28:32 -05:00
parent a16cc7cae1
commit 6a0151b9c7
9 changed files with 412 additions and 312 deletions

114
include/epanet2.def Normal file
View File

@@ -0,0 +1,114 @@
LIBRARY EPANET2.DLL
EXPORTS
ENaddcontrol = _ENaddcontrol@24
ENaddcurve = _ENaddcurve@4
ENaddlink = _ENaddlink@16
ENaddnode = _ENaddnode@8
ENaddpattern = _ENaddpattern@4
ENaddrule = _ENaddrule@4
ENclose = _ENclose@0
ENcloseH = _ENcloseH@0
ENcloseQ = _ENcloseQ@0
ENdeletecontrol = _ENdeletecontrol@4
ENdeletelink = _ENdeletelink@8
ENdeletenode = _ENdeletenode@8
ENdeleterule = _ENdeleterule@4
ENepanet = _ENepanet@16
ENgetaveragepatternvalue = _ENgetaveragepatternvalue@8
ENgetbasedemand = _ENgetbasedemand@12
ENgetcontrol = _ENgetcontrol@24
ENgetcoord = _ENgetcoord@12
ENgetcount = _ENgetcount@8
ENgetcurve = _ENgetcurve@20
ENgetcurveid = _ENgetcurveid@8
ENgetcurveindex = _ENgetcurveindex@8
ENgetcurvelen = _ENgetcurvelen@8
ENgetcurvetype = _ENgetcurvetype@8
ENgetcurvevalue = _ENgetcurvevalue@16
ENgetdemandmodel = _ENgetdemandmodel@16
ENgetdemandname = _ENgetdemandname@12
ENgetdemandpattern = _ENgetdemandpattern@12
ENgetelseaction = _ENgetelseaction@20
ENgeterror = _ENgeterror@12
ENgetflowunits = _ENgetflowunits@4
ENgetheadcurveindex = _ENgetheadcurveindex@8
ENgetlinkid = _ENgetlinkid@8
ENgetlinkindex = _ENgetlinkindex@8
ENgetlinknodes = _ENgetlinknodes@12
ENsetlinknodes = _ENsetlinknodes@12
ENgetlinktype = _ENgetlinktype@8
ENgetlinkvalue = _ENgetlinkvalue@12
ENgetnodeid = _ENgetnodeid@8
ENgetnodeindex = _ENgetnodeindex@8
ENgetnodetype = _ENgetnodetype@8
ENgetnodevalue = _ENgetnodevalue@12
ENgetnumdemands = _ENgetnumdemands@8
ENgetoption = _ENgetoption@8
ENgetpatternid = _ENgetpatternid@8
ENgetpatternindex = _ENgetpatternindex@8
ENgetpatternlen = _ENgetpatternlen@8
ENgetpatternvalue = _ENgetpatternvalue@12
ENgetpremise = _ENgetpremise@36
ENgetpumptype = _ENgetpumptype@8
ENgetqualinfo = _ENgetqualinfo@16
ENgetqualtype = _ENgetqualtype@8
ENgetrule = _ENgetrule@20
ENgetruleID = _ENgetruleID@8
ENgetstatistic = _ENgetstatistic@8
ENgetthenaction = _ENgetthenaction@20
ENgettimeparam = _ENgettimeparam@8
ENgetversion = _ENgetversion@4
ENinit = _ENinit@16
ENinitH = _ENinitH@4
ENinitQ = _ENinitQ@4
ENnextH = _ENnextH@4
ENnextQ = _ENnextQ@4
ENopen = _ENopen@12
ENopenH = _ENopenH@0
ENopenQ = _ENopenQ@0
ENreport = _ENreport@0
ENresetreport = _ENresetreport@0
ENrunH = _ENrunH@4
ENrunQ = _ENrunQ@4
ENsaveH = _ENsaveH@0
ENsavehydfile = _ENsavehydfile@4
ENsaveinpfile = _ENsaveinpfile@4
ENsetbasedemand = _ENsetbasedemand@12
ENsetcontrol = _ENsetcontrol@24
ENsetcoord = _ENsetcoord@12
ENsetcurve = _ENsetcurve@16
ENsetcurvevalue = _ENsetcurvevalue@16
ENsetdemandmodel = _ENsetdemandmodel@16
ENsetdemandname = _ENsetdemandname@12
ENsetdemandpattern = _ENsetdemandpattern@12
ENsetelseaction = _ENsetelseaction@20
ENsetflowunits = _ENsetflowunits@4
ENsetheadcurveindex = _ENsetheadcurveindex@8
ENsetjuncdata = _ENsetjuncdata@16
ENsetlinkid = _ENsetlinkid@8
ENsetlinknodes = _ENsetlinknodes@12
ENsetlinktype = _ENsetlinktype@12
ENsetlinkvalue = _ENsetlinkvalue@12
ENsetnodeid = _ENsetnodeid@8
ENsetnodevalue = _ENsetnodevalue@12
ENsetoption = _ENsetoption@8
ENsetpattern = _ENsetpattern@12
ENsetpatternvalue = _ENsetpatternvalue@12
ENsetpipedata = _ENsetpipedata@20
ENsetpremise = _ENsetpremise@36
ENsetpremiseindex = _ENsetpremiseindex@12
ENsetpremisestatus = _ENsetpremisestatus@12
ENsetpremisevalue = _ENsetpremisevalue@12
ENsetqualtype = _ENsetqualtype@16
ENsetreport = _ENsetreport@4
ENsetrulepriority = _ENsetrulepriority@8
ENsetstatusreport = _ENsetstatusreport@4
ENsettankdata = _ENsettankdata@32
ENsetthenaction = _ENsetthenaction@20
ENsettimeparam = _ENsettimeparam@8
ENsolveH = _ENsolveH@0
ENsolveQ = _ENsolveQ@0
ENstepQ = _ENstepQ@4
ENusehydfile = _ENusehydfile@4
ENwriteline = _ENwriteline@4

View File

@@ -30,37 +30,23 @@ function in epanet2_2.h.
// The legacy style EPANET API can be compiled with support for either single
// precision or double precision floating point arguments, with the default
// being single precision. To compile for double precision one must #define
// EN_API_FLOAT_TYPE as double both here and in any client code that uses the
// EN_API_FLOAT_TYPE as double both here and in any client code that uses the
// API.
#ifndef EN_API_FLOAT_TYPE
#define EN_API_FLOAT_TYPE float
#endif
#ifdef WITH_GENX
#include "epanet2_export.h"
#else
// --- define WINDOWS
#undef WINDOWS
#ifndef DLLEXPORT
#ifdef _WIN32
#define WINDOWS
#endif
#ifdef __WIN32__
#define WINDOWS
#endif
// --- define DLLEXPORT
#ifndef DLLEXPORT
#ifdef WINDOWS
#ifdef __cplusplus
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllexport) __stdcall
#endif // __cplusplus
#elif defined(CYGWIN)
#define DLLEXPORT __stdcall
#ifdef epanet2_EXPORTS
#define DLLEXPORT __declspec(dllexport) __stdcall
#else
#define DLLEXPORT
#define DLLEXPORT __declspec(dllimport) __stdcall
#endif
#elif defined(CYGWIN)
#define DLLEXPORT __stdcall
#else
#define DLLEXPORT
#endif
#endif

View File

@@ -18,26 +18,16 @@
#ifndef EPANET2_2_H
#define EPANET2_2_H
#ifdef WITH_GENX
#include "epanet2_export.h"
#ifdef epanet_py_EXPORTS
#define DLLEXPORT
#else
// --- define WINDOWS
#undef WINDOWS
#ifdef _WIN32
#define WINDOWS
#endif
#ifdef __WIN32__
#define WINDOWS
#endif
// --- define DLLEXPORT
#ifndef DLLEXPORT
#ifdef WINDOWS
#ifdef __cplusplus
#define DLLEXPORT __declspec(dllexport)
#else
#ifdef _WIN32
#ifdef epanet2_EXPORTS
#define DLLEXPORT __declspec(dllexport) __stdcall
#endif // __cplusplus
#else
#define DLLEXPORT __declspec(dllimport) __stdcall
#endif
#elif defined(CYGWIN)
#define DLLEXPORT __stdcall
#else

View File

@@ -21,7 +21,7 @@ typedef void *Handle;
#include "epanet2_enums.h"
#include "epanet2_export.h"
#include "epanet_py_export.h"
#if defined(__cplusplus)
@@ -29,142 +29,142 @@ extern "C" {
#endif
int DLLEXPORT proj_create(Handle *ph_out);
int DLLEXPORT proj_delete(Handle *ph_inout);
int DLLEXPORT proj_run(Handle ph, const char *input_path, const char *report_path, const char *output_path);
int DLLEXPORT proj_init(Handle ph, const char *rptFile, const char *outFile, EN_FlowUnits unitsType, EN_HeadLossType headLossType);
int DLLEXPORT proj_open(Handle ph, const char *inpFile, const char *rptFile, const char *binOutFile);
int DLLEXPORT proj_savefile(Handle ph, const char *inpfilename);
int DLLEXPORT proj_close(Handle ph);
int EXPORT_PY_API proj_create(Handle *ph_out);
int EXPORT_PY_API proj_delete(Handle *ph_inout);
int EXPORT_PY_API proj_run(Handle ph, const char *input_path, const char *report_path, const char *output_path);
int EXPORT_PY_API proj_init(Handle ph, const char *rptFile, const char *outFile, EN_FlowUnits unitsType, EN_HeadLossType headLossType);
int EXPORT_PY_API proj_open(Handle ph, const char *inpFile, const char *rptFile, const char *binOutFile);
int EXPORT_PY_API proj_savefile(Handle ph, const char *inpfilename);
int EXPORT_PY_API proj_close(Handle ph);
int DLLEXPORT hydr_solve(Handle ph);
int DLLEXPORT hydr_save(Handle ph);
int DLLEXPORT hydr_open(Handle ph);
int DLLEXPORT hydr_init(Handle ph, EN_InitHydOption saveFlag);
int DLLEXPORT hydr_run(Handle ph, long *currentTime);
int DLLEXPORT hydr_next(Handle ph, long *tStep);
int DLLEXPORT hydr_close(Handle ph);
int DLLEXPORT hydr_savefile(Handle ph, char *filename);
int DLLEXPORT hydr_usefile(Handle ph, char *filename);
int EXPORT_PY_API hydr_solve(Handle ph);
int EXPORT_PY_API hydr_save(Handle ph);
int EXPORT_PY_API hydr_open(Handle ph);
int EXPORT_PY_API hydr_init(Handle ph, EN_InitHydOption saveFlag);
int EXPORT_PY_API hydr_run(Handle ph, long *currentTime);
int EXPORT_PY_API hydr_next(Handle ph, long *tStep);
int EXPORT_PY_API hydr_close(Handle ph);
int EXPORT_PY_API hydr_savefile(Handle ph, char *filename);
int EXPORT_PY_API hydr_usefile(Handle ph, char *filename);
int DLLEXPORT qual_solve(Handle ph);
int DLLEXPORT qual_open(Handle ph);
int DLLEXPORT qual_init(Handle ph, EN_InitHydOption saveFlag);
int DLLEXPORT qual_run(Handle ph, long *currentTime);
int DLLEXPORT qual_next(Handle ph, long *tStep);
int DLLEXPORT qual_step(Handle ph, long *timeLeft);
int DLLEXPORT qual_close(Handle ph);
int EXPORT_PY_API qual_solve(Handle ph);
int EXPORT_PY_API qual_open(Handle ph);
int EXPORT_PY_API qual_init(Handle ph, EN_InitHydOption saveFlag);
int EXPORT_PY_API qual_run(Handle ph, long *currentTime);
int EXPORT_PY_API qual_next(Handle ph, long *tStep);
int EXPORT_PY_API qual_step(Handle ph, long *timeLeft);
int EXPORT_PY_API qual_close(Handle ph);
int DLLEXPORT rprt_writeline(Handle ph, char *line);
int DLLEXPORT rprt_writeresults(Handle ph);
int DLLEXPORT rprt_reset(Handle ph);
int DLLEXPORT rprt_set(Handle ph, char *reportCommand);
int DLLEXPORT rprt_setlevel(Handle ph, EN_StatusReport code);
int DLLEXPORT rprt_getcount(Handle ph, EN_CountType code, int *count);
int DLLEXPORT rprt_anlysstats(Handle ph, EN_AnalysisStatistic code, double* value);
int EXPORT_PY_API rprt_writeline(Handle ph, char *line);
int EXPORT_PY_API rprt_writeresults(Handle ph);
int EXPORT_PY_API rprt_reset(Handle ph);
int EXPORT_PY_API rprt_set(Handle ph, char *reportCommand);
int EXPORT_PY_API rprt_setlevel(Handle ph, EN_StatusReport code);
int EXPORT_PY_API rprt_getcount(Handle ph, EN_CountType code, int *count);
int EXPORT_PY_API rprt_anlysstats(Handle ph, EN_AnalysisStatistic code, double* value);
int DLLEXPORT anlys_getoption(Handle ph, EN_Option code, double *value);
int DLLEXPORT anlys_setoption(Handle ph, EN_Option code, double value);
int DLLEXPORT anlys_getflowunits(Handle ph, int *code);
int DLLEXPORT anlys_setflowunits(Handle ph, EN_FlowUnits code);
int DLLEXPORT anlys_gettimeparam(Handle ph, EN_TimeParameter code, long *value);
int DLLEXPORT anlys_settimeparam(Handle ph, EN_TimeParameter code, long value);
int DLLEXPORT anlys_getqualinfo(Handle ph, int *qualcode, char *chemname, char *chemunits, int *tracenode);
int DLLEXPORT anlys_getqualtype(Handle ph, int *qualcode, int *tracenode);
int DLLEXPORT anlys_setqualtype(Handle ph, EN_QualityType qualcode, char *chemname, char *chemunits, char *tracenode);
int EXPORT_PY_API anlys_getoption(Handle ph, EN_Option code, double *value);
int EXPORT_PY_API anlys_setoption(Handle ph, EN_Option code, double value);
int EXPORT_PY_API anlys_getflowunits(Handle ph, int *code);
int EXPORT_PY_API anlys_setflowunits(Handle ph, EN_FlowUnits code);
int EXPORT_PY_API anlys_gettimeparam(Handle ph, EN_TimeParameter code, long *value);
int EXPORT_PY_API anlys_settimeparam(Handle ph, EN_TimeParameter code, long value);
int EXPORT_PY_API anlys_getqualinfo(Handle ph, int *qualcode, char *chemname, char *chemunits, int *tracenode);
int EXPORT_PY_API anlys_getqualtype(Handle ph, int *qualcode, int *tracenode);
int EXPORT_PY_API anlys_setqualtype(Handle ph, EN_QualityType qualcode, char *chemname, char *chemunits, char *tracenode);
int DLLEXPORT node_add(Handle ph, char *id, EN_NodeType nodeType);
int DLLEXPORT node_delete(Handle ph, int index, int actionCode);
int DLLEXPORT node_getindex(Handle ph, char *id, int *index);
int DLLEXPORT node_getid(Handle ph, int index, char *id);
int DLLEXPORT node_setid(Handle ph, int index, char *newid);
int DLLEXPORT node_gettype(Handle ph, int index, int *code);
int DLLEXPORT node_getvalue(Handle ph, int index, EN_NodeProperty code, double *value);
int DLLEXPORT node_setvalue(Handle ph, int index, EN_NodeProperty code, double value);
int DLLEXPORT node_getcoord(Handle ph, int index, double *x, double *y);
int DLLEXPORT node_setcoord(Handle ph, int index, double x, double y);
int EXPORT_PY_API node_add(Handle ph, char *id, EN_NodeType nodeType);
int EXPORT_PY_API node_delete(Handle ph, int index, int actionCode);
int EXPORT_PY_API node_getindex(Handle ph, char *id, int *index);
int EXPORT_PY_API node_getid(Handle ph, int index, char *id);
int EXPORT_PY_API node_setid(Handle ph, int index, char *newid);
int EXPORT_PY_API node_gettype(Handle ph, int index, int *code);
int EXPORT_PY_API node_getvalue(Handle ph, int index, EN_NodeProperty code, double *value);
int EXPORT_PY_API node_setvalue(Handle ph, int index, EN_NodeProperty code, double value);
int EXPORT_PY_API node_getcoord(Handle ph, int index, double *x, double *y);
int EXPORT_PY_API node_setcoord(Handle ph, int index, double x, double y);
int DLLEXPORT dmnd_getmodel(Handle ph, int *type, double *pmin, double *preq, double *pexp);
int DLLEXPORT dmnd_setmodel(Handle ph, int type, double pmin, double preq, double pexp);
int DLLEXPORT dmnd_getcount(Handle ph, int nodeIndex, int *numDemands);
int DLLEXPORT dmnd_getbase(Handle ph, int nodeIndex, int demandIndex, double *baseDemand);
int DLLEXPORT dmnd_setbase(Handle ph, int nodeIndex, int demandIndex, double baseDemand);
int DLLEXPORT dmnd_getpattern(Handle ph, int nodeIndex, int demandIndex, int *pattIndex);
int DLLEXPORT dmnd_setpattern(Handle ph, int nodeIndex, int demandIndex, int patIndex);
int DLLEXPORT dmnd_getname(Handle ph, int nodeIndex, int demandIdx, char *demandName);
int DLLEXPORT dmnd_setname(Handle ph, int nodeIndex, int demandIdx, char *demandName);
int EXPORT_PY_API dmnd_getmodel(Handle ph, int *type, double *pmin, double *preq, double *pexp);
int EXPORT_PY_API dmnd_setmodel(Handle ph, int type, double pmin, double preq, double pexp);
int EXPORT_PY_API dmnd_getcount(Handle ph, int nodeIndex, int *numDemands);
int EXPORT_PY_API dmnd_getbase(Handle ph, int nodeIndex, int demandIndex, double *baseDemand);
int EXPORT_PY_API dmnd_setbase(Handle ph, int nodeIndex, int demandIndex, double baseDemand);
int EXPORT_PY_API dmnd_getpattern(Handle ph, int nodeIndex, int demandIndex, int *pattIndex);
int EXPORT_PY_API dmnd_setpattern(Handle ph, int nodeIndex, int demandIndex, int patIndex);
int EXPORT_PY_API dmnd_getname(Handle ph, int nodeIndex, int demandIdx, char *demandName);
int EXPORT_PY_API dmnd_setname(Handle ph, int nodeIndex, int demandIdx, char *demandName);
int DLLEXPORT link_add(Handle ph, char *id, EN_LinkType linkType, char *fromNode, char *toNode);
int DLLEXPORT link_delete(Handle ph, int index, int actionCode);
int DLLEXPORT link_getindex(Handle ph, char *id, int *index);
int DLLEXPORT link_getid(Handle ph, int index, char *id);
int DLLEXPORT link_setid(Handle ph, int index, char *newid);
int DLLEXPORT link_gettype(Handle ph, int index, int *code);
int DLLEXPORT link_settype(Handle ph, int *index, EN_LinkType type, int actionCode);
int DLLEXPORT link_getnodes(Handle ph, int index, int *node1, int *node2);
int DLLEXPORT link_setnodes(Handle ph, int index, int node1, int node2);
int DLLEXPORT link_getvalue(Handle ph, int index, EN_LinkProperty code, double *value);
int DLLEXPORT link_setvalue(Handle ph, int index, int code, double v);
int EXPORT_PY_API link_add(Handle ph, char *id, EN_LinkType linkType, char *fromNode, char *toNode);
int EXPORT_PY_API link_delete(Handle ph, int index, int actionCode);
int EXPORT_PY_API link_getindex(Handle ph, char *id, int *index);
int EXPORT_PY_API link_getid(Handle ph, int index, char *id);
int EXPORT_PY_API link_setid(Handle ph, int index, char *newid);
int EXPORT_PY_API link_gettype(Handle ph, int index, int *code);
int EXPORT_PY_API link_settype(Handle ph, int *index, EN_LinkType type, int actionCode);
int EXPORT_PY_API link_getnodes(Handle ph, int index, int *node1, int *node2);
int EXPORT_PY_API link_setnodes(Handle ph, int index, int node1, int node2);
int EXPORT_PY_API link_getvalue(Handle ph, int index, EN_LinkProperty code, double *value);
int EXPORT_PY_API link_setvalue(Handle ph, int index, int code, double v);
int DLLEXPORT pump_gettype(Handle ph, int linkIndex, int *outType);
int DLLEXPORT pump_getheadcurveindex(Handle ph, int pumpIndex, int *curveIndex);
int DLLEXPORT pump_setheadcurveindex(Handle ph, int pumpIndex, int curveIndex);
int EXPORT_PY_API pump_gettype(Handle ph, int linkIndex, int *outType);
int EXPORT_PY_API pump_getheadcurveindex(Handle ph, int pumpIndex, int *curveIndex);
int EXPORT_PY_API pump_setheadcurveindex(Handle ph, int pumpIndex, int curveIndex);
int DLLEXPORT ptrn_add(Handle ph, char *id);
int DLLEXPORT ptrn_getindex(Handle ph, char *id, int *index);
int DLLEXPORT ptrn_getid(Handle ph, int index, char *id);
int DLLEXPORT ptrn_getlength(Handle ph, int index, int *len);
int DLLEXPORT ptrn_getvalue(Handle ph, int index, int period, double *value);
int DLLEXPORT ptrn_setvalue(Handle ph, int index, int period, double value);
int DLLEXPORT ptrn_getavgvalue(Handle ph, int index, double *value);
int DLLEXPORT ptrn_set(Handle ph, int index, double *f, int len);
int EXPORT_PY_API ptrn_add(Handle ph, char *id);
int EXPORT_PY_API ptrn_getindex(Handle ph, char *id, int *index);
int EXPORT_PY_API ptrn_getid(Handle ph, int index, char *id);
int EXPORT_PY_API ptrn_getlength(Handle ph, int index, int *len);
int EXPORT_PY_API ptrn_getvalue(Handle ph, int index, int period, double *value);
int EXPORT_PY_API ptrn_setvalue(Handle ph, int index, int period, double value);
int EXPORT_PY_API ptrn_getavgvalue(Handle ph, int index, double *value);
int EXPORT_PY_API ptrn_set(Handle ph, int index, double *f, int len);
int DLLEXPORT curv_add(Handle ph, char *id);
int DLLEXPORT curv_getindex(Handle ph, char *id, int *index);
int DLLEXPORT curv_getid(Handle ph, int index, char *id);
int DLLEXPORT curv_getlength(Handle ph, int index, int *len);
int DLLEXPORT curv_gettype(Handle ph, int curveIndex, int *outType);
int DLLEXPORT curv_getvalue(Handle ph, int curveIndex, int pointIndex, double *x, double *y);
int DLLEXPORT curv_setvalue(Handle ph, int curveIndex, int pointIndex, double x, double y);
int DLLEXPORT curv_get(Handle ph, int curveIndex, char* id, int *nValues, double **xValues, double **yValues);
int DLLEXPORT curv_set(Handle ph, int index, double *x, double *y, int len);
int EXPORT_PY_API curv_add(Handle ph, char *id);
int EXPORT_PY_API curv_getindex(Handle ph, char *id, int *index);
int EXPORT_PY_API curv_getid(Handle ph, int index, char *id);
int EXPORT_PY_API curv_getlength(Handle ph, int index, int *len);
int EXPORT_PY_API curv_gettype(Handle ph, int curveIndex, int *outType);
int EXPORT_PY_API curv_getvalue(Handle ph, int curveIndex, int pointIndex, double *x, double *y);
int EXPORT_PY_API curv_setvalue(Handle ph, int curveIndex, int pointIndex, double x, double y);
int EXPORT_PY_API curv_get(Handle ph, int curveIndex, char* id, int *nValues, double **xValues, double **yValues);
int EXPORT_PY_API curv_set(Handle ph, int index, double *x, double *y, int len);
int DLLEXPORT scntl_add(Handle ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *index);
int DLLEXPORT scntl_delete(Handle ph, int index);
int DLLEXPORT scntl_get(Handle ph, int controlIndex, int *controlType, int *linkIndex, double *setting, int *nodeIndex, double *level);
int DLLEXPORT scntl_set(Handle ph, int cindex, int ctype, int lindex, double setting, int nindex, double level);
int EXPORT_PY_API scntl_add(Handle ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *index);
int EXPORT_PY_API scntl_delete(Handle ph, int index);
int EXPORT_PY_API scntl_get(Handle ph, int controlIndex, int *controlType, int *linkIndex, double *setting, int *nodeIndex, double *level);
int EXPORT_PY_API scntl_set(Handle ph, int cindex, int ctype, int lindex, double setting, int nindex, double level);
int DLLEXPORT rcntl_add(Handle ph, char *rule);
int DLLEXPORT rcntl_delete(Handle ph, int index);
int DLLEXPORT rcntl_get(Handle ph, int index, int *nPremises, int *nThenActions, int *nElseActions, double *priority);
int DLLEXPORT rcntl_getid(Handle ph, int index, char* id);
int DLLEXPORT rcntl_getpremise(Handle ph, int ruleIndex, int premiseIndex, int *logop, int *object, int *objIndex, int *variable, int *relop, int *status, double *value);
int DLLEXPORT rcntl_setpremise(Handle ph, int ruleIndex, int premiseIndex, int logop, int object, int objIndex, int variable, int relop, int status, double value);
int DLLEXPORT rcntl_setpremiseindex(Handle ph, int ruleIndex, int premiseIndex, int objIndex);
int DLLEXPORT rcntl_setpremisestatus(Handle ph, int ruleIndex, int premiseIndex, int status);
int DLLEXPORT rcntl_setpremisevalue(Handle ph, int ruleIndex, int premiseIndex, double value);
int DLLEXPORT rcntl_getthenaction(Handle ph, int ruleIndex, int actionIndex, int *linkIndex, int *status, double *setting);
int DLLEXPORT rcntl_setthenaction(Handle ph, int ruleIndex, int actionIndex, int linkIndex, int status, double setting);
int DLLEXPORT rcntl_getelseaction(Handle ph, int ruleIndex, int actionIndex, int *linkIndex, int *status, double *setting);
int DLLEXPORT rcntl_setelseaction(Handle ph, int ruleIndex, int actionIndex, int linkIndex, int status, double setting);
int DLLEXPORT rcntl_setrulepriority(Handle ph, int index, double priority);
int EXPORT_PY_API rcntl_add(Handle ph, char *rule);
int EXPORT_PY_API rcntl_delete(Handle ph, int index);
int EXPORT_PY_API rcntl_get(Handle ph, int index, int *nPremises, int *nThenActions, int *nElseActions, double *priority);
int EXPORT_PY_API rcntl_getid(Handle ph, int index, char* id);
int EXPORT_PY_API rcntl_getpremise(Handle ph, int ruleIndex, int premiseIndex, int *logop, int *object, int *objIndex, int *variable, int *relop, int *status, double *value);
int EXPORT_PY_API rcntl_setpremise(Handle ph, int ruleIndex, int premiseIndex, int logop, int object, int objIndex, int variable, int relop, int status, double value);
int EXPORT_PY_API rcntl_setpremiseindex(Handle ph, int ruleIndex, int premiseIndex, int objIndex);
int EXPORT_PY_API rcntl_setpremisestatus(Handle ph, int ruleIndex, int premiseIndex, int status);
int EXPORT_PY_API rcntl_setpremisevalue(Handle ph, int ruleIndex, int premiseIndex, double value);
int EXPORT_PY_API rcntl_getthenaction(Handle ph, int ruleIndex, int actionIndex, int *linkIndex, int *status, double *setting);
int EXPORT_PY_API rcntl_setthenaction(Handle ph, int ruleIndex, int actionIndex, int linkIndex, int status, double setting);
int EXPORT_PY_API rcntl_getelseaction(Handle ph, int ruleIndex, int actionIndex, int *linkIndex, int *status, double *setting);
int EXPORT_PY_API rcntl_setelseaction(Handle ph, int ruleIndex, int actionIndex, int linkIndex, int status, double setting);
int EXPORT_PY_API rcntl_setrulepriority(Handle ph, int index, double priority);
void DLLEXPORT err_clear(Handle ph);
int DLLEXPORT err_check(Handle ph, char** msg_buffer);
void DLLEXPORT toolkit_free(void **memory);
int DLLEXPORT toolkit_getversion(int *version);
void EXPORT_PY_API err_clear(Handle ph);
int EXPORT_PY_API err_check(Handle ph, char** msg_buffer);
void EXPORT_PY_API toolkit_free(void **memory);
int EXPORT_PY_API toolkit_getversion(int *version);
#if defined(__cplusplus)