ConsoleApp.avt

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

/*
    Реализация среды исполнения языка программирования
    Объектно-ориентированный продвинутый векторный транслятор

    Copyright © 2021, 2024 Малик Разработчик

    Это свободная программа: вы можете перераспространять ее и/или изменять
    ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она будет полезной,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <https://www.gnu.org/licenses/>.
*/

package avtx.application;

import avt.io.*;
import platform.independent.filesystem.*;

public abstract class ConsoleApp(Object)
{
    protected () {  }

    public abstract int main(String[] args) throws Exception;

    public void setCurrentDirectory(String directoryName) throws DirectoryNotFoundException, DirectoryOperationException, IOException {
        System.getCurrentProcessEnv().setCurrentDirectory(directoryName);
    }

    public final int execute() throws Exception {
        StackTraceElement callerCode = Thread.callerCodeTrace();
        String callerTypeName = callerCode.type.canonicalName;
        String callerMethodName = callerCode.methodName;
        if(callerTypeName == null || callerMethodName == null || !callerTypeName.equals(System.getEntryPointTypeCanonicalName()) || !callerMethodName.equals("main"))
        {
            throw new SecurityException(avt.lang.package.getResourceString("security.caller"));
        }
        return main((String[]) System.getCurrentProcessEnv().arguments.clone());
    }

    public String currentDirectory { read = System.getCurrentProcessEnv().currentDirectory }
}