OpenTTD Source  20240919-master-gdf0233f4c2
DriverFactoryBase Class Referenceabstract

Base for all driver factories. More...

#include <driver.h>

Inheritance diagram for DriverFactoryBase:
FMusicDriver_Allegro FMusicDriver_BeMidi FMusicDriver_Cocoa FMusicDriver_DMusic FMusicDriver_ExtMidi FMusicDriver_FluidSynth FMusicDriver_Null FMusicDriver_Win32 FSoundDriver_Allegro FSoundDriver_Cocoa FSoundDriver_Null FSoundDriver_SDL FSoundDriver_Win32 FSoundDriver_XAudio2 FVideoDriver_Allegro FVideoDriver_CocoaOpenGL FVideoDriver_CocoaQuartz FVideoDriver_Dedicated FVideoDriver_Null FVideoDriver_SDL FVideoDriver_SDL_Default FVideoDriver_SDL_OpenGL FVideoDriver_Win32GDI

Public Member Functions

std::string_view GetDescription () const
 Get a nice description of the driver-class. More...
 
virtual DriverCreateInstance () 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 DriversGetDrivers ()
 Get the map with drivers.
 
static Driver ** GetActiveDriver (Driver::Type type)
 Get the active driver for the given type. More...
 
static std::string_view 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.
 
std::string_view name
 The name of the drivers of this factory.
 
std::string_view 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
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 244 of file driver.cpp.

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

Member Function Documentation

◆ CreateInstance()

◆ GetActiveDriver()

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

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

◆ GetDescription()

std::string_view 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_iteratorThe iterator to write the string to.

Definition at line 219 of file driver.cpp.

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

◆ GetDriverTypeName()

static std::string_view 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 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
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 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
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 _video_hw_accel, BASE_DIR, CreateInstance(), Debug, Driver::DT_VIDEO, FioFindFullPath(), FioFOpenFile(), FioRemove(), 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: