{Project64] Tabs to spaces in Plugin List.cpp

This commit is contained in:
zilmar 2015-11-12 19:43:32 +11:00
parent 5888b1d3f6
commit efa3c87de7
2 changed files with 136 additions and 125 deletions

View File

@ -12,12 +12,12 @@
#include <io.h>
CPluginList::CPluginList(bool bAutoFill /* = true */) :
m_PluginDir(g_Settings->LoadStringVal(Directory_Plugin),"")
m_PluginDir(g_Settings->LoadStringVal(Directory_Plugin), "")
{
if (bAutoFill)
{
LoadList();
}
if (bAutoFill)
{
LoadList();
}
}
CPluginList::~CPluginList()
@ -26,123 +26,122 @@ CPluginList::~CPluginList()
int CPluginList::GetPluginCount() const
{
return m_PluginList.size();
return m_PluginList.size();
}
const CPluginList::PLUGIN * CPluginList::GetPluginInfo ( int indx ) const
const CPluginList::PLUGIN * CPluginList::GetPluginInfo(int indx) const
{
if (indx < 0 || indx >= (int)m_PluginList.size())
{
return NULL;
}
return &m_PluginList[indx];
if (indx < 0 || indx >= (int)m_PluginList.size())
{
return NULL;
}
return &m_PluginList[indx];
}
bool CPluginList::LoadList()
{
WriteTrace(TraceDebug,__FUNCTION__ ": Start");
m_PluginList.clear();
AddPluginFromDir(m_PluginDir);
WriteTrace(TraceDebug,__FUNCTION__ ": Done");
return true;
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
m_PluginList.clear();
AddPluginFromDir(m_PluginDir);
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
return true;
}
void CPluginList::AddPluginFromDir ( CPath Dir)
void CPluginList::AddPluginFromDir(CPath Dir)
{
Dir.SetNameExtension("*.*");
if (Dir.FindFirst(_A_SUBDIR))
{
do {
AddPluginFromDir(Dir);
} while (Dir.FindNext());
Dir.UpDirectory();
}
Dir.SetNameExtension("*.*");
if (Dir.FindFirst(_A_SUBDIR))
{
do {
AddPluginFromDir(Dir);
} while (Dir.FindNext());
Dir.UpDirectory();
}
Dir.SetNameExtension("*.dll");
if (Dir.FindFirst())
{
HMODULE hLib = NULL;
do {
if (hLib)
{
FreeLibrary(hLib);
hLib = NULL;
}
Dir.SetNameExtension("*.dll");
if (Dir.FindFirst())
{
HMODULE hLib = NULL;
do {
if (hLib)
{
FreeLibrary(hLib);
hLib = NULL;
}
//UINT LastErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS );
WriteTraceF(TraceDebug,__FUNCTION__ ": loading %s",(LPCSTR)Dir);
hLib = LoadLibrary(Dir);
//SetErrorMode(LastErrorMode);
//UINT LastErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS );
WriteTraceF(TraceDebug, __FUNCTION__ ": loading %s", (LPCSTR)Dir);
hLib = LoadLibrary(Dir);
//SetErrorMode(LastErrorMode);
if (hLib == NULL)
{
DWORD LoadError = GetLastError();
WriteTraceF(TraceDebug, __FUNCTION__ ": failed to loadi %s (error: %d)", (LPCSTR)Dir, LoadError);
continue;
}
if (hLib == NULL)
{
DWORD LoadError = GetLastError();
WriteTraceF(TraceDebug, __FUNCTION__ ": failed to loadi %s (error: %d)", (LPCSTR)Dir, LoadError);
continue;
}
void (__cdecl *GetDllInfo) ( PLUGIN_INFO * PluginInfo );
GetDllInfo = (void (__cdecl *)(PLUGIN_INFO *))GetProcAddress( hLib, "GetDllInfo" );
if (GetDllInfo == NULL)
{
continue;
}
PLUGIN Plugin = { 0 };
Plugin.Info.MemoryBswaped = true;
GetDllInfo(&Plugin.Info);
if (!ValidPluginVersion(Plugin.Info))
{
continue;
}
void(__cdecl *GetDllInfo) (PLUGIN_INFO * PluginInfo);
GetDllInfo = (void(__cdecl *)(PLUGIN_INFO *))GetProcAddress(hLib, "GetDllInfo");
if (GetDllInfo == NULL)
{
continue;
}
Plugin.FullPath = Dir;
std::string& fullPath = Dir;
std::string& pluginPath = m_PluginDir;
Plugin.FileName = fullPath.substr(pluginPath.length());
PLUGIN Plugin = { 0 };
Plugin.Info.MemoryBswaped = true;
GetDllInfo(&Plugin.Info);
if (!ValidPluginVersion(Plugin.Info))
{
continue;
}
if (GetProcAddress(hLib,"DllAbout") != NULL)
{
Plugin.AboutFunction = true;
}
m_PluginList.push_back(Plugin);
} while (Dir.FindNext());
Plugin.FullPath = Dir;
std::string& fullPath = Dir;
std::string& pluginPath = m_PluginDir;
Plugin.FileName = fullPath.substr(pluginPath.length());
if (hLib)
{
FreeLibrary(hLib);
hLib = NULL;
}
}
if (GetProcAddress(hLib, "DllAbout") != NULL)
{
Plugin.AboutFunction = true;
}
m_PluginList.push_back(Plugin);
} while (Dir.FindNext());
if (hLib)
{
FreeLibrary(hLib);
hLib = NULL;
}
}
}
bool CPluginList::ValidPluginVersion ( PLUGIN_INFO & PluginInfo ) {
switch (PluginInfo.Type)
{
case PLUGIN_TYPE_RSP:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0001) { return true; }
if (PluginInfo.Version == 0x0100) { return true; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
case PLUGIN_TYPE_GFX:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0102) { return true; }
if (PluginInfo.Version == 0x0103) { return true; }
if (PluginInfo.Version == 0x0104) { return true; }
break;
case PLUGIN_TYPE_AUDIO:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
case PLUGIN_TYPE_CONTROLLER:
if (PluginInfo.Version == 0x0100) { return true; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
}
return FALSE;
}
bool CPluginList::ValidPluginVersion(PLUGIN_INFO & PluginInfo) {
switch (PluginInfo.Type)
{
case PLUGIN_TYPE_RSP:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0001) { return true; }
if (PluginInfo.Version == 0x0100) { return true; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
case PLUGIN_TYPE_GFX:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0102) { return true; }
if (PluginInfo.Version == 0x0103) { return true; }
if (PluginInfo.Version == 0x0104) { return true; }
break;
case PLUGIN_TYPE_AUDIO:
if (!PluginInfo.MemoryBswaped) { return false; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
case PLUGIN_TYPE_CONTROLLER:
if (PluginInfo.Version == 0x0100) { return true; }
if (PluginInfo.Version == 0x0101) { return true; }
if (PluginInfo.Version == 0x0102) { return true; }
break;
}
return FALSE;
}

View File

@ -1,30 +1,42 @@
#include "..\\Settings.h"
/****************************************************************************
* *
* Project64 - A Nintendo 64 emulator. *
* http://www.pj64-emu.com/ *
* Copyright (C) 2012 Project64. All rights reserved. *
* *
* License: *
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
* *
****************************************************************************/
#pragma once
class CPluginList
#include <Project64/Settings/Settings.h>
class CPluginList
{
public:
typedef struct
{
PLUGIN_INFO Info;
bool AboutFunction;
CPath FullPath;
stdstr FileName;
} PLUGIN;
typedef struct
{
PLUGIN_INFO Info;
bool AboutFunction;
CPath FullPath;
stdstr FileName;
} PLUGIN;
public:
CPluginList(bool bAutoFill = true);
~CPluginList();
CPluginList(bool bAutoFill = true);
~CPluginList();
bool LoadList ( void );
int GetPluginCount ( void ) const;
const PLUGIN * GetPluginInfo ( int indx ) const;
static bool ValidPluginVersion ( PLUGIN_INFO & PluginInfo );
bool LoadList(void);
int GetPluginCount(void) const;
const PLUGIN * GetPluginInfo(int indx) const;
static bool ValidPluginVersion(PLUGIN_INFO & PluginInfo);
private:
typedef std::vector<PLUGIN> PluginList;
typedef std::vector<PLUGIN> PluginList;
PluginList m_PluginList;
CPath m_PluginDir;
PluginList m_PluginList;
CPath m_PluginDir;
void AddPluginFromDir(CPath Dir);
void AddPluginFromDir(CPath Dir);
};