
#ifndef PLS_TASK_MANAGER_H_
#define PLS_TASK_MANAGER_H_
/**
 * Decision point for different task managing variants:
 * - custom, lock-free variant (implemented)
 * - basic, locking variant (planned)
 * - transactional variant (planned)
 */
#include "lock_free/task_manager.h"

namespace pls::internal::scheduling {

#define PLS_DEQUE_LOCK_FREE       0
#define PLS_DEQUE_LOCKING         1
#define PLS_DEQUE_TRANSACTIONAL   2
#define PLS_DEQUE_VARIANT PLS_DEQUE_LOCK_FREE

#if PLS_DEQUE_VARIANT == PLS_DEQUE_LOCK_FREE
using pls::internal::scheduling::lock_free::task_manager;
#endif
#if PLS_DEQUE_VARIANT == PLS_DEQUE_LOCKING
#error "Not Implemented!"
#endif
#if PLS_DEQUE_VARIANT == PLS_DEQUE_TRANSACTIONAL
#error "Not Implemented!"
#endif

}

#endif //PLS_TASK_MANAGER_H_
