Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'Port (./kdelibs/arts/flow/synthschedule.h:53)

class Port {
protected:
	std::string _name;
	void *_ptr;
	AttributeType _flags;
	StdScheduleNode *parent;

	bool _dynamicPort;

	// functionality to remove all connections automatically as soon as
	// the module gets destroyed
	std::list<Port *> autoDisconnect;

	/**
	 * call these from your (dis)connect implementation as soon as a the
	 * port gets (dis)connected to some other port (only one call per
	 * connection: destinationport->addAutoDisconnect(sourceport), not
	 * for the other direction)
	 */
	void addAutoDisconnect(Port *source);
	void removeAutoDisconnect(Port *source);

public:
	Port(std::string name, void *ptr, long flags, StdScheduleNode* parent);
	virtual ~Port();

	AttributeType flags();
	std::string name();
	void setPtr(void *ptr);

	inline bool dynamicPort()    { return _dynamicPort; }
	inline void setDynamicPort() { _dynamicPort = true; }

	virtual class AudioPort *audioPort();
	virtual class ASyncPort *asyncPort();

	virtual void disconnectAll();
	virtual void connect(Port *) = 0;
	virtual void disconnect(Port *) = 0;
};


kdelibs'Port::Port() (./kdelibs/arts/flow/synthschedule.cc:72)

Port::Port(string name, void *ptr, long flags, StdScheduleNode* parent)
	: _name(name), _ptr(ptr), _flags((AttributeType)flags),
	  parent(parent), _dynamicPort(false)
{
	//
}


kdelibs'Port::~Port() (./kdelibs/arts/flow/synthschedule.cc:79)

Port::~Port()
{
	//
}


kdelibs'Port::flags() (./kdelibs/arts/flow/synthschedule.cc:84)

AttributeType Port::flags()
{
	return _flags;
}


kdelibs'Port::name() (./kdelibs/arts/flow/synthschedule.cc:89)

string Port::name()
{
	return _name;
}


kdelibs'Port::asyncPort() (./kdelibs/arts/flow/synthschedule.cc:94)

ASyncPort *Port::asyncPort()
{
	return 0;
}


kdelibs'Port::audioPort() (./kdelibs/arts/flow/synthschedule.cc:99)

AudioPort *Port::audioPort()
{
	return 0;
}


kdelibs'Port::addAutoDisconnect() (./kdelibs/arts/flow/synthschedule.cc:104)

void Port::addAutoDisconnect(Port *source)
{
	autoDisconnect.push_back(source);
	source->autoDisconnect.push_back(this);
}


kdelibs'Port::removeAutoDisconnect() (./kdelibs/arts/flow/synthschedule.cc:110)

void Port::removeAutoDisconnect(Port *source)
{
	list<Port *>::iterator adi;

	// remove our autodisconnection entry for source port
	adi = find(autoDisconnect.begin(),autoDisconnect.end(),source);
	assert(adi != autoDisconnect.end());
	autoDisconnect.erase(adi);

	// remove the source port autodisconnection entry to us
	adi=find(source->autoDisconnect.begin(),source->autoDisconnect.end(),this);
	assert(adi != source->autoDisconnect.end());
	source->autoDisconnect.erase(adi);
}


kdelibs'Port::disconnectAll() (./kdelibs/arts/flow/synthschedule.cc:125)

void Port::disconnectAll()
{
	while(!autoDisconnect.empty())
	{
		Port *other = *autoDisconnect.begin();

		// syntax is disconnect(source)
		if(_flags & streamIn)
			disconnect(other);		 // if we're incoming, other port is source
		else
			other->disconnect(this); // if we're outgoing, we're the source
	}
}


kdelibs'Port::setPtr() (./kdelibs/arts/flow/synthschedule.cc:139)

void Port::setPtr(void *ptr)
{
	_ptr = ptr;
}

// ------- AudioPort ---------