mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +00:00
54 lines
878 B
C++
54 lines
878 B
C++
/* $Id$ */
|
|
|
|
/** @file fiber.hpp Base for all fiber related classes. */
|
|
|
|
#ifndef FIBER_HPP
|
|
#define FIBER_HPP
|
|
|
|
typedef void (CDECL *FiberFunc)(void *);
|
|
|
|
class Fiber {
|
|
public:
|
|
/**
|
|
* Switch to this fiber.
|
|
*/
|
|
virtual void SwitchToFiber() = 0;
|
|
|
|
/**
|
|
* Exit a fiber.
|
|
*/
|
|
virtual void Exit() = 0;
|
|
|
|
/**
|
|
* Check if a fiber is running.
|
|
*/
|
|
virtual bool IsRunning() = 0;
|
|
|
|
/**
|
|
* Get the 'param' data of the Fiber.
|
|
*/
|
|
virtual void *GetFiberData() = 0;
|
|
|
|
/**
|
|
* Virtual Destructor to mute warnings.
|
|
*/
|
|
virtual ~Fiber() {};
|
|
|
|
/**
|
|
* Create a new fiber, calling proc(param) when running.
|
|
*/
|
|
static Fiber *New(FiberFunc proc, void *param);
|
|
|
|
/**
|
|
* Attach a current thread to a new fiber.
|
|
*/
|
|
static Fiber *AttachCurrent(void *param);
|
|
|
|
/**
|
|
* Get the 'param' data of the current active Fiber.
|
|
*/
|
|
static void *GetCurrentFiberData();
|
|
};
|
|
|
|
#endif /* FIBER_HPP */
|