sourcemod/plugins/include/handles.inc

98 lines
4.0 KiB
PHP
Raw Normal View History

/**
* vim: set ts=4 :
* =============================================================================
* SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This file is part of the SourceMod/SourcePawn SDK.
*
* 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$
*/
#if defined _handles_included
#endinput
#endif
#define _handles_included
/**
Introduce basic methodmaps (PR #38). commit 1e5213d43fdd170bb0c30af914a4e40610014b2b Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 04:09:27 2014 -0700 Quell MSVC C99 bugs. commit f2e166c5925fda49b5abeadc0aa0f9156b99cf11 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:59:23 2014 -0700 Fix varying levels of stupid memory errors. commit b0773d7be45345351ab1c1738681d5215a97f3f3 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:36:39 2014 -0700 Fix memory leak in parsing some control flow structures. commit 5aca55713cfc2dd09c5900132fc4a6be51e3e309 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:35:17 2014 -0700 Fix memory leak in struct parsing. commit b46ec5cd281b46177e83c4f0a4acac9cc1065c53 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:32:03 2014 -0700 Fix build. commit 17bbbb9a46bfc00862adca7d3e15369a48e9ac0f Merge: c083409 2107599 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 01:26:27 2014 -0700 Merge branch 'master' into methodmaps commit c083409b569abff13f24d3b8c47f8ff199036840 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 23:49:36 2014 -0700 Add VS2k13 support. commit b7993778494d538cb1c1965116030142a7f7765b Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 01:28:08 2014 -0700 Implement destructors. commit 1a340dec260d079ed1b79351ed7b50b58a997cea Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:08:04 2014 -0700 Add some tests. commit 12db52ee64eb009ead9294495e9034c63ab75b09 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:05:49 2014 -0700 Initial implementation of constructors. commit 074669a658caa2822aa864164b615a244c00a0bc Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:42:35 2014 -0700 Add simple test harness. commit 27c1e3cf14e1e6c5cf35c80c792cce2744b804d7 Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:15:42 2014 -0700 Big refactoring for new syntax. commit f3c37fdc919e76ee0815e2394cbe8d221f9fc0ca Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:12:54 2014 -0700 Refactor tests for the new syntax. commit 6211f392f8e722b907474cf380cfac4347e46b8e Author: David Anderson <dvander@alliedmods.net> Date: Wed Jun 18 22:25:48 2014 -0700 Make lexer tokens an enum. commit 5210b013756b0b00de3a61c6490685c768ff8cbd Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:48:15 2014 -0700 Add comment. commit 06688ff4aced14077dd21a9cc1db4c26c7420ff3 Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:46:10 2014 -0700 Allow |this| to be a base type of the methodmap. commit 05cf3682020e0e6d9f47b1a0a6727b9edbfe7622 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 22:11:58 2014 -0700 Unify duplicate typesymbol checking. commit 09161bf2691c8c1ed25b9b70fda01c336f21aa0b Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 19:53:36 2014 -0700 Close loophole that allowed methodmaps for enums. commit 5bb4aeba89fec47a4de7a7532d27830999d1fcb4 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:50:42 2014 -0700 Add tests and dbi/handle changes. commit b9203e2491daec2a8073874d6375949483778d14 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:38:29 2014 -0700 Ensure methodmap tags are fixed. commit 878b80fd87a2ea500d3a28ce2d53f616d1efe5e8 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:36:04 2014 -0700 Implement inheritance. commit 6ba9e004fbae18ad68056368ddd0affdc78659f1 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:31:00 2014 -0700 Refactor matchtag() to not be insane. commit 4ede6343b0682c6df98fa869153828e92f891bcc Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:50 2014 -0700 Fix indenting. commit e3ddef8916e3dd5f4ff0fe571d6e1c3acd163352 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:27 2014 -0700 Initial prototype.
2014-06-21 13:10:15 +02:00
* Preset Handle values.
*/
enum Handle // Tag disables introducing "Handle" as a symbol.
{
INVALID_HANDLE = 0,
};
/**
* Closes a Handle. If the handle has multiple copies open,
* it is not destroyed unless all copies are closed.
*
* @note Closing a Handle has a different meaning for each Handle type. Make
* sure you read the documentation on whatever provided the Handle.
*
* @param hndl Handle to close.
* @error Invalid handles will cause a run time error.
*/
native void CloseHandle(Handle hndl);
/**
* Clones a Handle. When passing handles in between plugins, caching handles
* can result in accidental invalidation when one plugin releases the Handle, or is its owner
* is unloaded from memory. To prevent this, the Handle may be "cloned" with a new owner.
*
* @note Usually, you will be cloning Handles for other plugins. This means that if you clone
* the Handle without specifying the new owner, it will assume the identity of your original calling
* plugin, which is not very useful. You should either specify that the receiving plugin should
* clone the handle on its own, or you should explicitly clone the Handle using the receiving plugin's
* identity Handle.
*
* @param hndl Handle to clone/duplicate.
* @param plugin Optional Handle to another plugin to mark as the new owner.
* If no owner is passed, the owner becomes the calling plugin.
* @return Handle on success, INVALID_HANDLE if not cloneable.
* @error Invalid handles will cause a run time error.
*/
native Handle CloneHandle(Handle hndl, Handle plugin=INVALID_HANDLE);
2015-08-14 07:08:47 +02:00
using __intrinsics__.Handle;
Introduce basic methodmaps (PR #38). commit 1e5213d43fdd170bb0c30af914a4e40610014b2b Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 04:09:27 2014 -0700 Quell MSVC C99 bugs. commit f2e166c5925fda49b5abeadc0aa0f9156b99cf11 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:59:23 2014 -0700 Fix varying levels of stupid memory errors. commit b0773d7be45345351ab1c1738681d5215a97f3f3 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:36:39 2014 -0700 Fix memory leak in parsing some control flow structures. commit 5aca55713cfc2dd09c5900132fc4a6be51e3e309 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:35:17 2014 -0700 Fix memory leak in struct parsing. commit b46ec5cd281b46177e83c4f0a4acac9cc1065c53 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:32:03 2014 -0700 Fix build. commit 17bbbb9a46bfc00862adca7d3e15369a48e9ac0f Merge: c083409 2107599 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 01:26:27 2014 -0700 Merge branch 'master' into methodmaps commit c083409b569abff13f24d3b8c47f8ff199036840 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 23:49:36 2014 -0700 Add VS2k13 support. commit b7993778494d538cb1c1965116030142a7f7765b Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 01:28:08 2014 -0700 Implement destructors. commit 1a340dec260d079ed1b79351ed7b50b58a997cea Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:08:04 2014 -0700 Add some tests. commit 12db52ee64eb009ead9294495e9034c63ab75b09 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:05:49 2014 -0700 Initial implementation of constructors. commit 074669a658caa2822aa864164b615a244c00a0bc Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:42:35 2014 -0700 Add simple test harness. commit 27c1e3cf14e1e6c5cf35c80c792cce2744b804d7 Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:15:42 2014 -0700 Big refactoring for new syntax. commit f3c37fdc919e76ee0815e2394cbe8d221f9fc0ca Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:12:54 2014 -0700 Refactor tests for the new syntax. commit 6211f392f8e722b907474cf380cfac4347e46b8e Author: David Anderson <dvander@alliedmods.net> Date: Wed Jun 18 22:25:48 2014 -0700 Make lexer tokens an enum. commit 5210b013756b0b00de3a61c6490685c768ff8cbd Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:48:15 2014 -0700 Add comment. commit 06688ff4aced14077dd21a9cc1db4c26c7420ff3 Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:46:10 2014 -0700 Allow |this| to be a base type of the methodmap. commit 05cf3682020e0e6d9f47b1a0a6727b9edbfe7622 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 22:11:58 2014 -0700 Unify duplicate typesymbol checking. commit 09161bf2691c8c1ed25b9b70fda01c336f21aa0b Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 19:53:36 2014 -0700 Close loophole that allowed methodmaps for enums. commit 5bb4aeba89fec47a4de7a7532d27830999d1fcb4 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:50:42 2014 -0700 Add tests and dbi/handle changes. commit b9203e2491daec2a8073874d6375949483778d14 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:38:29 2014 -0700 Ensure methodmap tags are fixed. commit 878b80fd87a2ea500d3a28ce2d53f616d1efe5e8 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:36:04 2014 -0700 Implement inheritance. commit 6ba9e004fbae18ad68056368ddd0affdc78659f1 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:31:00 2014 -0700 Refactor matchtag() to not be insane. commit 4ede6343b0682c6df98fa869153828e92f891bcc Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:50 2014 -0700 Fix indenting. commit e3ddef8916e3dd5f4ff0fe571d6e1c3acd163352 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:27 2014 -0700 Initial prototype.
2014-06-21 13:10:15 +02:00
/**
* Do not use this function. Returns if a Handle and its contents
* are readable, whereas INVALID_HANDLE only checks for the absence
* of a Handle.
*
* This function is intended only for tests where the validity of a
* Handle can absolutely not be known.
*
* Do not use this to check the return values of functions, or to
* check if timers should be closed (except in very rare cases).
* This function is for very specific usage and using it for general
* purpose routines can and will hide very subtle bugs.
*
* @param hndl Handle to test for validity.
* @return True if handle is valid, false otherwise.
*/
#pragma deprecated Do not use this function.
native bool IsValidHandle(Handle hndl);