// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1367
globals
integer array C_nextFree
integer C_firstFree=0
integer C_maxIndex=0
integer array C_typeId
endglobals
native testFail takes string msg returns nothing
native testSuccess takes nothing returns nothing
function initGlobals takes nothing returns nothing
endfunction

function error takes string msg returns nothing
	call BJDebugMsg(msg + "\n" + "")
endfunction

function dispatch_C_test_C_A_getBar takes integer this returns integer
	local integer test_C_A_getBar_result
	local integer this_1
	local integer this_2
	local integer test_C_getFoo_result
	if C_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling C.getBar")
		else
			call error("Called C.getBar on invalid object.")
		endif
	endif
	set this_1 = this
	set this_2 = this_1
	if C_typeId[this_2] == 0 then
		if this_2 == 0 then
			call error("Nullpointer exception when calling C.getFoo")
		else
			call error("Called C.getFoo on invalid object.")
		endif
	endif
	set test_C_getFoo_result = 2
	set test_C_A_getBar_result = test_C_getFoo_result + 1
	return test_C_A_getBar_result
endfunction

function new_C takes nothing returns integer
	local integer this
	local integer this_1
	if C_firstFree == 0 then
		if C_maxIndex < 32768 then
			set C_maxIndex = C_maxIndex + 1
			set this_1 = C_maxIndex
			set C_typeId[this_1] = 1
		else
			call error("Out of memory: Could not create C.")
			set this_1 = 0
		endif
	else
		set C_firstFree = C_firstFree - 1
		set this_1 = C_nextFree[C_firstFree]
		set C_typeId[this_1] = 1
	endif
	set this = this_1
	return this
endfunction

function init_test takes nothing returns nothing
	local integer c = new_C()
	if dispatch_C_test_C_A_getBar(c) != 3 then
		call testFail("fail")
	endif
	call testSuccess()
endfunction

function main takes nothing returns nothing
	call initGlobals()
	call init_test()
endfunction

function config takes nothing returns nothing
endfunction