sourcepawn/jit/x86/dll_exports.cpp
author David Anderson <dvander@alliedmods.net>
Mon Jul 23 19:12:54 2007 +0000 (2007-07-23)
changeset 1147 437e1f00a590
parent 653 ef60870067ff
child 1330 ab94316bb52b
permissions -rw-r--r--
new jit api versioning scheme for amb398
dvander@367
     1
/**
ds@653
     2
 * vim: set ts=4 :
dvander@371
     3
 * ================================================================
dvander@371
     4
 * SourcePawn (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@371
     5
 * ================================================================
dvander@367
     6
 *
dvander@367
     7
 * This file is not open source and may not be copied without explicit
dvander@367
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@367
     9
 * in whole or significant part.
dvander@367
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@367
    11
 *
dvander@367
    12
 * Version: $Id$
dvander@367
    13
 */
dvander@367
    14
dvander@157
    15
#include <sp_vm_api.h>
dvander@350
    16
#include <malloc.h>
dvander@157
    17
#include "jit_x86.h"
dvander@157
    18
#include "dll_exports.h"
dvander@157
    19
dvander@157
    20
SourcePawn::ISourcePawnEngine *engine = NULL;
dvander@601
    21
JITX86 g_jit;
dvander@157
    22
dvander@1147
    23
EXPORTFUNC int GiveEnginePointer2(SourcePawn::ISourcePawnEngine *engine_p, unsigned int api_version)
dvander@157
    24
{
dvander@157
    25
	engine = engine_p;
dvander@161
    26
dvander@1147
    27
	if (api_version > SOURCEPAWN_ENGINE_API_VERSION)
dvander@1147
    28
	{
dvander@1147
    29
		return SP_ERROR_PARAM;
dvander@1147
    30
	}
dvander@1147
    31
dvander@1147
    32
	return SP_ERROR_NONE;
dvander@157
    33
}
dvander@157
    34
dvander@157
    35
EXPORTFUNC unsigned int GetExportCount()
dvander@157
    36
{
dvander@157
    37
	return 1;
dvander@157
    38
}
dvander@157
    39
dvander@157
    40
EXPORTFUNC SourcePawn::IVirtualMachine *GetExport(unsigned int exportnum)
dvander@157
    41
{
dvander@157
    42
	/* Don't return anything if we're not initialized yet */
dvander@157
    43
	if (!engine)
dvander@157
    44
	{
dvander@157
    45
		return NULL;
dvander@157
    46
	}
dvander@157
    47
dvander@157
    48
	/* We only have one export - 0 */
dvander@157
    49
	if (exportnum)
dvander@157
    50
	{
dvander@157
    51
		return NULL;
dvander@157
    52
	}
dvander@157
    53
dvander@601
    54
	return &g_jit;
dvander@157
    55
}
dvander@350
    56
dvander@350
    57
#if defined __linux__
dvander@350
    58
extern "C" void __cxa_pure_virtual(void)
dvander@350
    59
{
dvander@350
    60
}
dvander@350
    61
dvander@350
    62
void *operator new(size_t size)
dvander@350
    63
{
dvander@350
    64
	return malloc(size);
dvander@350
    65
}
dvander@350
    66
dvander@350
    67
void *operator new[](size_t size) 
dvander@350
    68
{
dvander@350
    69
	return malloc(size);
dvander@350
    70
}
dvander@350
    71
dvander@350
    72
void operator delete(void *ptr) 
dvander@350
    73
{
dvander@350
    74
	free(ptr);
dvander@350
    75
}
dvander@350
    76
dvander@350
    77
void operator delete[](void * ptr)
dvander@350
    78
{
dvander@350
    79
	free(ptr);
dvander@350
    80
}
dvander@350
    81
#endif
dvander@350
    82