plugins/testsuite/fakenative1.sp
author David Anderson <dvander@alliedmods.net>
Fri Jul 11 06:51:21 2008 +0000 (2008-07-11)
branchrefac-jit
changeset 2192 7602d7fb60d9
parent 2168 c24a6fa957db
permissions -rw-r--r--
fixed a compat regression, forgot msvc does funky things with overloaded virtual calls
dvander@2168
     1
#include <sourcemod>
dvander@2168
     2
dvander@2168
     3
public Plugin:myinfo = 
dvander@2168
     4
{
dvander@2168
     5
	name = "FakeNative Testing Lab #1",
dvander@2168
     6
	author = "AlliedModders LLC",
dvander@2168
     7
	description = "Test suite #1 for dynamic natives",
dvander@2168
     8
	version = "1.0.0.0",
dvander@2168
     9
	url = "http://www.sourcemod.net/"
dvander@2168
    10
};
dvander@2168
    11
dvander@2168
    12
public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max)
dvander@2168
    13
{
dvander@2168
    14
	CreateNative("TestNative1", __TestNative1);
dvander@2168
    15
	CreateNative("TestNative2", __TestNative2);
dvander@2168
    16
	CreateNative("TestNative3", __TestNative3);
dvander@2168
    17
	CreateNative("TestNative4", __TestNative4);
dvander@2168
    18
	CreateNative("TestNative5", __TestNative5);
dvander@2168
    19
	return true;
dvander@2168
    20
}
dvander@2168
    21
dvander@2168
    22
public __TestNative1(Handle:plugin, numParams)
dvander@2168
    23
{
dvander@2168
    24
	PrintToServer("TestNative1: Plugin: %x params: %d", plugin, numParams);
dvander@2168
    25
	if (numParams == 4)
dvander@2168
    26
	{
dvander@2168
    27
		ThrowNativeError(SP_ERROR_NATIVE, "Four parameters ARE NOT ALLOWED lol");
dvander@2168
    28
	}
dvander@2168
    29
	return 5;
dvander@2168
    30
}
dvander@2168
    31
dvander@2168
    32
public __TestNative2(Handle:plugin, numParams)
dvander@2168
    33
{
dvander@2168
    34
	new String:buffer[512];
dvander@2168
    35
	new bytes;
dvander@2168
    36
	
dvander@2168
    37
	GetNativeString(1, buffer, sizeof(buffer), bytes);
dvander@2168
    38
	
dvander@2168
    39
	for (new i=0; i<bytes; i++)
dvander@2168
    40
	{
dvander@2168
    41
		buffer[i] = buffer[i] + 1;
dvander@2168
    42
	}
dvander@2168
    43
	
dvander@2168
    44
	SetNativeString(1, buffer, bytes+1);
dvander@2168
    45
}
dvander@2168
    46
dvander@2168
    47
public __TestNative3(Handle:plugin, numParams)
dvander@2168
    48
{
dvander@2168
    49
	new val1 = GetNativeCell(1);
dvander@2168
    50
	new val2 = GetNativeCellRef(2);
dvander@2168
    51
	
dvander@2168
    52
	SetNativeCellRef(2, val1+val2);
dvander@2168
    53
}
dvander@2168
    54
dvander@2168
    55
public __TestNative4(Handle:plugin, numParams)
dvander@2168
    56
{
dvander@2168
    57
	new size = GetNativeCell(3);
dvander@2168
    58
	new local[size];
dvander@2168
    59
	
dvander@2168
    60
	GetNativeArray(1, local, size);
dvander@2168
    61
	SetNativeArray(2, local, size);
dvander@2168
    62
}
dvander@2168
    63
dvander@2168
    64
public __TestNative5(Handle:plugin, numParams)
dvander@2168
    65
{
dvander@2168
    66
	new local = GetNativeCell(1);
dvander@2168
    67
	
dvander@2168
    68
	if (local)
dvander@2168
    69
	{
dvander@2168
    70
		FormatNativeString(2, 4, 5, GetNativeCell(3));
dvander@2168
    71
	} else {
dvander@2168
    72
		new len = GetNativeCell(3);
dvander@2168
    73
		new fmt_len;
dvander@2168
    74
		new String:buffer[len];
dvander@2168
    75
			
dvander@2168
    76
		GetNativeStringLength(4, fmt_len);
dvander@2168
    77
		
dvander@2168
    78
		new String:format[fmt_len];
dvander@2168
    79
		
dvander@2168
    80
		GetNativeString(2, buffer, len);
dvander@2168
    81
		GetNativeString(4, format, fmt_len);
dvander@2168
    82
		
dvander@2168
    83
		FormatNativeString(0, 0, 5, len, _, buffer, format);
dvander@2168
    84
	}
dvander@2168
    85
}