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_
|
||||
|
||||
#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:
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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()
|
||||
|
@ -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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user