array MyInterface_nextFree305 integer MyInterface_firstFree819 integer MyInterface_maxIndex207 array MyInterface_typeId214 integer MyInterface_firstFree819 = 0 integer MyInterface_maxIndex207 = 0 function initGlobals534() { } function main895() { initGlobals534(); init_Test937(); } function config183() { } function init_Test937() { local integer a185 local integer b140 a_185 = new_MyInterfaceAbstractImpl162(); b_140 = new_MyInterfaceImpl944(); println151(dispatch_MyInterface_Test_MyInterface_getStr195(a_185)); println151(dispatch_MyInterface_Test_MyInterface_getStr195(b_140)); if ((dispatch_MyInterface_Test_MyInterface_getStr195(a_185) == "AAbstract") and (dispatch_MyInterface_Test_MyInterface_getStr195(b_140) == "MyInterfaceImpl")) { testSuccess164(); } else { }; } IS_NATIVE function println151(string s630) { } IS_NATIVE function testSuccess164() { } function new_MyInterfaceAbstractImpl162() returns integer { local integer this856 local integer this147 if (MyInterface_firstFree_819 == 0) { if (MyInterface_maxIndex_207 < 32768) { MyInterface_maxIndex_207 = (MyInterface_maxIndex_207 + 1); this_147 = MyInterface_maxIndex_207; MyInterface_typeId_214[this_147] = 3; } else { error113("Out of memory: Could not create MyInterfaceAbstractImpl."); this_147 = 0; }; } else { MyInterface_firstFree_819 = (MyInterface_firstFree_819 - 1); this_147 = MyInterface_nextFree_305[MyInterface_firstFree_819]; MyInterface_typeId_214[this_147] = 3; }; this_856 = this_147; return this_856; } function new_MyInterfaceImpl944() returns integer { local integer this158 local integer this779 if (MyInterface_firstFree_819 == 0) { if (MyInterface_maxIndex_207 < 32768) { MyInterface_maxIndex_207 = (MyInterface_maxIndex_207 + 1); this_779 = MyInterface_maxIndex_207; MyInterface_typeId_214[this_779] = 4; } else { error113("Out of memory: Could not create MyInterfaceImpl."); this_779 = 0; }; } else { MyInterface_firstFree_819 = (MyInterface_firstFree_819 - 1); this_779 = MyInterface_nextFree_305[MyInterface_firstFree_819]; MyInterface_typeId_214[this_779] = 4; }; this_158 = this_779; return this_158; } function error113(string msg148) { $debugPrint661((msg_148 + (" " + #getStackTrace()))); } function dispatch_MyInterface_Test_MyInterface_getStr195(integer this122) returns string { local string Test_MyInterface_getStr_result938 local integer this830 local integer this614 local string Test_MyInterfaceAbstract_getSome_result658 if (MyInterface_typeId_214[this_122] == 0) { if (this_122 == 0) { error113("Nullpointer exception when calling MyInterface.getStr"); } else { error113("Called MyInterface.getStr on invalid object."); }; } else { }; if (MyInterface_typeId_214[this_122] <= 3) { this_830 = this_122; this_614 = this_830; if (MyInterface_typeId_214[this_614] == 0) { if (this_614 == 0) { error113("Nullpointer exception when calling MyInterfaceAbstract.getSome"); } else { error113("Called MyInterfaceAbstract.getSome on invalid object."); }; } else { }; Test_MyInterfaceAbstract_getSome_result_658 = "AAbstract"; Test_MyInterface_getStr_result_938 = Test_MyInterfaceAbstract_getSome_result_658; } else { Test_MyInterface_getStr_result_938 = "MyInterfaceImpl"; }; return Test_MyInterface_getStr_result_938; }