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:
parent
ace0d842e5
commit
ac761f61ce
@ -2,7 +2,7 @@
|
|||||||
#define _INCLUDE_SOURCEMOD_PLUGINMNGR_INTERFACE_H_
|
#define _INCLUDE_SOURCEMOD_PLUGINMNGR_INTERFACE_H_
|
||||||
|
|
||||||
#include <IShareSys.h>
|
#include <IShareSys.h>
|
||||||
#include <sp_vm_context.h>
|
#include <sp_vm_api.h>
|
||||||
|
|
||||||
#define SMINTERFACE_PLUGINMANAGER_NAME "IPluginManager"
|
#define SMINTERFACE_PLUGINMANAGER_NAME "IPluginManager"
|
||||||
#define SMINTERFACE_PLUGINMANAGER_VERSION 1
|
#define SMINTERFACE_PLUGINMANAGER_VERSION 1
|
||||||
@ -27,6 +27,7 @@ namespace SourceMod
|
|||||||
enum PluginStatus
|
enum PluginStatus
|
||||||
{
|
{
|
||||||
Plugin_Running=0, /* Plugin is running */
|
Plugin_Running=0, /* Plugin is running */
|
||||||
|
Plugin_Loaded, /* Plugin is loaded but not initialized */
|
||||||
Plugin_Paused, /* Plugin is paused */
|
Plugin_Paused, /* Plugin is paused */
|
||||||
Plugin_Stopped, /* Plugin is paused for map changes, too */
|
Plugin_Stopped, /* Plugin is paused for map changes, too */
|
||||||
Plugin_Error, /* Plugin has a blocking error */
|
Plugin_Error, /* Plugin has a blocking error */
|
||||||
@ -46,59 +47,66 @@ namespace SourceMod
|
|||||||
/**
|
/**
|
||||||
* @brief Encapsulates a run-time plugin as maintained by SourceMod.
|
* @brief Encapsulates a run-time plugin as maintained by SourceMod.
|
||||||
*/
|
*/
|
||||||
class IPlugin : public IUnloadableParent
|
class IPlugin /*: public IUnloadableParent*/
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UnloadableParentType GetParentType()
|
/*UnloadableParentType GetParentType()
|
||||||
{
|
{
|
||||||
return ParentType_Module;
|
return ParentType_Module;
|
||||||
}
|
}*/
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief Returns the lifetime of a plugin.
|
* @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.
|
* @brief Returns the current API context being used in the plugin.
|
||||||
*
|
*
|
||||||
* @return Pointer to an IPluginContext, or NULL if not loaded.
|
* @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 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).
|
* @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.
|
* @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.
|
* @brief Returns the plugin status.
|
||||||
*/
|
*/
|
||||||
virtual PluginStatus GetStatus() =0;
|
virtual PluginStatus GetStatus() const =0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets whether the plugin is paused or not.
|
* @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;
|
virtual bool SetPauseState(bool paused) =0;
|
||||||
|
|
||||||
@ -110,12 +118,12 @@ namespace SourceMod
|
|||||||
/**
|
/**
|
||||||
* @brief Returns whether the plugin is locked from being updated on mapchange.
|
* @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.
|
* @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
|
class IPluginIterator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void ~IPluginIterator()
|
virtual ~IPluginIterator()
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
public:
|
public:
|
||||||
|
@ -255,6 +255,10 @@
|
|||||||
RelativePath="..\systems\LibrarySys.h"
|
RelativePath="..\systems\LibrarySys.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\systems\PluginSys.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
@ -263,6 +267,10 @@
|
|||||||
RelativePath="..\systems\LibrarySys.cpp"
|
RelativePath="..\systems\LibrarySys.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\systems\PluginSys.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
|
@ -56,11 +56,6 @@ IPluginContext *SourcePawnEngine::CreateBaseContext(sp_context_t *ctx)
|
|||||||
|
|
||||||
void SourcePawnEngine::FreeBaseContext(IPluginContext *ctx)
|
void SourcePawnEngine::FreeBaseContext(IPluginContext *ctx)
|
||||||
{
|
{
|
||||||
sp_context_t *_ctx = ctx->GetContext();
|
|
||||||
IVirtualMachine *vm = ctx->GetVirtualMachine();
|
|
||||||
|
|
||||||
vm->FreeContext(_ctx);
|
|
||||||
|
|
||||||
delete ctx;
|
delete ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ forward bool:OnPluginLoad(Handle:myself, bool:late, String:error[], err_max);
|
|||||||
*
|
*
|
||||||
* @noreturn
|
* @noreturn
|
||||||
*/
|
*/
|
||||||
forward OnPluginRequirements();
|
forward OnCreatePlugin();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the plugin is about to be unloaded.
|
* Called when the plugin is about to be unloaded.
|
||||||
|
@ -6,7 +6,7 @@ public Plugin:myinfo =
|
|||||||
author = "BAILOPAN",
|
author = "BAILOPAN",
|
||||||
description = "Tests Stuff",
|
description = "Tests Stuff",
|
||||||
version = "1.0.0.0",
|
version = "1.0.0.0",
|
||||||
url = "http://www.sourceomd.net/"
|
url = "http://www.sourcemod.net/"
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnPluginInit()
|
public OnPluginInit()
|
||||||
|
@ -343,7 +343,7 @@ namespace SourcePawn
|
|||||||
virtual IPluginContext *CreateBaseContext(sp_context_t *ctx) =0;
|
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.
|
* @param ctx Context pointer to free.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user