#include <cstring>
#include "xsched/utils/xassert.h"
#include "xsched/sched/protocol/hint.h"
using namespace xsched::sched;
std::shared_ptr<const Hint> Hint::CopyConstructor(const void *data)
{
auto meta = (const HintMeta *)data;
switch (meta->type)
{
case kHintTypePriority:
return std::make_shared<PriorityHint>(data);
case kHintTypeUtilization:
return std::make_shared<UtilizationHint>(data);
case kHintTypeTimeslice:
return std::make_shared<TimesliceHint>(data);
case kHintTypeDeadline:
return std::make_shared<DeadlineHint>(data);
case kHintTypeKDeadline:
return std::make_shared<KDeadlineHint>(data);
case kHintTypeLaxity:
return std::make_shared<LaxityHint>(data);
case kHintTypeWindowActive:
return std::make_shared<WindowActiveHint>(data);
case kHintTypeWeight:
return std::make_shared<WeightHint>(data);
default:
XASSERT(false, "unknown hint type: %d", meta->type);
return nullptr;
}
}