diff options
Diffstat (limited to 'engines/sword25/package/packagemanager.h')
-rwxr-xr-x | engines/sword25/package/packagemanager.h | 266 |
1 files changed, 134 insertions, 132 deletions
diff --git a/engines/sword25/package/packagemanager.h b/engines/sword25/package/packagemanager.h index b6f7f1270f..77aaab257b 100755 --- a/engines/sword25/package/packagemanager.h +++ b/engines/sword25/package/packagemanager.h @@ -1,36 +1,39 @@ -// ----------------------------------------------------------------------------- -// This file is part of Broken Sword 2.5 -// Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdörfer -// -// Broken Sword 2.5 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; either version 2 of the License, or -// (at your option) any later version. -// -// Broken Sword 2.5 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. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Broken Sword 2.5; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -// ----------------------------------------------------------------------------- - -/* - BS_PackageManager - ------------- - Dies ist das Package Manager Interface, dass alle Methoden enthält, die ein Package Manager - implementieren muss. - Beim Package Manager ist folgendes zu beachten: - 1. es wird ein komplett neuer (virtueller) Verzeichnisbaum erstellt, - in den Packages und Verzeichnisse gemounted werden können. - 2. zum Trennen von Elementen eines Verzeichnisspfades wird '/' statt '\' verwendet. - 3. LoadDirectoryAsPackage sollte nur zum Testen benutzt werden. Im Final Release sollen sich - alle Dateien in echten Packages befinden. - - Autor: Malte Thiesen, $author$ -*/ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program 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; either version 2 + * of the License, or (at your option) any later version. + + * This program 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. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + * BS_PackageManager + * ----------------- + * This is the package manager interface, that contains all the methods that a package manager + * must implement. + * In the package manager, note the following: + * 1. It creates a completely new (virtual) directory tree in the packages and directories + * can be mounted. + * 2. To seperate elements of a directory path '/' must be used rather than '\' + * 3. LoadDirectoryAsPackage should only be used for testing. The final release will be + * have all files in packages. + * + * Autor: Malte Thiesen, $author$ + */ #ifndef SWORD25_PACKAGE_MANAGER_H #define SWORD25_PACKAGE_MANAGER_H @@ -40,149 +43,148 @@ #include "sword25/kernel/kernel.h" #include "sword25/kernel/service.h" -// Klassendefinition +namespace Sword25 { + +// Class definitions + /** - @brief Das Package Manager Interface - - Beim Package Manager ist folgendes zu beachten:<br> - 1. es wird ein komplett neuer (virtueller) Verzeichnisbaum erstellt, - in den Packages und Verzeichnisse gemounted werden können.<br> - 2. zum Trennen von Elementen eines Verzeichnisspfades wird '/' statt '\' verwendet.<br> - 3. LoadDirectoryAsPackage sollte nur zum Testen benutzt werden. Im Final Release sollen sich - alle Dateien in echten Packages befinden. -*/ -class BS_PackageManager : public BS_Service -{ + * The Package Manager interface + * + * 1. It creates a completely new (virtual) directory tree in the packages and directories + * can be mounted. + * 2. To seperate elements of a directory path '/' must be used rather than '\' + * 3. LoadDirectoryAsPackage should only be used for testing. The final release will be + * have all files in packages. + */ +class BS_PackageManager : public BS_Service { public: BS_PackageManager(BS_Kernel* pKernel); virtual ~BS_PackageManager() {}; - enum FILE_TYPES - { + enum FILE_TYPES { FT_DIRECTORY = (1<<0), FT_FILE = (1<<1) }; /** - @brief Mit Instanzen dieses Objektes wird nach Dateien gesucht. - - Objekte diesen Types wird mit BS_PackageManager::CreateSearch erzeugt. - */ - class FileSearch - { + * File search class + * + * These objects are created with BS_PackageManager::CreateSearch + */ + class FileSearch { public: virtual ~FileSearch(){}; /** - @brief Gibt den Dateinamen der aktuellen Datei zurück. - @return Gibt den Dateinamen der aktuellen Datei zurück. - */ - virtual std::string GetCurFileName() = 0; + * Returns the filename of the current file + * @return Returns the filename of the current file + */ + virtual Common::String GetCurFileName() = 0; /** - @brief Gibt den Typ der aktuellen Datei zurück. - @return Gibt den Typ der aktuellen Datei zurück.<br> - Dieses ist entweder BS_PackageManager::FT_FILE oder BS_PackageManager::FT_DIRECTORY. - */ + * Returns the type of the current file + * @return Returns the type of the current file + * This is either BS_PackageManager::FT_FILE or BS_PackageManager::FT_DIRECTORY. + */ virtual unsigned int GetCurFileType() = 0; /** - @brief Gibt die Größe der aktuellen Datei zurück. - @return Gibt die Größe der aktuellen Datei zurück.<br> - Bei Verzeichnissen ist dieser Wert immer 0. - */ + * Returns the size of the current file + * @return Returns the size of the current file + * For directories, this value is always 0 + */ virtual unsigned int GetCurFileSize() = 0; - // Sucht die nächste Datei - // Gibt false zurück, falls keine weitere Datei gefunden wurde + // Finds the next file + // Returns false if no more files are found. /** - @brief Sucht die nächste Datei. - @return Gibt false zurück, falls keine weitere Datei die Suchkriterien erfüllte. + * Finds the next file. + * @return Returns false if no other file fulfills the search criteria */ virtual bool NextFile() = 0; }; /** - @brief Mounted den Inhalt eines Packages in das angegebene Verzeichnis im virtuellen Verzeichnisbaum. - @param FileName der Dateiname des zu mountenden Packages - @param MountPosition der Verzeichnisname, unter dem das Package gemounted werden soll - @return Gibt true zurück falls das mounten erfolgreich war, andernfalls false. + * Mounts the contents of a package in the directory specified in the virtual directory tree. + * @param FileName The filename of the package to mount + * @param MountPosition The directory name under which the package should be mounted + * @return Returns true if the mount was successful, otherwise false. */ - virtual bool LoadPackage(const std::string& FileName, const std::string& MountPosition) = 0; + virtual bool LoadPackage(const Common::String &FileName, const Common::String &MountPosition) = 0; /** - @brief Mounted den Inhalt eines Verzeichnisses in das angegebene Verzeichnis im virtuellen Verzeichnisbaum. - @param DirectoryName der Name des zu mountenden Verzeichnisses - @param MountPosition der Verzeichnisname, unter dem das Verzeichnis gemounted werden soll - @return Gibt true zurück falls das mounten erfolgreich war, andernfalls false. + * Mounts the contents of a directory in the specified directory in the virtual directory tree. + * @param The name of the directory to mount + * @param MountPosition The directory name under which the package should be mounted + * @return Returns true if the mount was successful, otherwise false. */ - virtual bool LoadDirectoryAsPackage(const std::string& DirectoryName, const std::string& MountPosition) = 0; + virtual bool LoadDirectoryAsPackage(const Common::String &DirectoryName, const Common::String &MountPosition) = 0; /** - @brief Lädt eine Datei aus dem virtuellen Verzeichnisbaum. - @param FileName der Dateiname der zu ladenden Datei - @param pFileSize Pointer auf die Variable, die die Größe der geladenen Datei enthalten soll<br> - Der Standardwert ist NULL. - @return Gibt einen Pointer auf die Dateidaten zürück, oder NULL, wenn die Datei nicht geladen werden konnte. - @remark Es darf nicht vergessen werden, die Dateidaten nach Benutzung mit BE_DELETE_A freizugeben. - */ - virtual void* GetFile(const std::string& FileName, unsigned int* pFileSize = NULL) = 0; + * Downloads a file from the virtual directory tree + * @param FileName The filename of the file to load + * @param pFileSize Pointer to the variable that will contain the size of the loaded file. The deafult is NULL. + * @return Specifies a pointer to the loaded data of the file + * @remark The client must not forget to release the data of the file using BE_DELETE_A. + */ + virtual void *GetFile(const Common::String &FileName, unsigned int *pFileSize = NULL) = 0; /** - @brief Gibt den Pfad zum aktuellen Verzeichnis zurück. - @return Gibt einen String zurück, der den Pfad zum aktuellen Verzeichnis enthält.<br> - Falls der Pfad nicht bestimmt werden konnte wird ein leerer String zurückgegeben. - @remark Zum Trennen von Pfadelementen wird "/" und nicht "\" verwendet. - */ - virtual std::string GetCurrentDirectory() = 0; + * Returns the path to the current directory. + * @return Returns a string containing the path to the current directory. + * If the path could not be determined, an empty string is returned. + * @remark For cutting path elements '\' is used rather than '/' elements. + */ + virtual Common::String GetCurrentDirectory() = 0; /** - @brief Wechselt das aktuelle Verzeichnis. - @param Directory ein String der das Verzeichnis bezeichnet, in dass gewechselt werden soll.<br> - Die Pfadangabe darf relativ sein. - @return Gibt true zurück, falls der Vorgang erfolgreich war, ansonsten false. - @remark Zum Trennen von Pfadelementen wird "/" und nicht "\" verwendet. - */ - virtual bool ChangeDirectory(const std::string& Directory) = 0; + * Changes the current directory. + * @param Directory The path to the new directory. The path can be relative. + * @return Returns true if the operation was successful, otherwise false. + * @remark For cutting path elements '\' is used rather than '/' elements. + */ + virtual bool ChangeDirectory(const Common::String& Directory) = 0; /** - @brief Gibt den absoluten Pfad zu einer Datei im virtuellen Verzeichnisbaum zurück. - @param FileName der Dateiname der Datei, deren absoluter Pfad bestimmt werden soll.<br> - Diese Parameter kann sowohl relative als auch absolute Pfadangaben beinhalten. - @return Gibt einen String zurück, der den absoluten Pfad zur übergebenen Datei enthält.<br> - Falls der absolute Pfad nicht bestimmt werden konnte, wird ein leerer String zurückgegeben. - @remark Zum Trennen von Pfadelementen wird "/" und nicht "\" verwendet. - */ - virtual std::string GetAbsolutePath(const std::string& FileName) = 0; + * Returns the absolute path to a file in the virtual directory tree. + * @param FileName The filename of the file whose absolute path is to be determined. + * These parameters may include both relative and absolute paths. + * @return Returns an absolute path to the given file. + * @remark For cutting path elements '\' is used rather than '/' elements. + */ + virtual Common::String GetAbsolutePath(const Common::String& FileName) = 0; /** - @brief Erstellt ein BS_PackageManager::FileSearch Objekt mit dem Nach Dateien gesucht werden kann. - @param Filter gibt den Suchstring an. Dieser darf die Wildcards '*' und '?' enthalten. - @param Path gibt das Verzeichnis an, welches durchsucht werden soll. - @param TypeFilter ist eine Kombination der Flags BS_PackageManager::FT_DIRECTORY und BS_PackageManager::FT_FILE.<br> - Diese Flags geben an, ob nach Dateien oder Verzeichnissen oder beiden gesucht werden soll.<br> - Der Standardwert ist BS_PackageManager::FT_DIRECTORY | BS_PackageManager::FT_FILE. - @return Gibt einen Pointer auf ein BS_PackageManager::FileSearch Objekt zurück, oder NULL wenn keine Datei gefunden wurde. - @remark Nicht vergessen, das Objekt nach Benutzung mit delete freizugeben. + * Creates a BS_PackageManager::FileSearch object to search for files + * @param Filter Specifies the search string. Wildcards of '*' and '?' are allowed + * @param Path Specifies the directory that should be searched. + * @param TypeFilter A combination of flags BS_PackageManager::FT_DIRECTORY and BS_PackageManager::FT_FILE. + * These flags indicate whether to search for files, directories, or both. + * The default is BS_PackageManager::FT_DIRECTORY | BS_PackageManager::FT_FILE + * @return Specifies a pointer to a BS_PackageManager::FileSearch object, or NULL if no file was found. + * @remark Do not forget to delete the object after use. */ - virtual FileSearch* CreateSearch(const std::string& Filter, const std::string& Path, unsigned int TypeFilter = FT_DIRECTORY | FT_FILE) = 0; + virtual FileSearch *CreateSearch(const Common::String &Filter, const Common::String &Path, unsigned int TypeFilter = FT_DIRECTORY | FT_FILE) = 0; /** - * @brief Gibt die Dateigröße zurück. - * @param FileName die Datei. - * @return die Dateigröße. Im Falle eines Fehlers wird 0xffffffff zurückgegeben. - * @remarks Bei komprimierten Containern wird die unkomprimierte Größe zurückgegeben. + * Returns a file's size + * @param FileName The filename + * @return The file size. If an error occurs, then 0xffffffff is returned. + * @remarks For files in packages, then uncompressed size is returned. **/ - virtual unsigned int GetFileSize(const std::string& FileName) = 0; + virtual unsigned int GetFileSize(const Common::String &FileName) = 0; /** - @brief Gibt den Typ einer Datei zurück. - @param FileName der Dateiname - @return Gibt den Dateityp zurück (BS_PackageManager::FT_DIRECTORY oder BS_PackageManager::FT_FILE).<br> - Falls die Datei nicht gefunden wurde wird 0 zurückgegeben. - */ - virtual unsigned int GetFileType(const std::string & FileName) = 0; + * Returns the type of a file. + * @param FileName The filename + * @return Returns the file type, either (BS_PackageManager::FT_DIRECTORY + * or BS_PackageManager::FT_FILE). + * If the file was not found, then 0 is returned. + */ + virtual unsigned int GetFileType(const Common::String &FileName) = 0; /** - @brief Bestimmt, ob eine Datei existiert. - @param FileName der Dateiname - @return Gibt true zurück, wenn die Datei existiert, ansonsten false. + * Determines whether a file exists + * @param FileName The filename + * @return Returns true if the file exists, otherwise false. */ - virtual bool FileExists(const std::string & FileName) = 0; + virtual bool FileExists(const Common::String & FileName) = 0; private: bool _RegisterScriptBindings(); }; +} // ENd of namespace Sword25 + #endif |