#ifndef PLS_LIBRARY_H
#define PLS_LIBRARY_H

#include "pls/algorithms/invoke.h"
#include "pls/algorithms/for_each.h"
#include "pls/algorithms/scan.h"
#include "pls/internal/scheduling/task.h"
#include "pls/internal/scheduling/scheduler.h"
#include "pls/internal/helpers/unique_id.h"
#include "pls/internal/helpers/member_function.h"

namespace pls {

using internal::scheduling::static_scheduler_memory;
using internal::scheduling::scheduler;

using unique_id = internal::helpers::unique_id;
template<class C, typename R, typename ...ARGS>
using member_function = internal::helpers::member_function<C, R, ARGS...>;

using internal::scheduling::task;
using internal::scheduling::lambda_task_by_reference;
using internal::scheduling::lambda_task_by_value;
using internal::scheduling::task;

using algorithm::invoke;
using algorithm::for_each;
using algorithm::for_each_range;
using algorithm::scan;
}

#endif
