#pragma once

#include "receiver.h"

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Component ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

class Component : public Receiver
{
public:
	~Component();

	virtual void Execute();

	static Derivation *GetClassDerivations();
	static SharedData DefaultData;

	Logical TestInstance() const;

protected:
	Component(ClassID class_id = TrivialComponentClassID, SharedData &shared_data = DefaultData);
	Component(PlugStream *stream, SharedData &shared_data = DefaultData);
};