1 #pragma once
2 
3 #include <MTTools.h>
4 #include <MTPlatform.h>
5 #include <MTConcurrentQueueLIFO.h>
6 #include <MTStackArray.h>
7 #include <MTFixedArray.h>
8 
9 
10 namespace MT
11 {
12 	class FiberContext;
13 	typedef void (*TTaskEntryPoint)(FiberContext & context, void* userData);
14 
15 	namespace internal
16 	{
17 		////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
18 		// Task description
19 		////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
20 		struct TaskDesc
21 		{
22 			//Task entry point
23 			TTaskEntryPoint taskFunc;
24 
25 			//Task user data (task context)
26 			void* userData;
27 
28 			TaskDesc()
29 				: taskFunc(nullptr)
30 				, userData(nullptr)
31 			{
32 			}
33 
34 			TaskDesc(TTaskEntryPoint _taskFunc, void* _userData)
35 				: taskFunc(_taskFunc)
36 				, userData(_userData)
37 			{
38 			}
39 
40 			bool IsValid()
41 			{
42 				return (taskFunc != nullptr);
43 			}
44 		};
45 	}
46 
47 }
48