OpenTTD Source  20240919-master-gdf0233f4c2
ScriptScanner Class Referenceabstract

Scanner to help finding scripts. More...

#include <script_scanner.hpp>

Inheritance diagram for ScriptScanner:
FileScanner AIScannerInfo AIScannerLibrary GameScannerInfo GameScannerLibrary

Public Member Functions

virtual void Initialize ()=0
 
class SquirrelGetEngine ()
 Get the engine of the main squirrel handler (it indexes all available scripts).
 
std::string GetMainScript ()
 Get the current main script the ScanDir is currently tracking.
 
std::string GetTarFile ()
 Get the current tar file the ScanDir is currently tracking.
 
const ScriptInfoListGetInfoList ()
 Get the list of all registered scripts.
 
const ScriptInfoListGetUniqueInfoList ()
 Get the list of the latest version of all registered scripts.
 
void RegisterScript (class ScriptInfo *info)
 Register a ScriptInfo to the scanner.
 
void GetConsoleList (std::back_insert_iterator< std::string > &output_iterator, bool newest_only) const
 Get the list of registered scripts to print on the console. More...
 
bool HasScript (const struct ContentInfo *ci, bool md5sum)
 Check whether we have a script with the exact characteristics as ci. More...
 
const char * FindMainScript (const ContentInfo *ci, bool md5sum)
 Find a script of a ContentInfo. More...
 
bool AddFile (const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
 Add a file with the given filename. More...
 
void RescanDir ()
 Rescan the script dir.
 
- Public Member Functions inherited from FileScanner
virtual ~FileScanner ()=default
 Destruct the proper one...
 
uint Scan (std::string_view extension, Subdirectory sd, bool tars=true, bool recursive=true)
 Scan for files with the given extension in the given search path. More...
 
uint Scan (std::string_view extension, const std::string &directory, bool recursive=true)
 Scan for files with the given extension in the given search path. More...
 

Protected Member Functions

void Initialize (const char *name)
 Initialize the scanner. More...
 
virtual std::string GetScriptName (ScriptInfo *info)=0
 Get the script name how to store the script in memory.
 
virtual const char * GetFileName () const =0
 Get the filename to scan for this type of script.
 
virtual Subdirectory GetDirectory () const =0
 Get the directory to scan in.
 
virtual void RegisterAPI (class Squirrel *engine)=0
 Register the API for this ScriptInfo.
 
virtual const char * GetScannerName () const =0
 Get the type of the script, in plural.
 
void Reset ()
 Reset all allocated lists.
 
void ResetEngine ()
 Reset the engine to ensure a clean environment for further steps.
 

Protected Attributes

class Squirrelengine
 The engine we're scanning with.
 
std::string main_script
 The full path of the script.
 
std::string tar_file
 If, which tar file the script was in.
 
ScriptInfoList info_list
 The list of all script.
 
ScriptInfoList info_single_list
 The list of all unique script. The best script (highest version) is shown.
 
- Protected Attributes inherited from FileScanner
Subdirectory subdir
 The current sub directory we are searching through.
 

Detailed Description

Scanner to help finding scripts.

Definition at line 19 of file script_scanner.hpp.

Member Function Documentation

◆ AddFile()

bool ScriptScanner::AddFile ( const std::string &  filename,
size_t  basepath_length,
const std::string &  tar_filename 
)
overridevirtual

Add a file with the given filename.

Parameters
filenamethe full path to the file to read
basepath_lengthamount of characters to chop of before to get a filename relative to the search path.
tar_filenamethe name of the tar file the file is read from.
Returns
true if the file is added.

Implements FileScanner.

Definition at line 26 of file script_scanner.cpp.

References main_script, and tar_file.

◆ FindMainScript()

const char * ScriptScanner::FindMainScript ( const ContentInfo ci,
bool  md5sum 
)

Find a script of a ContentInfo.

Parameters
ciThe information to compare to.
md5sumWhether to check the MD5 checksum.
Returns
A filename of a file of the content, else nullptr.

Definition at line 243 of file script_scanner.cpp.

References info_list, and IsSameScript().

◆ GetConsoleList()

void ScriptScanner::GetConsoleList ( std::back_insert_iterator< std::string > &  output_iterator,
bool  newest_only 
) const

Get the list of registered scripts to print on the console.

Parameters
output_iteratorThe iterator to write the output to.
newest_onlyWhether to only show the newest scripts.

Definition at line 141 of file script_scanner.cpp.

References ScriptInfo::GetDescription(), ScriptInfo::GetName(), GetScannerName(), ScriptInfo::GetVersion(), info_list, and info_single_list.

Referenced by Game::GetConsoleLibraryList(), AI::GetConsoleLibraryList(), Game::GetConsoleList(), and AI::GetConsoleList().

◆ HasScript()

bool ScriptScanner::HasScript ( const struct ContentInfo ci,
bool  md5sum 
)

Check whether we have a script with the exact characteristics as ci.

Parameters
ciThe characteristics to search on (shortname and md5sum).
md5sumWhether to check the MD5 checksum.
Returns
True iff we have a script matching.

Definition at line 235 of file script_scanner.cpp.

References info_list, and IsSameScript().

Referenced by AI::HasAI(), and Game::HasGame().

◆ Initialize()

void ScriptScanner::Initialize ( const char *  name)
protected

Initialize the scanner.

Parameters
nameThe name of the scanner ("AIScanner", "GSScanner", ..).

Definition at line 59 of file script_scanner.cpp.

References engine, RescanDir(), and ResetEngine().


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