sourcepawn/jit/engine2.h
author David Anderson <dvander@alliedmods.net>
Sun Sep 01 00:23:44 2013 -0700 (2013-09-01)
changeset 4116 3e58428d988f
parent 4013 6201c1180e0e
permissions -rw-r--r--
Add an interpreter because. (bug 5902, r=ds).
dvander@4116
     1
// vim: set ts=4 sw=4 tw=99 noet:
dvander@2193
     2
#ifndef _INCLUDE_SOURCEPAWN_ENGINE_2_H_
dvander@2193
     3
#define _INCLUDE_SOURCEPAWN_ENGINE_2_H_
dvander@2193
     4
dvander@2193
     5
#include <sp_vm_api.h>
dvander@2193
     6
dvander@2193
     7
namespace SourcePawn
dvander@2193
     8
{
dvander@2193
     9
	/** 
dvander@2193
    10
	 * @brief Outlines the interface a Virtual Machine (JIT) must expose
dvander@2193
    11
	 */
dvander@2193
    12
	class SourcePawnEngine2 : public ISourcePawnEngine2
dvander@2193
    13
	{
dvander@2193
    14
	public:
dvander@2193
    15
		SourcePawnEngine2();
dvander@2193
    16
	public:
dvander@2193
    17
		unsigned int GetAPIVersion();
dvander@2193
    18
		const char *GetEngineName();
dvander@2193
    19
		const char *GetVersionString();
dvander@2193
    20
		IPluginRuntime *LoadPlugin(ICompilation *co, const char *file, int *err);
dvander@2193
    21
		SPVM_NATIVE_FUNC CreateFakeNative(SPVM_FAKENATIVE_FUNC callback, void *pData);
dvander@2193
    22
		void DestroyFakeNative(SPVM_NATIVE_FUNC func);
dvander@2193
    23
		IDebugListener *SetDebugListener(IDebugListener *listener);
dvander@2193
    24
		void SetProfiler(IProfiler *profiler);
dvander@2193
    25
		ICompilation *StartCompilation();
dvander@2193
    26
		const char *GetErrorString(int err);
dvander@2226
    27
		bool Initialize();
dvander@2226
    28
		void Shutdown();
dvander@2545
    29
		IPluginRuntime *CreateEmptyRuntime(const char *name, uint32_t memory);
dvander@4013
    30
		bool InstallWatchdogTimer(size_t timeout_ms);
dvander@4116
    31
dvander@4116
    32
		bool SetJitEnabled(bool enabled) {
dvander@4116
    33
			jit_enabled_ = enabled;
dvander@4116
    34
			return true;
dvander@4116
    35
	    }
dvander@4116
    36
dvander@4116
    37
		bool IsJitEnabled() {
dvander@4116
    38
			return jit_enabled_;
dvander@4116
    39
		}
dvander@2193
    40
	public:
dvander@2193
    41
		IProfiler *GetProfiler();
dvander@2193
    42
	private:
dvander@2193
    43
		IProfiler *m_Profiler;
dvander@4116
    44
		bool jit_enabled_;
dvander@2193
    45
	};
dvander@2193
    46
}
dvander@2193
    47
dvander@2193
    48
extern SourcePawn::SourcePawnEngine2 g_engine2;
dvander@2193
    49
dvander@2193
    50
#endif //_INCLUDE_SOURCEPAWN_ENGINE_2_H_