package _VisualDVM.ProjectData.SapforData.Functions;
import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;

import java.util.Vector;
public class FuncCallH extends FuncCall {
    //--
    public Vector<FuncCallH> calls = new Vector<>();
    //--
    //сообщения не проверяем.
    public FuncCallH(FuncCall funcCall_in) {
        file = funcCall_in.file;
        line = funcCall_in.line;
        funcName = funcCall_in.funcName;
        canBeInlined = funcCall_in.canBeInlined;
        parentLineOffset = funcCall_in.parentLineOffset;
    }
    //особый случай. только для мейна
    //его объявление - его же и вызов.
    //сообщения не проверяем.
    public FuncCallH(FuncInfo funcInfo) {
        file = funcInfo.file;
        line = funcInfo.line;
        funcName = funcInfo.funcName;
        canBeInlined = true;
        parentLineOffset = 0;
    }
    @Override
    public String getSelectionText() {
        return "вызов " + Utils_.Brackets(funcName) + " в строке " + line;
    }
    @Override
    public void SelectAllChildren(boolean select) {
        for (FuncCallH callH : calls)
            callH.Select(select);
    }
    @Override
    public void Select(boolean flag) {
        if (Global.mainModule.getPass(PassCode.SPF_GetGraphFunctions).isDone()) {
            super.Select(flag);
        } else {
            UI.Info("Для подстановки функций требуется выполнить проход " + Utils_.DQuotes(PassCode.SPF_GetGraphFunctions.getDescription()));
        }
    }
}
