85 lines
1.8 KiB
C++
Executable File
85 lines
1.8 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* Project Defines
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <ostream>
|
|
|
|
namespace IDL
|
|
{
|
|
enum class PartitionType
|
|
{
|
|
Any, // '*'
|
|
Global, // 'ex_0'
|
|
Exercise, // 'ex_N'
|
|
AllExercises, // 'ex_*'
|
|
Replay, // 'srp_N'
|
|
};
|
|
|
|
inline std::string toStdString(PartitionType pt)
|
|
{
|
|
switch (pt)
|
|
{
|
|
case PartitionType::Any:
|
|
return "Any";
|
|
case PartitionType::Global:
|
|
return "Global";
|
|
case PartitionType::Exercise:
|
|
return "Exercise";
|
|
case PartitionType::AllExercises:
|
|
return "AllExercises";
|
|
case PartitionType::Replay:
|
|
return "Replay";
|
|
}
|
|
return std::string("invalid:") + std::to_string(static_cast<int>(pt));
|
|
}
|
|
|
|
inline std::ostream& operator <<(std::ostream &o, PartitionType pt)
|
|
{
|
|
|
|
switch (pt)
|
|
{
|
|
case PartitionType::Any:
|
|
case PartitionType::Global:
|
|
case PartitionType::Exercise:
|
|
case PartitionType::AllExercises:
|
|
case PartitionType::Replay:
|
|
return o << std::string("PartitionType::") + toStdString(pt);
|
|
default:
|
|
return o << std::to_string(static_cast<int>(pt));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* return a string for an exercise partition
|
|
* --> exercisePartitionPrefix() + std::to_string(exerciseId)
|
|
* when exercise id is < 0, exercisePartitionPrefix() + '*' is returned
|
|
*/
|
|
inline std::string exercisePartition(int exerciseId)
|
|
{
|
|
if (exerciseId < 0)
|
|
return { "ex_*" };
|
|
return std::string("ex_") + std::to_string(exerciseId);
|
|
}
|
|
|
|
/**
|
|
* return a string for an replay partition
|
|
* --> replayPartitionPrefix() + std::to_string(partitionId)
|
|
* when partitionId id is < 0, replayPartitionPrefix() + '*' is returned
|
|
*/
|
|
inline std::string replayPartition(int partitionId)
|
|
{
|
|
if (partitionId < 0)
|
|
return { "srp_*" };
|
|
return std::string("srp_") + std::to_string(partitionId);
|
|
}
|
|
|
|
} // Namespace IDL
|
|
|