#include "OscMethod.h"

OscMessage::OscMessage()
{
    
}
OscMessage::OscMessage(const OscMessage& o)
 : _message(o.message()), _sender(o.senderAddress())
{

}

OscMessage::~OscMessage() {
    if(_message != 0) {
        delete[] _message->AddressPattern();
        delete _message;
    }
    delete _sender;
}

/* ******** */

OscMethod::OscMethod(QObject* parent) : AbstractOscMethod(parent)
{

}

OscMethod::~OscMethod() {
    if(types != 0)
        delete types;
}

void
OscMethod::accept(const QString& typetags) 
{
    if(types == 0)
        types = new QStringList();
    types->append(typetags);
}

void OscMethod::handleMessage(const OscMessage* m)
{
    if(types == 0) {
        emit messageReceived(m);
        return;
    } else {
        //check if we handle this set of arguments
        if(types->contains(QString(m->message()->TypeTags()))) {
            emit messageReceived(m);
            return;
        }
        qDebug("Type tag was not matched");
    }
    delete m;
}


//EOF OscMethod.cpp