#ifndef SMO_COMPONENT_THREAD_H
#define SMO_COMPONENT_THREAD_H

#include <config.h>
#include <string>
// Include the spinscale componentThread.h which provides ComponentThread, PuppetThread, etc.
#include <spinscale/componentThread.h>

namespace smo {

/* Application-specific thread ID enum
 * Using regular enum (not enum class) to allow implicit conversion to ThreadId
 */
enum SmoThreadId : sscl::ThreadId
{
	MRNTT = 0,
	DIRECTOR,
	SIMULATOR,
	SUBCONSCIOUS,
	BODY,
	WORLD
#ifdef CONFIG_WORLD_USE_BODY_THREAD
		= BODY
#endif
	,
	N_ITEMS
};

std::string getThreadName(sscl::ThreadId id);

} // namespace smo

#endif // SMO_COMPONENT_THREAD_H
