Numerous code documentation fixups (
bug 5720, r=psychonic).
3 * =============================================================================
5 * Copyright (C) 2004-2009 AlliedModders LLC. All rights reserved.
6 * =============================================================================
8 * This program is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License, version 3.0, as published by the
10 * Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 * You should have received a copy of the GNU General Public License along with
18 * this program. If not, see <http://www.gnu.org/licenses/>.
20 * As a special exception, AlliedModders LLC gives you permission to link the
21 * code of this program (as well as its derivative works) to "Half-Life 2," the
22 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
23 * by the Valve Corporation. You must obey the GNU General Public License in
24 * all respects for all other code used. Additionally, AlliedModders LLC grants
25 * this exception to all derivative works. AlliedModders LLC defines further
26 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
27 * or <http://www.sourcemod.net/license.php>.
32 #ifndef _INCLUDE_SOURCEMOD_INATIVEINVOKER_H_
33 #define _INCLUDE_SOURCEMOD_INATIVEINVOKER_H_
36 * @file INativeInvoker.h
37 * @brief Interface for invoking natives.
40 #include <IShareSys.h>
41 #include <sp_vm_api.h>
43 #define SMINTERFACE_NINVOKE_NAME "INativeInterface"
44 #define SMINTERFACE_NINVOKE_VERSION 1
46 #define NINVOKE_DEFAULT_MEMORY 16384
50 class INativeInvoker : public SourcePawn::ICallable
54 * @brief Virtual destructor - use delete to free this.
56 virtual ~INativeInvoker()
61 * @brief Begins a native call.
63 * During a call's preparation, no new calls may be started.
65 * @param pContext Context to invoke native under.
66 * @param name Name of native.
67 * @return True if native was found, false otherwise.
69 virtual bool Start(SourcePawn::IPluginContext *pContext, const char *name) = 0;
72 * @brief Invokes the native. The preparation state is cleared immediately, meaning that
73 * this object can be re-used after or even from inside the native being called.
75 * @param result Optional pointer to retrieve a result.
76 * @return SP_ERROR return code.
78 virtual int Invoke(cell_t *result) = 0;
82 * @brief Factory for dealing with native invocations.
84 class INativeInterface : public SMInterface
88 * @brief Creates a virtual plugin. This can be used as an environment to invoke natives.
90 * IPluginRuntime objects must be freed with the delete operator.
92 * @param name Name, or NULL for anonymous.
93 * @param bytes Number of bytes for memory (NINVOKE_DEFAULT_MEMORY recommended).
94 * @return New runtime, or NULL on failure.
96 virtual SourcePawn::IPluginRuntime *CreateRuntime(const char *name, size_t bytes) = 0;
99 * @brief Creates an object that can be used to invoke a single native code.
101 * @return New native invoker (free with delete).
103 virtual INativeInvoker *CreateInvoker() = 0;
107 #endif /* _INCLUDE_SOURCEMOD_INATIVEINVOKER_H_ */