Fixed outputname null pointer crash in sdktools (
bug 4422, r=fyren)
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>
42 #define SMINTERFACE_NINVOKE_NAME "INativeInterface"
43 #define SMINTERFACE_NINVOKE_VERSION 1
45 #define NINVOKE_DEFAULT_MEMORY 16384
49 class INativeInvoker : public SourcePawn::ICallable
53 * @brief Virtual destructor - use delete to free this.
55 virtual ~INativeInvoker()
60 * @brief Begins a native call.
62 * During a call's preparation, no new calls may be started.
64 * @param pContext Context to invoke native under.
65 * @param name Name of native.
66 * @return True if native was found, false otherwise.
68 virtual bool Start(IPluginContext *pContext, const char *name) = 0;
71 * @brief Invokes the native. The preparation state is cleared immediately, meaning that
72 * this object can be re-used after or even from inside the native being called.
74 * @param result Optional pointer to retrieve a result.
75 * @return SP_ERROR return code.
77 virtual int Invoke(cell_t *result) = 0;
81 * @brief Factory for dealing with native invocations.
83 class INativeInterface : public SMInterface
87 * @brief Creates a virtual plugin. This can be used as an environment to invoke natives.
89 * IPluginRuntime objects must be freed with the delete operator.
91 * @param name Name, or NULL for anonymous.
92 * @param bytes Number of bytes for memory (NINVOKE_DEFAULT_MEMORY recommended).
93 * @return New runtime, or NULL on failure.
95 virtual IPluginRuntime *CreateRuntime(const char *name, size_t bytes) = 0;
98 * @brief Creates an object that can be used to invoke a single native code.
100 * @return New native invoker (free with delete).
102 virtual INativeInvoker *CreateInvoker() = 0;
106 #endif /* _INCLUDE_SOURCEMOD_INATIVEINVOKER_H_ */