Startup.avt

Переключить прокрутку окна
Загрузить этот исходный код

/*
    Исходный код среды исполнения ПВТ-ОО.

    Этот исходный код является частью проекта ПВТ-ОО.

    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 () {  }
}