OpenTTD
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Static Private Member Functions | Private Attributes | Friends
DriverFactoryBase Class Reference

Base for all driver factories. More...

#include <driver.h>

Inheritance diagram for DriverFactoryBase:
FMusicDriver_Allegro FMusicDriver_BeMidi FMusicDriver_Cocoa FMusicDriver_DMusic FMusicDriver_ExtMidi FMusicDriver_LibTimidity FMusicDriver_Null FMusicDriver_OS2 FMusicDriver_QtMidi FMusicDriver_Win32 FSoundDriver_Allegro FSoundDriver_Cocoa FSoundDriver_Null FSoundDriver_SDL FSoundDriver_Win32 FVideoDriver_Allegro FVideoDriver_Cocoa FVideoDriver_Dedicated FVideoDriver_Null FVideoDriver_SDL FVideoDriver_Win32

Public Member Functions

const char * GetDescription () const
 Get a nice description of the driver-class.
virtual DriverCreateInstance () const =0
 Create an instance of this driver-class.

Static Public Member Functions

static void ShutdownDrivers ()
 Shuts down all active drivers.
static void SelectDriver (const char *name, Driver::Type type)
 Find the requested driver and return its class.
static char * GetDriversInfo (char *p, const char *last)
 Build a human readable list of available drivers, grouped by type.

Protected Member Functions

 DriverFactoryBase (Driver::Type type, int priority, const char *name, const char *description)
 Construct a new DriverFactory.
virtual ~DriverFactoryBase ()
 Frees memory used for this->name.

Private Types

typedef std::map< const char
*, DriverFactoryBase
*, StringCompare
Drivers
 Type for a map of drivers.

Static Private Member Functions

static DriversGetDrivers ()
 Get the map with drivers.
static Driver ** GetActiveDriver (Driver::Type type)
 Get the active driver for the given type.
static const char * GetDriverTypeName (Driver::Type type)
 Get the driver type name.
static bool SelectDriverImpl (const char *name, Driver::Type type)
 Find the requested driver and return its class.

Private Attributes

Driver::Type type
 The type of driver.
int priority
 The priority of this factory.
const char * name
 The name of the drivers of this factory.
const char * description
 The description of this driver.

Friends

class MusicDriver
class SoundDriver
class VideoDriver

Detailed Description

Base for all driver factories.

Definition at line 60 of file driver.h.

Constructor & Destructor Documentation

DriverFactoryBase::DriverFactoryBase ( Driver::Type  type,
int  priority,
const char *  name,
const char *  description 
)
protected

Construct a new DriverFactory.

Parameters
typeThe type of driver.
priorityThe priority within the driver class.
nameThe name of the driver.
descriptionA long-ish description of the driver.

Definition at line 219 of file driver.cpp.

References GetDrivers(), GetDriverTypeName(), lastof, strecpy(), and stredup().

Member Function Documentation

virtual Driver* DriverFactoryBase::CreateInstance ( ) const
pure virtual
static Driver** DriverFactoryBase::GetActiveDriver ( Driver::Type  type)
inlinestaticprivate

Get the active driver for the given type.

Parameters
typeThe type to get the driver for.
Returns
The active driver.

Definition at line 87 of file driver.h.

Referenced by SoundDriver::GetInstance(), MusicDriver::GetInstance(), VideoDriver::GetInstance(), and SelectDriverImpl().

const char* DriverFactoryBase::GetDescription ( ) const
inline

Get a nice description of the driver-class.

Returns
The description.

Definition at line 130 of file driver.h.

Referenced by GetDriversInfo().

char * DriverFactoryBase::GetDriversInfo ( char *  p,
const char *  last 
)
static

Build a human readable list of available drivers, grouped by type.

Parameters
pThe buffer to write to.
lastThe last element in the buffer.
Returns
The end of the written buffer.

Definition at line 191 of file driver.cpp.

References Driver::DT_BEGIN, Driver::DT_END, GetDescription(), GetDrivers(), GetDriverTypeName(), name, priority, seprintf(), and type.

Referenced by ShowHelp().

static const char* DriverFactoryBase::GetDriverTypeName ( Driver::Type  type)
inlinestaticprivate

Get the driver type name.

Parameters
typeThe type of driver to get the name of.
Returns
The name of the type.

Definition at line 98 of file driver.h.

Referenced by DriverFactoryBase(), GetDriversInfo(), SelectDriver(), SelectDriverImpl(), and ~DriverFactoryBase().

void DriverFactoryBase::SelectDriver ( const char *  name,
Driver::Type  type 
)
static

Find the requested driver and return its class.

Parameters
namethe driver to select.
typethe type of driver to select
Postcondition
Sets the driver so GetCurrentDriver() returns it too.

Definition at line 88 of file driver.cpp.

References GetDriverTypeName(), SelectDriverImpl(), StrEmpty(), and usererror().

Referenced by openttd_main().

bool DriverFactoryBase::SelectDriverImpl ( const char *  name,
Driver::Type  type 
)
staticprivate

Find the requested driver and return its class.

Parameters
namethe driver to select.
typethe type of driver to select
Postcondition
Sets the driver so GetCurrentDriver() returns it too.
Returns
True upon success, otherwise false.

Definition at line 104 of file driver.cpp.

References CreateInstance(), DEBUG, GetActiveDriver(), GetDrivers(), GetDriverTypeName(), lastof, lengthof, name, priority, Driver::Start(), strecpy(), StrEmpty(), type, and usererror().

Referenced by SelectDriver().


The documentation for this class was generated from the following files: