/* create an IOProcessor that proxies to a new IO object */
IOProcessor::IOProcessor (Session& s, bool with_input, bool with_output,
- const string& proc_name, const string io_name, DataType dtype)
+ const string& proc_name, const string io_name, DataType dtype, bool sendish)
: Processor(s, proc_name)
{
/* these are true in this constructor whether we actually create the associated
_own_output = true;
if (with_input) {
- _input.reset (new IO(s, io_name.empty() ? proc_name : io_name, IO::Input, dtype));
+ _input.reset (new IO(s, io_name.empty() ? proc_name : io_name, IO::Input, dtype, sendish));
}
if (with_output) {
- _output.reset (new IO(s, io_name.empty() ? proc_name : io_name, IO::Output, dtype));
+ _output.reset (new IO(s, io_name.empty() ? proc_name : io_name, IO::Output, dtype, sendish));
}
}
return set_state_2X (node, version);
}
- const XMLProperty *prop;
+ XMLProperty const * prop;
const XMLNode *io_node = 0;
Processor::set_state(node, version);
XMLNodeIterator niter;
const string instr = enum_2_string (IO::Input);
const string outstr = enum_2_string (IO::Output);
-
- if (_own_input) {
+
+ if (_own_input && _input) {
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
- const XMLProperty* prop;
+ XMLProperty const * prop;
if ((prop = (*niter)->property ("name")) != 0) {
if (_name == prop->value()) {
if ((prop = (*niter)->property ("direction")) != 0) {
}
}
}
-
+
if (io_node) {
_input->set_state(*io_node, version);
-
+
// legacy sessions: use IO name
if ((prop = node.property ("name")) == 0) {
set_name (_input->name());
}
-
+
} else {
/* no input, which is OK */
}
-
+
}
-
- if (_own_output) {
+
+ if (_own_output && _output) {
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == "IO") {
- const XMLProperty* prop;
+ XMLProperty const * prop;
if ((prop = (*niter)->property ("name")) != 0) {
if (_name == prop->value()) {
if ((prop = (*niter)->property ("direction")) != 0) {
}
}
}
-
+
if (io_node) {
_output->set_state(*io_node, version);
-
+
// legacy sessions: use IO name
if ((prop = node.property ("name")) == 0) {
set_name (_output->name());