Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'MultiPort (./kdelibs/arts/flow/synthschedule.h:168)
class MultiPort : public Port {
protected:
std::list<AudioPort *> parts;
typedef float *float_ptr;
float **conns;
long nextID;
void initConns();
public:
MultiPort(std::string name, void *ptr, long flags,StdScheduleNode *parent);
~MultiPort();
void connect(Port *port);
void disconnect(Port *port);
};
kdelibs'MultiPort::MultiPort() (./kdelibs/arts/flow/synthschedule.cc:203)
MultiPort::MultiPort(string name, void *ptr, long flags,StdScheduleNode *parent)
: Port(name,ptr,flags,parent)
{
conns = 0;
nextID = 0;
initConns();
}
kdelibs'MultiPort::~MultiPort() (./kdelibs/arts/flow/synthschedule.cc:211)
MultiPort::~MultiPort()
{
if(conns)
{
delete[] conns;
conns = 0;
}
}
kdelibs'MultiPort::initConns() (./kdelibs/arts/flow/synthschedule.cc:220)
void MultiPort::initConns()
{
if(conns != 0) delete[] conns;
conns = new float_ptr[parts.size() + 1];
conns[parts.size()] = (float *)0;
*(float ***)_ptr = conns;
long n = 0;
list<AudioPort *>::iterator i;
for(i = parts.begin();i != parts.end(); i++)
{
AudioPort *p = *i;
p->setPtr((void *)&conns[n++]);
}
}
kdelibs'MultiPort::connect() (./kdelibs/arts/flow/synthschedule.cc:237)
void MultiPort::connect(Port *port)
{
AudioPort *dport;
char sid[20];
sprintf(sid,"%ld",nextID++);
addAutoDisconnect(port);
dport = new AudioPort("_"+_name+string(sid),0,streamIn,parent);
parts.push_back(dport);
initConns();
parent->addDynamicPort(dport);
dport->connect(port);
}
kdelibs'MultiPort::disconnect() (./kdelibs/arts/flow/synthschedule.cc:253)
void MultiPort::disconnect(Port *sport)
{
AudioPort *port = (AudioPort *)sport;
removeAutoDisconnect(sport);
list<AudioPort *>::iterator i;
for(i = parts.begin(); i != parts.end(); i++)
{
AudioPort *dport = *i;
if(dport->buffer == port->buffer)
{
parts.erase(i);
initConns();
dport->disconnect(port);
parent->removeDynamicPort(dport);
delete dport;
return;
}
}
}
// -------- StdScheduleNode ---------