%newobject YACSEvalYFX::BuildFromFile;
%newobject YACSEvalYFX::BuildFromScheme;
-%typemap(out) std::list<YACSEvalInputPort *>
+%typemap(out) std::vector<YACSEvalInputPort *>
{
- std::list<YACSEvalInputPort *>::const_iterator it;
+ std::vector<YACSEvalInputPort *>::const_iterator it;
$result = PyList_New($1.size());
int i = 0;
for (it = $1.begin(); it != $1.end(); ++it, ++i)
}
}
-%typemap(out) std::list<YACSEvalOutputPort *>
+%typemap(out) std::vector<YACSEvalOutputPort *>
{
- std::list<YACSEvalOutputPort *>::const_iterator it;
+ std::vector<YACSEvalOutputPort *>::const_iterator it;
$result = PyList_New($1.size());
int i = 0;
for (it = $1.begin(); it != $1.end(); ++it, ++i)
std::string getName() const;
bool hasDefaultValueDefined() const;
YACSEvalAny *getDefaultValueDefined() const;
+ bool isRandomVar() const;
+ void declareRandomnessStatus(bool isRandom);
+ bool hasSequenceOfValuesToEval() const;
%extend
{
void setDefaultValue(PyObject *parameter)
self->setSequenceOfValuesToEval(valsCpp);
delete valsCpp;
}
-
- PyObject *hasSequenceOfValuesToEval() const
- {
- std::size_t ret1;
- bool ret0(self->hasSequenceOfValuesToEval(ret1));
- PyObject *ret(PyTuple_New(2));
- PyObject *ret0Py=ret0?Py_True:Py_False;
- Py_XINCREF(ret0Py);
- PyTuple_SetItem(ret,0,ret0Py);
- PyTuple_SetItem(ret,1,PyInt_FromLong(ret1));
- return ret;
- }
}
private:
YACSEvalInputPort();
std::string getCorbaConfigFileName() const;
};
+class YACSEvalExecParams
+{
+public:
+ bool getStopASAPAfterErrorStatus() const;
+ void setStopASAPAfterErrorStatus(bool newStatus);
+private:
+ YACSEvalExecParams();
+};
+
class YACSEvalYFX
{
public:
static YACSEvalYFX *BuildFromFile(const std::string& xmlOfScheme);
static YACSEvalYFX *BuildFromScheme(YACS::ENGINE::Proc *schema);
- std::list<YACSEvalInputPort *> getFreeInputPorts() const;
- std::list<YACSEvalOutputPort *> getFreeOutputPorts() const;
+ YACSEvalExecParams *getParams() const;
+ std::vector<YACSEvalInputPort *> getFreeInputPorts() const;
+ std::vector<YACSEvalOutputPort *> getFreeOutputPorts() const;
void unlockAll();
bool isLocked() const;
YACS::ENGINE::Proc *getUndergroundGeneratedGraph() const;
YACSEvalListOfResources *giveResources();
+ void setParallelizeStatus(bool newVal);
+ bool getParallelizeStatus() const;
+ //void registerObserver(YACSEvalObserver *observer);
%extend
{
- void lockPortsForEvaluation(PyObject *outputsOfInterest)
+ void lockPortsForEvaluation(PyObject *inputsOfInterest, PyObject *outputsOfInterest)
{
- std::list<YACSEvalOutputPort *> outputsOfInterestCpp;
+ std::vector<YACSEvalOutputPort *> outputsOfInterestCpp;
if(PyList_Check(outputsOfInterest))
{
int size(PyList_Size(outputsOfInterest));
PyErr_SetString(PyExc_TypeError,"not a list");
return ;
}
- self->lockPortsForEvaluation(outputsOfInterestCpp);
+ //
+ std::vector< YACSEvalInputPort * > inputsOfInterestCpp;
+ if(PyList_Check(inputsOfInterest))
+ {
+ int size(PyList_Size(inputsOfInterest));
+ for(int i=0;i<size;i++)
+ {
+ PyObject *obj(PyList_GetItem(inputsOfInterest,i));
+ void *argp(0);
+ int status(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_YACSEvalInputPort,0|0));
+ if(!SWIG_IsOK(status))
+ {
+ std::ostringstream oss; oss << "Input elt #" << i << " in list is not a YACSEvalInputPort instance !";
+ throw YACS::Exception(oss.str());
+ }
+ inputsOfInterestCpp.push_back(reinterpret_cast<YACSEvalInputPort *>(argp));
+ }
+ }
+ else
+ {
+ PyErr_SetString(PyExc_TypeError,"not a list");
+ return ;
+ }
+ self->lockPortsForEvaluation(inputsOfInterestCpp,outputsOfInterestCpp);
}
PyObject *getResults() const