diff options
Diffstat (limited to 'includes')
| -rw-r--r-- | includes/Task.h | 12 | ||||
| -rw-r--r-- | includes/TaskMan.h | 6 | 
2 files changed, 17 insertions, 1 deletions
diff --git a/includes/Task.h b/includes/Task.h index 042624d..b124731 100644 --- a/includes/Task.h +++ b/includes/Task.h @@ -1,7 +1,9 @@  #pragma once  #include <stdlib.h> +#ifndef _WIN32  #include <coro.h> +#endif  #include <ev++.h>  #include <vector>  #include <Exceptions.h> @@ -81,6 +83,10 @@ class Async : public BaseEvent {      ev::async m_evt;  }; +#ifndef _WIN32 +#define CALLBACK +#endif +  class Custom : public BaseEvent {    public:      void doSignal() { BaseEvent::doSignal(); ev_break(m_loop, EVBREAK_ALL); } @@ -137,9 +143,13 @@ class Task {    private:      size_t stackSize() { return 128 * 1024; }      void switchTo(); -    static void coroutine(void *); +    static void CALLBACK coroutine(void *);      void * m_stack; +#ifndef _WIN32      coro_context m_ctx; +#else +    void * m_fiber; +#endif      TaskMan * m_taskMan;      Status m_status;      void * m_tls; diff --git a/includes/TaskMan.h b/includes/TaskMan.h index 8144e93..ad19f65 100644 --- a/includes/TaskMan.h +++ b/includes/TaskMan.h @@ -1,7 +1,9 @@  #pragma once  #include <stdint.h> +#ifndef _WIN32  #include <coro.h> +#endif  #include <ev++.h>  #include <ext/hash_set>  #include <vector> @@ -26,7 +28,11 @@ class TaskMan {    private:      void registerTask(Task * t);      void unregisterTask(Task * t); +#ifndef _WIN32      coro_context m_returnContext; +#else +    void * m_fiber; +#endif      friend class Task;      struct taskHasher { size_t operator()(const Task * t) const { return reinterpret_cast<uintptr_t>(t); } };      typedef gnu::hash_set<Task *, taskHasher> taskHash_t;  | 
