/*
Исходный код среды исполнения ПВТ-ОО.
Этот исходный код является частью проекта ПВТ-ОО.
Copyright © 2021 Малик Разработчик
Это свободная программа: вы можете перераспространять её и/или
изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
в каком она была опубликована Фондом свободного программного обеспечения;
либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она может быть полезна,
но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
общественной лицензии GNU.
Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
вместе с этой программой. Если это не так, см.
<http://www.gnu.org/licenses/>.
*/
package platform.dependent;
import avtx.consoleapp.*;
public final class Startup(Object)
{
private static void main() {
MSWindowsRuntime.initialize();
try
{
try
{
int statusCode = ((ConsoleApp) getAppType().newInstance()).main(ProcessEnvironment.instance.getArguments());
if(statusCode != 0) Runtime.getInstance().exit(statusCode);
}
catch(Throwable exception)
{
Thread main = Thread.current();
UncaughtExceptionHandler handler = main.uncaughtExceptionHandler;
if(handler == null) handler = Thread.getDefaultUncaughtExceptionHandler();
handler.uncaughtException(main, exception);
}
}
catch(Throwable exception) { }
}
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 >= Class.PUBLIC) return type;
}
throw new ClassNotFoundException("реализация класса ConsoleApp не найдена в этом исполняемом модуле");
}
private () { }
}