#ifndef ERIS_TYPE_BOUND_REDISPATCH_H
#define ERIS_TYPE_BOUND_REDISPATCH_H

#include <Eris/Redispatch.h>
#include <set>

namespace Eris
{

class TypeInfo;
typedef std::set<TypeInfo*> TypeInfoSet;

class TypeBoundRedispatch : public Redispatch
{
public:
    TypeBoundRedispatch(Connection* con, const Atlas::Objects::Root& obj, TypeInfo* unbound);    
    TypeBoundRedispatch(Connection* con, const Atlas::Objects::Root& obj, const TypeInfoSet& unbound);    
    void onBound(TypeInfo* bound);    
    void onBadType(TypeInfo* bad);    
private:
    Connection* m_con;
    TypeInfoSet m_unbound;
};

}

#endif
