Janic Inline Functions

The inline functions permit the declaration and expansion of a function without the need to perform call stack management. This saves clock cycles and enables compile time optimization that would not be possible using standard syntax conventions.

All variables are treated as N-dimensional arrays.

Inline functions are not recursive, but maybe they should be...

Overloading inline functions is possible by adding the "Overloaded" keyword. When the inline function is not overloaded then all other types will call the function.

	if (Apple(20,100)(A,B)) alert(A + ' ' + B);

	//==========================================================================================
	//				Apple
	//==========================================================================================
	inline function Apple(A as Integer, B as Integer) (C as Integer, D as Integer) overloaded
	{
		if (A < 10) return false;
		C = A + 10;
		D = B + 100;
		return true;
	}
	//==========================================================================================
	//				Apple
	//==========================================================================================
	inline function Apple(A as Real, B as Real) (C as Real, D as Real) overloaded
	{
		if (A < 10) return false;
		C = A + 10;
		D = B + 100;
		return true;
	}

	//==========================================================================================
	//				Apple (not overloaded)
	//==========================================================================================
	inline function Apple() 
	{
		throw ("Apple called with invalid parameters");
	}