#include <stdio.h>
#include <object.h>
Object::Object()
{
}
Object::~Object()
{
foreach (Object *sender, senderList) {
// XXX need to deregister connections to this here
disconnect(sender, this);
}
}
void Object::disconnect(Object *sender, Object *receiver)
{
foreach (Slot &slot, sender->signalMap) {
if ( slot.o == receiver ) {
// XXX need to do something here
}
}
}
void Object::connect(Object *sender, const char *signal, Object *receiver, Function func)
{
receiver->senderList += sender;
receiver->slotList += func;
Slot slot = { receiver, receiver->slotList.count() - 1 };
sender->signalMap.append(signal, slot);
}
void Object::raise(const char *signal)
{
List<Slot> slots = signalMap[signal];
//printf("raising signal C count = %i\n", sl.count());
foreach (Slot &slot, slots) {
//printf("raising signal E id = %i\n", slot.id);
(slot.o->*(slot.o->slotList[slot.id]))();
}
}