Added version checking to plugins.

This commit is contained in:
Joshua Jones 2010-02-10 04:59:10 +00:00
parent 48d264d0be
commit fbd3ecabb4
6 changed files with 16 additions and 8 deletions

View File

@ -6,7 +6,7 @@
namespace cAudio
{
typedef bool (*pluginInstallFunc)(ILogger* logger);
typedef bool (*pluginInstallFunc)(ILogger* logger, const char* version);
typedef const char* (*pluginNameFunc)();
typedef void (*pluginUninstallFunc)();
@ -32,7 +32,7 @@ namespace cAudio
}
~cAudioPlugin() { }
virtual bool installPlugin(ILogger* logger);
virtual bool installPlugin(ILogger* logger, const char* version);
virtual const char* getPluginName();
virtual void uninstallPlugin();

View File

@ -3,10 +3,10 @@
namespace cAudio
{
bool cAudioPlugin::installPlugin(ILogger* logger)
bool cAudioPlugin::installPlugin(ILogger* logger, const char* version)
{
if(initFunc)
return initFunc(logger);
return initFunc(logger, version);
return false;
}

View File

@ -2,6 +2,7 @@
#include "../Headers/cUtils.h"
#include "../include/cAudioPlatform.h"
#include "../Headers/cAudioPlugin.h"
#include "../include/cAudioDefines.h"
namespace cAudio
{
@ -33,7 +34,7 @@ bool cPluginManager::installPlugin(IAudioPlugin* plugin, const char* name)
if(theName.empty())
theName = plugin->getPluginName();
if(plugin->installPlugin(getLogger()))
if(plugin->installPlugin(getLogger(), CAUDIO_VERSION))
{
RegisteredPlugins[theName] = plugin;
return true;

View File

@ -40,7 +40,7 @@ namespace cAudio
IAudioPlugin() { }
~IAudioPlugin() { }
virtual bool installPlugin(ILogger* logger) = 0;
virtual bool installPlugin(ILogger* logger, const char* version) = 0;
virtual const char* getPluginName() = 0;
virtual void uninstallPlugin() = 0;

View File

@ -3,6 +3,8 @@
#include "cAudioPlatform.h"
#define CAUDIO_VERSION "2.0.0"
//Global define for exporting the library
#ifndef CAUDIO_STATIC_LIB

View File

@ -5,10 +5,15 @@
#include "ILogger.h"
//Will be called on initial install of the plugin, use this for any first time initialization.
extern "C" CAUDIO_API bool InstallPlugin(cAudio::ILogger* logger)
extern "C" CAUDIO_API bool InstallPlugin(cAudio::ILogger* logger, const char* version)
{
//This plugin has no first time initialization to do, so this is an easy function
return true;
//First, double check that this copy of cAudio matches what we were compiled against
if(strcmp(CAUDIO_VERSION, version) == 0)
{
return true;
}
return false;
}
//Must return a unique name that identifies this plugin.