// 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
integer wurst_stack_depth=0
string array wurst_stack
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, string w__wurst_stackPos returns nothing
	local integer stacktraceIndex
	local integer stacktraceLimit
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set w__wurst_stackPos = ""
	set stacktraceIndex = wurst_stack_depth
	set stacktraceLimit = 0
	loop
		set stacktraceIndex = stacktraceIndex - 1
		set stacktraceLimit = stacktraceLimit + 1
		exitwhen stacktraceLimit > 20 or stacktraceIndex < 0
		set w__wurst_stackPos = w__wurst_stackPos + "\n   " + wurst_stack[stacktraceIndex]
	endloop
	call BJDebugMsg(msg + "\n" + w__wurst_stackPos)
	set wurst_stack_depth = wurst_stack_depth - 1
endfunction

function dispatch_C_test_C_A_getBar takes integer this, string w__wurst_stackPos returns integer
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	if C_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling C.getBar", "when calling error in override2.wurst, line 12")
		else
			call error("Called C.getBar on invalid object.", "when calling error in override2.wurst, line 12")
		endif
	endif
	set wurst_stack[wurst_stack_depth] = "when calling getBar in override2.wurst, line 12"
	set wurst_stack_depth = wurst_stack_depth + 1
	set wurst_stack[wurst_stack_depth] = "when calling getFoo in override2.wurst, line 13"
	set wurst_stack_depth = wurst_stack_depth + 1
	if C_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling C.getFoo", "when calling error in override2.wurst, line 20")
		else
			call error("Called C.getFoo on invalid object.", "when calling error in override2.wurst, line 20")
		endif
	endif
	set wurst_stack_depth = wurst_stack_depth - 1 - 1 - 1
	return 3
endfunction

function new_C takes string w__wurst_stackPos returns integer
	local integer this
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set wurst_stack[wurst_stack_depth] = "when calling alloc_C in override2.wurst, line 17"
	set wurst_stack_depth = wurst_stack_depth + 1
	if C_firstFree == 0 then
		if C_maxIndex < 32768 then
			set C_maxIndex = C_maxIndex + 1
			set this = C_maxIndex
			set C_typeId[this] = 1
		else
			call error("Out of memory: Could not create C.", "when calling error in override2.wurst, line 17")
			set this = 0
		endif
	else
		set C_firstFree = C_firstFree - 1
		set this = C_nextFree[C_firstFree]
		set C_typeId[this] = 1
	endif
	set wurst_stack_depth = wurst_stack_depth - 1 - 1
	return this
endfunction

function init_test takes string w__wurst_stackPos returns nothing
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	if dispatch_C_test_C_A_getBar(new_C("when calling new_C in override2.wurst, line 30"), "when calling getBar in override2.wurst, line 32") != 3 then
		call testFail("fail")
	endif
	call testSuccess()
	set wurst_stack_depth = wurst_stack_depth - 1
endfunction

function main takes nothing returns nothing
	call initGlobals()
	call init_test("when calling init_test in override2.wurst, line 1")
endfunction

function config takes nothing returns nothing
endfunction