OpenTTD
script_scanner.hpp
Go to the documentation of this file.
1 /* $Id: script_scanner.hpp 26617 2014-05-25 19:53:46Z rubidium $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef SCRIPT_SCANNER_HPP
13 #define SCRIPT_SCANNER_HPP
14 
15 #include <map>
16 #include "../fileio_func.h"
17 #include "../core/string_compare_type.hpp"
18 
19 typedef std::map<const char *, class ScriptInfo *, StringCompare> ScriptInfoList;
20 
22 class ScriptScanner : public FileScanner {
23 public:
24  ScriptScanner();
25  virtual ~ScriptScanner();
26 
27  virtual void Initialize() = 0;
28 
32  class Squirrel *GetEngine() { return this->engine; }
33 
37  const char *GetMainScript() { return this->main_script; }
38 
42  const char *GetTarFile() { return this->tar_file; }
43 
47  const ScriptInfoList *GetInfoList() { return &this->info_list; }
48 
53 
57  void RegisterScript(class ScriptInfo *info);
58 
62  char *GetConsoleList(char *p, const char *last, bool newest_only) const;
63 
70  bool HasScript(const struct ContentInfo *ci, bool md5sum);
71 
78  const char *FindMainScript(const ContentInfo *ci, bool md5sum);
79 
80  /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename);
81 
85  void RescanDir();
86 
87 protected:
88  class Squirrel *engine;
89  char *main_script;
90  char *tar_file;
91 
94 
99  void Initialize(const char *name);
100 
104  virtual void GetScriptName(ScriptInfo *info, char *name, const char *last) = 0;
105 
109  virtual const char *GetFileName() const = 0;
110 
114  virtual Subdirectory GetDirectory() const = 0;
115 
119  virtual void RegisterAPI(class Squirrel *engine) = 0;
120 
124  virtual const char *GetScannerName() const = 0;
125 
129  void Reset();
130 
134  void ResetEngine();
135 };
136 
137 #endif /* SCRIPT_SCANNER_HPP */
const ScriptInfoList * GetUniqueInfoList()
Get the list of the latest version of all registered scripts.
const char * GetMainScript()
Get the current main script the ScanDir is currently tracking.
const char * GetTarFile()
Get the current tar file the ScanDir is currently tracking.
virtual void RegisterAPI(class Squirrel *engine)=0
Register the API for this ScriptInfo.
Subdirectory
The different kinds of subdirectories OpenTTD uses.
Definition: fileio_type.h:110
std::map< const char *, class ScriptInfo *, StringCompare > ScriptInfoList
A list that maps AI names to their AIInfo object.
Definition: ai.hpp:21
const ScriptInfoList * GetInfoList()
Get the list of all registered scripts.
char * tar_file
If, which tar file the script was in.
Helper for scanning for files with a given name.
Definition: fileio_func.h:73
Scanner to help finding scripts.
bool HasScript(const struct ContentInfo *ci, bool md5sum)
Check whether we have a script with the exact characteristics as ci.
void RegisterScript(class ScriptInfo *info)
Register a ScriptInfo to the scanner.
class Squirrel * GetEngine()
Get the engine of the main squirrel handler (it indexes all available scripts).
virtual Subdirectory GetDirectory() const =0
Get the directory to scan in.
std::map< const char *, class ScriptInfo *, StringCompare > ScriptInfoList
Type for the list of scripts.
All static information from an Script like name, version, etc.
Definition: script_info.hpp:32
char * main_script
The full path of the script.
virtual const char * GetFileName() const =0
Get the filename to scan for this type of script.
virtual void GetScriptName(ScriptInfo *info, char *name, const char *last)=0
Get the script name how to store the script in memory.
ScriptInfoList info_list
The list of all script.
void RescanDir()
Rescan the script dir.
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename)
Add a file with the given filename.
void Reset()
Reset all allocated lists.
const char * FindMainScript(const ContentInfo *ci, bool md5sum)
Find a script of a ContentInfo.
char * GetConsoleList(char *p, const char *last, bool newest_only) const
Get the list of registered scripts to print on the console.
void ResetEngine()
Reset the engine to ensure a clean environment for further steps.
ScriptInfoList info_single_list
The list of all unique script. The best script (highest version) is shown.
void Initialize()
Perform all initialization steps to create the engine.
Definition: squirrel.cpp:337
Container for all important information about a piece of content.
Definition: tcp_content.h:58
virtual const char * GetScannerName() const =0
Get the type of the script, in plural.
class Squirrel * engine
The engine we&#39;re scanning with.