OpenTTD Source: DriverFactoryBase Class Reference

OpenTTD Source 14.1

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

Base for all driver factories. More...

`#include <driver.h>`

Inheritance diagram for DriverFactoryBase:

## Public Member Functions
const char * | GetDescription () const
| Get a nice description of the driver-class. More...
virtual Driver * | CreateInstance () const =0
| Create an instance of this driver-class. More...

## Static Public Member Functions
static void | ShutdownDrivers ()
| Shuts down all active drivers.
static void | SelectDriver (const std::string &name, Driver::Type type)
| Find the requested driver and return its class. More...
static void | GetDriversInfo (std::back_insert_iterator< std::string > &output_iterator)
| Build a human readable list of available drivers, grouped by type. More...

## Protected Member Functions
| DriverFactoryBase (Driver::Type type, int priority, const char *name, const char *description)
| Construct a new DriverFactory. More...
virtual | ~DriverFactoryBase ()
| Frees memory used for this->name.
virtual bool | UsesHardwareAcceleration () const
| Does the driver use hardware acceleration (video-drivers only). More...

## Private Types
typedef std::map< std::string, DriverFactoryBase * > | Drivers
| Type for a map of drivers.

## Static Private Member Functions
static Drivers & | GetDrivers ()
| Get the map with drivers.
static Driver ** | GetActiveDriver (Driver::Type type)
| Get the active driver for the given type. More...
static const char * | GetDriverTypeName (Driver::Type type)
| Get the driver type name. More...
static bool | SelectDriverImpl (const std::string &name, Driver::Type type)
| Find the requested driver and return its class. More...
static void | MarkVideoDriverOperational ()
| Mark the current video driver as operational.

## 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 57 of file driver.h.

## Constructor & Destructor Documentation

## ◆ DriverFactoryBase()

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

Construct a new DriverFactory.

Parameters

  type | The type of driver.
  priority | The priority within the driver class.
  name | The name of the driver.
  description | A long-ish description of the driver.

Definition at line 251 of file driver.cpp.

References GetDrivers(), GetDriverTypeName(), name, and type.

## Member Function Documentation

## ◆ CreateInstance()

virtual Driver* DriverFactoryBase::CreateInstance | ( |  | ) | const
| pure virtual

Create an instance of this driver-class.

Returns
  The instance.

Implemented in FVideoDriver_CocoaQuartz, FVideoDriver_Win32GDI, FVideoDriver_CocoaOpenGL, FVideoDriver_SDL_OpenGL, FVideoDriver_SDL, FVideoDriver_Allegro, FMusicDriver_Allegro, FMusicDriver_BeMidi, FVideoDriver_Dedicated, FMusicDriver_ExtMidi, FVideoDriver_Null, FMusicDriver_DMusic, FMusicDriver_FluidSynth, FMusicDriver_Null, FMusicDriver_Win32, FVideoDriver_SDL_Default, FMusicDriver_Cocoa, FSoundDriver_Allegro, FSoundDriver_Null, FSoundDriver_SDL, FSoundDriver_Win32, FSoundDriver_XAudio2, and FSoundDriver_Cocoa.

Referenced by SelectDriverImpl().

## ◆ GetActiveDriver()

static Driver** DriverFactoryBase::GetActiveDriver | ( | Driver::Type | type | ) |
| inlinestaticprivate

Get the active driver for the given type.

Parameters

  type | The type to get the driver for.

Returns
  The active driver.

Definition at line 84 of file driver.h.

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

## ◆ GetDescription()

const char* DriverFactoryBase::GetDescription | ( |  | ) | const
| inline

Get a nice description of the driver-class.

Returns
  The description.

Definition at line 138 of file driver.h.

Referenced by GetDriversInfo().

## ◆ GetDriversInfo()

void DriverFactoryBase::GetDriversInfo | ( | std::back_insert_iterator< std::string > & | output_iterator | ) |
| static

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

Parameters

  output_iterator | The iterator to write the string to.

Definition at line 226 of file driver.cpp.

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

## ◆ GetDriverTypeName()

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

Get the driver type name.

Parameters

  type | The type of driver to get the name of.

Returns
  The name of the type.

Definition at line 95 of file driver.h.

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

## ◆ SelectDriver()

void DriverFactoryBase::SelectDriver | ( | const std::string & | name,
|  | Driver::Type | type
| ) |  |
| static

Find the requested driver and return its class.

Parameters

  name | the driver to select.
  type | the type of driver to select

Postcondition
  Sets the driver so GetCurrentDriver() returns it too.

Definition at line 94 of file driver.cpp.

References name, SelectDriverImpl(), and type.

## ◆ SelectDriverImpl()

bool DriverFactoryBase::SelectDriverImpl | ( | const std::string & | name,
|  | Driver::Type | type
| ) |  |
| staticprivate

Find the requested driver and return its class.

Parameters

  name | the driver to select.
  type | the type of driver to select

Postcondition
  Sets the driver so GetCurrentDriver() returns it too.

Returns
  True upon success, otherwise false.

Definition at line 110 of file driver.cpp.

References _video_hw_accel, BASE_DIR, CreateInstance(), Debug, Driver::DT_VIDEO, FioFCloseFile(), FioFindFullPath(), FioFOpenFile(), GetActiveDriver(), GetDrivers(), GetDriverTypeName(), HWACCELERATION_TEST_FILE, name, priority, ScheduleErrorMessage(), Driver::Start(), type, and UsesHardwareAcceleration().

Referenced by SelectDriver().

## ◆ UsesHardwareAcceleration()

virtual bool DriverFactoryBase::UsesHardwareAcceleration | ( |  | ) | const
| inlineprotectedvirtual

Does the driver use hardware acceleration (video-drivers only).

Returns
  True if the driver uses hardware acceleration.

Reimplemented in FVideoDriver_CocoaOpenGL, and FVideoDriver_SDL_OpenGL.

Definition at line 114 of file driver.h.

Referenced by SelectDriverImpl().

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

- src/driver.h
- src/driver.cpp