//
// C++ Interface: abstractslot
//
// Description:
//
//
// Author: Messenger of death aka Denis A. Birukov <messengerofdeath@gmail.com>, (C) 2008
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef ABSTRACTSLOT_H
#define ABSTRACTSLOT_H
#include "storage.h"

#include <string>
#include <vector>
#include <stdint.h>
#include <iostream>

struct SlotArgs
{
    std::vector<int64_t> int_args;
    std::vector<float> float_args;
    std::vector<std::string> string_args;
};
typedef std::string SlotName;

class SlotAssert
{
	public:
		std::string _source;
		std::string _reason;

		SlotAssert( std::string source, std::string reason ) : _source( source ), _reason( reason ){};
};

/**
	@author Messenger of death aka Denis A. Birukov <messengerofdeath@gmail.com>
*/
class AbstractSlot
{
	public:
		virtual bool _invoke( SlotArgs *params ) throw( SlotAssert )
		{
			std::cerr<<"Impossible happened!"<<std::endl;
			return true;
		}
		AbstractSlot(){};
		virtual ~AbstractSlot(){};

};

#endif
