[Scummvm-cvs-logs] SF.net SVN: scummvm:[53220] scummvm/trunk/engines/sword25/package/ packagemanager_script.cpp
sev at users.sourceforge.net
sev at users.sourceforge.net
Wed Oct 13 00:31:18 CEST 2010
Revision: 53220
http://scummvm.svn.sourceforge.net/scummvm/?rev=53220&view=rev
Author: sev
Date: 2010-10-12 22:31:18 +0000 (Tue, 12 Oct 2010)
Log Message:
-----------
SWORD25: Converted remainder of package/ folder
Modified Paths:
--------------
scummvm/trunk/engines/sword25/package/packagemanager_script.cpp
Modified: scummvm/trunk/engines/sword25/package/packagemanager_script.cpp
===================================================================
--- scummvm/trunk/engines/sword25/package/packagemanager_script.cpp 2010-10-12 22:30:57 UTC (rev 53219)
+++ scummvm/trunk/engines/sword25/package/packagemanager_script.cpp 2010-10-12 22:31:18 UTC (rev 53220)
@@ -43,22 +43,24 @@
#include "sword25/package/packagemanager.h"
+namespace Sword25 {
+
+using namespace Lua;
+
// -----------------------------------------------------------------------------
-static BS_PackageManager * GetPM()
-{
+static BS_PackageManager *GetPM() {
BS_Kernel * pKernel = BS_Kernel::GetInstance();
BS_ASSERT(pKernel);
- BS_PackageManager * pPM = static_cast<BS_PackageManager *>(pKernel->GetService("package"));
+ BS_PackageManager *pPM = static_cast<BS_PackageManager *>(pKernel->GetService("package"));
BS_ASSERT(pPM);
return pPM;
}
// -----------------------------------------------------------------------------
-static int LoadPackage(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int LoadPackage(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushbooleancpp(L, pPM->LoadPackage(luaL_checkstring(L, 1), luaL_checkstring(L, 2)));
@@ -67,9 +69,8 @@
// -----------------------------------------------------------------------------
-static int LoadDirectoryAsPackage(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int LoadDirectoryAsPackage(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushbooleancpp(L, pPM->LoadDirectoryAsPackage(luaL_checkstring(L, 1), luaL_checkstring(L, 2)));
@@ -78,9 +79,8 @@
// -----------------------------------------------------------------------------
-static int GetCurrentDirectory(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int GetCurrentDirectory(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushstring(L, pPM->GetCurrentDirectory().c_str());
@@ -89,9 +89,8 @@
// -----------------------------------------------------------------------------
-static int ChangeDirectory(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int ChangeDirectory(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushbooleancpp(L, pPM->ChangeDirectory(luaL_checkstring(L, 1)));
@@ -100,9 +99,8 @@
// -----------------------------------------------------------------------------
-static int GetAbsolutePath(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int GetAbsolutePath(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushstring(L, pPM->GetAbsolutePath(luaL_checkstring(L, 1)).c_str());
@@ -111,9 +109,8 @@
// -----------------------------------------------------------------------------
-static int GetFileSize(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int GetFileSize(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushnumber(L, pPM->GetFileSize(luaL_checkstring(L, 1)));
@@ -122,9 +119,8 @@
// -----------------------------------------------------------------------------
-static int GetFileType(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int GetFileType(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
lua_pushnumber(L, pPM->GetFileType(luaL_checkstring(L, 1)));
@@ -133,32 +129,31 @@
// -----------------------------------------------------------------------------
-static void SplitSearchPath(const std::string & Path, std::string & Directory, std::string & Filter)
-{
- std::string::size_type LastSlash = Path.rfind("/");
- if (LastSlash == std::string::npos)
- {
+static void SplitSearchPath(const Common::String &Path, Common::String &Directory, Common::String &Filter) {
+ // Scan backwards for a trailing slash
+ const char *sPath = Path.c_str();
+ const char *lastSlash = sPath + strlen(sPath) - 1;
+ while ((lastSlash >= sPath) && (*lastSlash != '/')) --lastSlash;
+
+ if (lastSlash >= sPath) {
Directory = "";
Filter = Path;
+ } else {
+ Directory = Common::String(sPath, lastSlash - sPath);
+ Filter = Common::String(lastSlash + 1);
}
- else
- {
- Directory = Path.substr(0, LastSlash);
- Filter = Path.substr(LastSlash + 1);
- }
}
// -----------------------------------------------------------------------------
-static void DoSearch(lua_State * L, const std::string & Path, unsigned int Type)
-{
- BS_PackageManager * pPM = GetPM();
+static void DoSearch(lua_State *L, const Common::String &Path, unsigned int Type) {
+ BS_PackageManager *pPM = GetPM();
// Der Packagemanager-Service muss den Suchstring und den Pfad getrennt \xFCbergeben bekommen.
// Um die Benutzbarkeit zu verbessern sollen Skriptprogrammierer dieses als ein Pfad \xFCbergeben k\xF6nnen.
// Daher muss der \xFCbergebene Pfad am letzten Slash aufgesplittet werden.
- std::string Directory;
- std::string Filter;
+ Common::String Directory;
+ Common::String Filter;
SplitSearchPath(Path, Directory, Filter);
// Ergebnistable auf dem Lua-Stack erstellen
@@ -168,15 +163,13 @@
// Als Indizes werden fortlaufende Nummern verwandt.
unsigned int ResultNr = 1;
BS_PackageManager::FileSearch * pFS = pPM->CreateSearch(Filter, Directory, Type);
- if (pFS)
- {
- do
- {
+ if (pFS) {
+ do {
lua_pushnumber(L, ResultNr);
lua_pushstring(L, pFS->GetCurFileName().c_str());
lua_settable(L, -3);
ResultNr++;
- } while(pFS->NextFile());
+ } while (pFS->NextFile());
}
delete(pFS);
@@ -184,43 +177,37 @@
// -----------------------------------------------------------------------------
-static int FindFiles(lua_State * L)
-{
+static int FindFiles(lua_State *L) {
DoSearch(L, luaL_checkstring(L, 1), BS_PackageManager::FT_FILE);
return 1;
}
// -----------------------------------------------------------------------------
-static int FindDirectories(lua_State * L)
-{
+static int FindDirectories(lua_State *L) {
DoSearch(L, luaL_checkstring(L, 1), BS_PackageManager::FT_DIRECTORY);
return 1;
}
// -----------------------------------------------------------------------------
-static int GetFileAsString(lua_State * L)
-{
- BS_PackageManager * pPM = GetPM();
+static int GetFileAsString(lua_State *L) {
+ BS_PackageManager *pPM = GetPM();
unsigned int FileSize;
void * FileData = pPM->GetFile(luaL_checkstring(L, 1), &FileSize);
- if (FileData)
- {
+ if (FileData) {
lua_pushlstring(L, static_cast<char *>(FileData), FileSize);
delete FileData;
return 1;
- }
- else
+ } else
return 0;
}
// -----------------------------------------------------------------------------
-static int FileExists(lua_State * L)
-{
+static int FileExists(lua_State *L) {
lua_pushbooleancpp(L, GetPM()->FileExists(luaL_checkstring(L, 1)));
return 1;
}
@@ -229,8 +216,7 @@
static const char * PACKAGE_LIBRARY_NAME = "Package";
-static const luaL_reg PACKAGE_FUNCTIONS[] =
-{
+static const luaL_reg PACKAGE_FUNCTIONS[] = {
"LoadPackage", LoadPackage,
"LoadDirectoryAsPackage", LoadDirectoryAsPackage,
"GetCurrentDirectory", GetCurrentDirectory,
@@ -242,21 +228,22 @@
"FindDirectories", FindDirectories,
"GetFileAsString", GetFileAsString,
"FileExists", FileExists,
- 0, 0,
+ 0, 0
};
// -----------------------------------------------------------------------------
-bool BS_PackageManager::_RegisterScriptBindings()
-{
+bool BS_PackageManager::_RegisterScriptBindings() {
BS_Kernel * pKernel = BS_Kernel::GetInstance();
BS_ASSERT(pKernel);
BS_ScriptEngine * pScript = static_cast<BS_ScriptEngine *>(pKernel->GetService("script"));
BS_ASSERT(pScript);
- lua_State * L = static_cast<lua_State *>(pScript->GetScriptObject());
+ lua_State *L = static_cast<lua_State *>(pScript->GetScriptObject());
BS_ASSERT(L);
if (!BS_LuaBindhelper::AddFunctionsToLib(L, PACKAGE_LIBRARY_NAME, PACKAGE_FUNCTIONS)) return false;
return true;
}
+
+} // End of namespace Sword25
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list