src/fiber.hpp
author translators
Sat, 29 Nov 2008 18:44:52 +0000
changeset 10391 8c1d42c0818d
parent 9111 48ce04029fe4
permissions -rw-r--r--
(svn r14642) -Update: WebTranslator2 update to 2008-11-29 18:44:42
croatian - 163 fixed, 30 changed by knovak (193)
czech - 1 fixed, 1 changed by miris2009 (2)
esperanto - 41 fixed by Athaba (41)
german - 4 fixed, 2 changed by Athaba (6)
greek - 20 fixed by vesnikos (20)
hungarian - 6 changed by IPG (6)
indonesian - 46 fixed by fanioz (46)
malay - 259 fixed by SeaGates (259)
polish - 1 fixed, 10 changed by meush (11)
/* $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 */