initial import of plugin loading code

little fixes to API
temporarily commented dependency iface until final

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40177
This commit is contained in:
David Anderson 2006-11-10 07:49:38 +00:00
parent ace0d842e5
commit ac761f61ce
6 changed files with 37 additions and 26 deletions

View File

@ -2,7 +2,7 @@
#define _INCLUDE_SOURCEMOD_PLUGINMNGR_INTERFACE_H_
#include <IShareSys.h>
#include <sp_vm_context.h>
#include <sp_vm_api.h>
#define SMINTERFACE_PLUGINMANAGER_NAME "IPluginManager"
#define SMINTERFACE_PLUGINMANAGER_VERSION 1
@ -27,6 +27,7 @@ namespace SourceMod
enum PluginStatus
{
Plugin_Running=0, /* Plugin is running */
Plugin_Loaded, /* Plugin is loaded but not initialized */
Plugin_Paused, /* Plugin is paused */
Plugin_Stopped, /* Plugin is paused for map changes, too */
Plugin_Error, /* Plugin has a blocking error */
@ -46,59 +47,66 @@ namespace SourceMod
/**
* @brief Encapsulates a run-time plugin as maintained by SourceMod.
*/
class IPlugin : public IUnloadableParent
class IPlugin /*: public IUnloadableParent*/
{
public:
UnloadableParentType GetParentType()
/*UnloadableParentType GetParentType()
{
return ParentType_Module;
}
}*/
public:
/**
* @brief Returns the lifetime of a plugin.
*/
virtual PluginLifetime GetLifetime() =0;
virtual PluginLifetime GetLifetime() const =0;
/**
* @brief Returns the current API context being used in the plugin.
*
* @return Pointer to an IPluginContext, or NULL if not loaded.
*/
virtual SourcePawn::IPluginContext *GetBaseContext() =0;
virtual SourcePawn::IPluginContext *GetBaseContext() const =0;
/**
* @brief Returns the context structure being used in the plugin.
*
* @brief Pointer to an sp_context_t, or NULL if not loaded.
* @return Pointer to an sp_context_t, or NULL if not loaded.
*/
virtual sp_context_t *GetContext() =0;
virtual sp_context_t *GetContext() const =0;
/**
* @brief Returns information about the plugin.
* @brief Returns the plugin file structure.
*
* @brief Pointer to an sm_plugininfo_t, or NULL if not loaded.
* @return Pointer to an sp_plugin_t, or NULL if not loaded.
*/
virtual sm_plugininfo_t *GetPublicInfo() =0;
virtual const sp_plugin_t *GetPluginStructure() const =0;
/**
* @brief Returns information about the plugin by reference.
*
* @return Pointer to a sm_plugininfo_t object, NULL if plugin is not loaded.
*/
virtual const sm_plugininfo_t *GetPublicInfo() const =0;
/**
* @brief Returns the plugin filename (relative to plugins dir).
*/
virtual const char *GetFilename() =0;
virtual const char *GetFilename() const =0;
/**
* @brief Returns true if a plugin is in debug mode, false otherwise.
*/
virtual bool IsDebugging() =0;
virtual bool IsDebugging() const =0;
/**
* @brief Returns the plugin status.
*/
virtual PluginStatus GetStatus() =0;
virtual PluginStatus GetStatus() const =0;
/**
* @brief Sets whether the plugin is paused or not.
*
* @return True on successful pause, false otherwise.
* @return True on successful state change, false otherwise.
*/
virtual bool SetPauseState(bool paused) =0;
@ -110,12 +118,12 @@ namespace SourceMod
/**
* @brief Returns whether the plugin is locked from being updated on mapchange.
*/
virtual bool GetLockForUpdates() =0;
virtual bool GetLockForUpdates() const =0;
/**
* @brief Returns the unique serial number of a plugin.
*/
virtual unsigned int GetSerial() =0;
virtual unsigned int GetSerial() const =0;
};
@ -125,7 +133,7 @@ namespace SourceMod
class IPluginIterator
{
public:
virtual void ~IPluginIterator()
virtual ~IPluginIterator()
{
};
public:

View File

@ -255,6 +255,10 @@
RelativePath="..\systems\LibrarySys.h"
>
</File>
<File
RelativePath="..\systems\PluginSys.h"
>
</File>
</Filter>
<Filter
Name="Source Files"
@ -263,6 +267,10 @@
RelativePath="..\systems\LibrarySys.cpp"
>
</File>
<File
RelativePath="..\systems\PluginSys.cpp"
>
</File>
</Filter>
</Filter>
<Filter

View File

@ -56,11 +56,6 @@ IPluginContext *SourcePawnEngine::CreateBaseContext(sp_context_t *ctx)
void SourcePawnEngine::FreeBaseContext(IPluginContext *ctx)
{
sp_context_t *_ctx = ctx->GetContext();
IVirtualMachine *vm = ctx->GetVirtualMachine();
vm->FreeContext(_ctx);
delete ctx;
}

View File

@ -52,7 +52,7 @@ forward bool:OnPluginLoad(Handle:myself, bool:late, String:error[], err_max);
*
* @noreturn
*/
forward OnPluginRequirements();
forward OnCreatePlugin();
/**
* Called when the plugin is about to be unloaded.

View File

@ -6,7 +6,7 @@ public Plugin:myinfo =
author = "BAILOPAN",
description = "Tests Stuff",
version = "1.0.0.0",
url = "http://www.sourceomd.net/"
url = "http://www.sourcemod.net/"
}
public OnPluginInit()

View File

@ -343,7 +343,7 @@ namespace SourcePawn
virtual IPluginContext *CreateBaseContext(sp_context_t *ctx) =0;
/**
* Frees a context.
* Frees a base context. Does not free the sp_context_t it holds.
*
* @param ctx Context pointer to free.
*/