Move scared guts of core into logic (bug 5680, r=fyren).
--HG-- rename : core/ExtensionSys.cpp => core/logic/ExtensionSys.cpp rename : core/ExtensionSys.h => core/logic/ExtensionSys.h rename : core/HandleSys.cpp => core/logic/HandleSys.cpp rename : core/HandleSys.h => core/logic/HandleSys.h rename : core/NativeInvoker.cpp => core/logic/NativeInvoker.cpp rename : core/NativeInvoker.h => core/logic/NativeInvoker.h rename : core/NativeOwner.cpp => core/logic/NativeOwner.cpp rename : core/NativeOwner.h => core/logic/NativeOwner.h rename : core/PluginSys.cpp => core/logic/PluginSys.cpp rename : core/PluginSys.h => core/logic/PluginSys.h rename : core/ShareSys.cpp => core/logic/ShareSys.cpp rename : core/ShareSys.h => core/logic/ShareSys.h rename : core/smn_fakenatives.cpp => core/logic/smn_fakenatives.cpp rename : core/logic/AutoHandleRooter.h => public/AutoHandleRooter.h
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* vim: set ts=4 sw=4 tw=99 noet :
|
||||
* =============================================================================
|
||||
* SourceMod
|
||||
* Copyright (C) 2004-2009 AlliedModders LLC. All rights reserved.
|
||||
* =============================================================================
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, version 3.0, as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* As a special exception, AlliedModders LLC gives you permission to link the
|
||||
* code of this program (as well as its derivative works) to "Half-Life 2," the
|
||||
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
|
||||
* by the Valve Corporation. You must obey the GNU General Public License in
|
||||
* all respects for all other code used. Additionally, AlliedModders LLC grants
|
||||
* this exception to all derivative works. AlliedModders LLC defines further
|
||||
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
|
||||
* or <http://www.sourcemod.net/license.php>.
|
||||
*
|
||||
* Version: $Id$
|
||||
*/
|
||||
|
||||
#ifndef _INCLUDE_SOURCEMOD_AUTO_HANDLE_ROOTER_H_
|
||||
#define _INCLUDE_SOURCEMOD_AUTO_HANDLE_ROOTER_H_
|
||||
|
||||
#include <IHandleSys.h>
|
||||
|
||||
class AutoHandleRooter
|
||||
{
|
||||
public:
|
||||
AutoHandleRooter(Handle_t hndl)
|
||||
{
|
||||
if (hndl != BAD_HANDLE)
|
||||
this->hndl = handlesys->FastCloneHandle(hndl);
|
||||
else
|
||||
this->hndl = BAD_HANDLE;
|
||||
}
|
||||
|
||||
~AutoHandleRooter()
|
||||
{
|
||||
if (hndl != BAD_HANDLE)
|
||||
{
|
||||
HandleSecurity sec(g_pCoreIdent, g_pCoreIdent);
|
||||
handlesys->FreeHandle(hndl, &sec);
|
||||
}
|
||||
}
|
||||
|
||||
Handle_t getHandle()
|
||||
{
|
||||
return hndl;
|
||||
}
|
||||
private:
|
||||
Handle_t hndl;
|
||||
};
|
||||
|
||||
class AutoHandleCloner
|
||||
{
|
||||
Handle_t original;
|
||||
HandleSecurity sec;
|
||||
AutoHandleRooter ahr;
|
||||
public:
|
||||
AutoHandleCloner(Handle_t original, HandleSecurity sec)
|
||||
: original(original), sec(sec), ahr(original)
|
||||
{
|
||||
}
|
||||
|
||||
~AutoHandleCloner()
|
||||
{
|
||||
if (original != BAD_HANDLE)
|
||||
{
|
||||
handlesys->FreeHandle(original, &sec);
|
||||
}
|
||||
}
|
||||
|
||||
Handle_t getClone()
|
||||
{
|
||||
return ahr.getHandle();
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* _INCLUDE_SOURCEMOD_AUTO_HANDLE_ROOTER_H_ */
|
||||
|
||||
@@ -132,8 +132,10 @@ namespace SourceMod
|
||||
*
|
||||
* Note: This is bumped when IShareSys is changed, because IShareSys
|
||||
* itself is not versioned.
|
||||
*
|
||||
* V6 - added TestFeature() to IShareSys.
|
||||
*/
|
||||
#define SMINTERFACE_EXTENSIONAPI_VERSION 5
|
||||
#define SMINTERFACE_EXTENSIONAPI_VERSION 6
|
||||
|
||||
/**
|
||||
* @brief The interface an extension must expose.
|
||||
|
||||
+10
-1
@@ -52,7 +52,7 @@
|
||||
#include <sp_vm_types.h>
|
||||
|
||||
#define SMINTERFACE_HANDLESYSTEM_NAME "IHandleSys"
|
||||
#define SMINTERFACE_HANDLESYSTEM_VERSION 4
|
||||
#define SMINTERFACE_HANDLESYSTEM_VERSION 5
|
||||
|
||||
/** Specifies no Identity */
|
||||
#define DEFAULT_IDENTITY NULL
|
||||
@@ -364,6 +364,15 @@ namespace SourceMod
|
||||
* @return A new Handle_t, or 0 on failure.
|
||||
*/
|
||||
virtual Handle_t FastCloneHandle(Handle_t hndl) =0;
|
||||
|
||||
/**
|
||||
* @brief Type checks two handles.
|
||||
*
|
||||
* @param given Type to test.
|
||||
* @param actual Type to check for.
|
||||
* @return True if "given" is a subtype of "actual", false otherwise.
|
||||
*/
|
||||
virtual bool TypeCheck(HandleType_t given, HandleType_t actual) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+11
-1
@@ -43,7 +43,7 @@
|
||||
namespace SourceMod
|
||||
{
|
||||
#define SMINTERFACE_LIBRARYSYS_NAME "ILibrarySys"
|
||||
#define SMINTERFACE_LIBRARYSYS_VERSION 4
|
||||
#define SMINTERFACE_LIBRARYSYS_VERSION 5
|
||||
|
||||
enum FileTimeType
|
||||
{
|
||||
@@ -223,6 +223,16 @@ namespace SourceMod
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
virtual bool FileTime(const char *path, FileTimeType type, time_t *pTime) =0;
|
||||
|
||||
/**
|
||||
* @brief Retrieve the file component of the given path.
|
||||
*
|
||||
* @param buffer Output buffer.
|
||||
* @param maxlength Length of the output buffer.
|
||||
* @param path Path to search for a filename.
|
||||
* @return Number of bytes written to buffer, not including the null terminator.
|
||||
*/
|
||||
virtual size_t GetFileFromPath(char *buffer, size_t maxlength, const char *path) =0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+14
-1
@@ -38,7 +38,7 @@
|
||||
*/
|
||||
|
||||
#include <sp_vm_types.h>
|
||||
|
||||
#include <sp_vm_api.h>
|
||||
|
||||
namespace SourceMod
|
||||
{
|
||||
@@ -278,6 +278,19 @@ namespace SourceMod
|
||||
virtual void DropCapabilityProvider(IExtension *myself,
|
||||
IFeatureProvider *provider,
|
||||
const char *name) =0;
|
||||
|
||||
/**
|
||||
* Tests for a feature.
|
||||
*
|
||||
* @param rt Plugin to test.
|
||||
* @param type Feature type.
|
||||
* @param name Feature name.
|
||||
* @return Feature status.
|
||||
*/
|
||||
virtual FeatureStatus TestFeature(SourcePawn::IPluginRuntime *rt,
|
||||
FeatureType type,
|
||||
const char *name) =0;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user