#ifndef LLVM_EXECUTIONENGINE_ORC_TASKDISPATCH_H
#define LLVM_EXECUTIONENGINE_ORC_TASKDISPATCH_H
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ExtensibleRTTI.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <string>
#if LLVM_ENABLE_THREADS
#include <condition_variable>
#include <deque>
#include <mutex>
#include <thread>
#endif
namespace llvm {
namespace orc {
class Task : public RTTIExtends<Task, RTTIRoot> { … };
class GenericNamedTask : public RTTIExtends<GenericNamedTask, Task> { … };
template <typename FnT> class GenericNamedTaskImpl : public GenericNamedTask { … };
template <typename FnT>
std::unique_ptr<GenericNamedTask> makeGenericNamedTask(FnT &&Fn,
std::string Desc) { … }
template <typename FnT>
std::unique_ptr<GenericNamedTask>
makeGenericNamedTask(FnT &&Fn, const char *Desc = nullptr) { … }
class TaskDispatcher { … };
class InPlaceTaskDispatcher : public TaskDispatcher { … };
#if LLVM_ENABLE_THREADS
class DynamicThreadPoolTaskDispatcher : public TaskDispatcher { … };
#endif
}
}
#endif