File diff r8933:d98e0783fa25 → r8934:d5858392238b
src/fiber.hpp
Show inline comments
 
new file 100644
 
/* $Id$ */
 

	
 
/** @file fiber.hpp */
 

	
 
#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 */