Files @ r10412:5923d8bb7636
Branch filter:

Location: cpp/openttd-patchpack/source/src/fiber.hpp

translators
(svn r14665) -Update: WebTranslator2 update to 2008-12-09 18:44:40
arabic_egypt - 301 fixed by khaloofah (301)
esperanto - 64 fixed, 2 changed by alekcxjo (66)
hebrew - 430 fixed by moshe (430)
hungarian - 10 changed by alyr (9), oklmernok (1)
indonesian - 49 fixed, 4 changed by fanioz (40), anansboga (13)
lithuanian - 5 fixed by Enternald (5)
portuguese - 6 fixed by SnowFlake (6)
thai - 333 fixed by vetbook (333)
/* $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 */