/*
Реализация среды исполнения языка программирования
Объектно-ориентированный продвинутый векторный транслятор
Copyright © 2021, 2024 Малик Разработчик
Это свободная программа: вы можете перераспространять ее и/или изменять
ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
в каком она была опубликована Фондом свободного программного обеспечения;
либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной,
но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
общественной лицензии GNU.
Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
вместе с этой программой. Если это не так, см.
<https://www.gnu.org/licenses/>.
*/
package platform.dependent.mswindows;
import avtx.application.*;
import platform.dependent.mswindows.runtime.*;
service EntryPoint(Object)
{
public static int main() {
int exitCode = -1;
try
{
Win32Runtime.initialize();
try
{
try
{
exitCode = ((ConsoleApp) getAppType().newInstance()).execute();
}
catch(Throwable exception)
{
Thread main = Thread.current();
UnhandledExceptionHandler handler = main.unhandledExceptionHandler;
if(handler == null) handler = Thread.getDefaultUnhandledExceptionHandler();
handler.unhandledException(main, exception);
}
} finally
{
Win32Runtime.finalize();
}
}
catch(Throwable exception) { }
return exitCode;
}
private static Class getAppType() throws ClassNotFoundException {
for(Package[] packs = Package.enumerate(), int packidx = packs.length; packidx-- > 0; ) for(Class[] types = packs[packidx].enumerateTypes(), int typeidx = types.length; typeidx-- > 0; )
{
Class type = types[typeidx];
if(ConsoleApp.class.isAssignableFrom(type) && !type.isAbstract() && type.visibility >= ReflectiveObject.PUBLIC) return type;
}
throw new ClassNotFoundException(package.getResourceString("not-found.class.app"));
}
}