src/squirrel_helper.hpp
author truelight
Fri, 16 Mar 2007 09:57:39 +0000
branchnoai
changeset 9437 28e0105114a4
parent 9434 2e71647c2c1c
child 9480 d071f885f918
permissions -rw-r--r--
(svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
     1
/* $Id$ */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
     2
9424
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
     3
/** @file squirrel_helper.hpp declarations and parts of the implementation of the class for convert code */
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
     4
9424
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
     5
#ifndef SQUIRREL_HELPER_HPP
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
     6
#define SQUIRREL_HELPER_HPP
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
     7
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
     8
#include <squirrel.h>
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
     9
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    10
/**
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    11
 * The Squirrel convert class. It doesn't have an instance, the methods only are used.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    12
 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    13
class SQConvert {
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    14
public:
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    15
	/**
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    16
	 * Special class to make it possible for the compiler to pick the correct GetParam().
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    17
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    18
	template <typename T> class ForceType { };
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    19
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    20
	/**
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    21
	 * To return a value to squirrel, we call this function. It converts to the right format.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    22
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    23
	template <typename T> static int Return(HSQUIRRELVM vm, T t);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    24
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    25
	/**
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    26
	 * To get a param from squirrel, we call this function. It converts to the right format.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    27
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    28
	template <typename T> static T GetParam(ForceType<T>, HSQUIRRELVM vm, int index);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    29
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    30
	/**
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    31
	 * The real C++ caller for function with a return value and 0 params.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    32
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    33
	template <typename CL, typename RT>
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    34
	static int SQCall(CL *instance, RT (CL::*func)(), HSQUIRRELVM vm)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    35
	{
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    36
		return Return(vm, (instance->*func)());
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    37
	}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    38
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    39
	/**
9437
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    40
	 * The real C++ caller for function with no return value and 0 params.
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    41
	 */
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    42
	template <typename CL>
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    43
	static int SQCall(CL *instance, void (CL::*func)(), HSQUIRRELVM vm)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    44
	{
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    45
		(instance->*func)();
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    46
		return 0;
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    47
	}
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    48
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    49
	/**
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    50
	 * The real C++ caller for function with a return value and 1 param.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    51
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    52
	template <typename CL, typename RT, typename P1>
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    53
	static int SQCall(CL *instance, RT (CL::*func)(P1), HSQUIRRELVM vm)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    54
	{
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    55
		return Return(vm, (instance->*func)(
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    56
						GetParam(ForceType<P1>(), vm, 2)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    57
					));
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    58
	}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    59
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    60
	/**
9437
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    61
	 * The real C++ caller for function with no return value and 1 param.
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    62
	 */
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    63
	template <typename CL, typename P1>
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    64
	static int SQCall(CL *instance, void (CL::*func)(P1), HSQUIRRELVM vm)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    65
	{
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    66
		(instance->*func)(
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    67
						GetParam(ForceType<P1>(), vm, 2)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    68
					);
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    69
		return 0;
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    70
	}
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    71
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    72
	/**
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    73
	 * The real C++ caller for function with a return value and 2 params.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    74
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    75
	template <typename CL, typename RT, typename P1, typename P2>
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    76
	static int SQCall(CL *instance, RT (CL::*func)(P1, P2), HSQUIRRELVM vm)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    77
	{
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    78
		return Return(vm, (instance->*func)(
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    79
						GetParam(ForceType<P1>(), vm, 2),
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    80
						GetParam(ForceType<P2>(), vm, 3)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    81
					));
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    82
	}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    83
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    84
	/**
9437
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    85
	 * The real C++ caller for function with no return value and 2 params.
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    86
	 */
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    87
	template <typename CL, typename P1, typename P2>
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    88
	static int SQCall(CL *instance, void (CL::*func)(P1, P2), HSQUIRRELVM vm)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    89
	{
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    90
		(instance->*func)(
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    91
						GetParam(ForceType<P1>(), vm, 2),
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    92
						GetParam(ForceType<P2>(), vm, 3)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    93
					);
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    94
		return 0;
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    95
	}
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    96
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
    97
	/**
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    98
	 * The real C++ caller for function with a return value and 3 params.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
    99
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   100
	template <typename CL, typename RT, typename P1, typename P2, typename P3>
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   101
	static int SQCall(CL *instance, RT (CL::*func)(P1, P2, P3), HSQUIRRELVM vm)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   102
	{
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   103
		return Return(vm, (instance->*func)(
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   104
						GetParam(ForceType<P1>(), vm, 2),
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   105
						GetParam(ForceType<P2>(), vm, 3),
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   106
						GetParam(ForceType<P3>(), vm, 4)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   107
					));
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   108
	}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   109
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   110
	/**
9437
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   111
	 * The real C++ caller for function with no return value and 3 params.
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   112
	 */
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   113
	template <typename CL, typename P1, typename P2, typename P3>
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   114
	static int SQCall(CL *instance, void (CL::*func)(P1, P2, P3), HSQUIRRELVM vm)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   115
	{
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   116
		(instance->*func)(
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   117
						GetParam(ForceType<P1>(), vm, 2),
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   118
						GetParam(ForceType<P2>(), vm, 3),
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   119
						GetParam(ForceType<P3>(), vm, 4)
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   120
					);
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   121
		return 0;
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   122
	}
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   123
28e0105114a4 (svn r9248) [NoAI] -Add: added templates for void func() to SQ functions
truelight
parents: 9434
diff changeset
   124
	/**
9387
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   125
	 * A general template for all callback functions from Squirrel.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   126
	 *  In here the function_proc is recovered, and the SQCall is called that
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   127
	 *  can handle this exact amount of params.
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   128
	 */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   129
	template <typename CL, typename Func>
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   130
	static SQInteger DefSQCallback(HSQUIRRELVM vm)
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   131
	{
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   132
		/* Find the amount of params we got */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   133
		int nparam = sq_gettop(vm);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   134
		SQUserPointer ptr = NULL;
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   135
		SQUserPointer instance = NULL;
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   136
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   137
		/* Get the 'real' instance of this class */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   138
		sq_getinstanceup(vm, 1, &instance, 0);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   139
		/* Get the real function pointer */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   140
		sq_getuserdata(vm, nparam, &ptr, 0);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   141
		/* Deligate it to a template that can handle this specific function */
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   142
		return SQCall((CL *)instance, *(Func *)ptr, vm);
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   143
	}
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   144
};
4255a0a2d272 (svn r9179) [NoAI] -Add: added templates that makes adding classes to squirrel very easy
truelight
parents:
diff changeset
   145
9424
90e9aa6326f3 (svn r9226) [NoAI] -Change: moved some ai/squirrel files to root
truelight
parents: 9387
diff changeset
   146
#endif /* SQUIRREL_HELPER_HPP */