// iVProg - www.usp.br/line/ivprog // LInE - Free Education, Private Data import * as Models from "../ivprog_elements"; import { LocalizedStrings } from "../../services/localizedStringsService"; import * as AttribuitionsManagement from "./attribution"; import * as RepeatNTimesManagement from "./repeatNtimes"; export const VAR_OR_VALUE_TYPES = Object.freeze({ only_variable: 1, only_value: 2, only_function: 3, variable_and_function: 4, variable_and_value_opt: 5, value_and_function: 6, all: 7, }); export function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) { // Verificar se o objeto atual trata-se de uma chamada de funcao e conferir se possui a quantidade correta de parametros // Caso nao possua, tem que adicionar as variaveis que servirao de parametros: if (ref_object.function_called) { if (ref_object.function_called.parameters_list) { while (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) { if (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) { ref_object.parameters_list.pop(); } else { ref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true)); } } } } // Verificar agora, quando trata-se de chamada de funcao, se a passagem de parametro e' // por referencia ou por copia: var index_references = []; if (ref_object.function_called) { if (ref_object.function_called.parameters_list) { for (var i = 0; i < ref_object.function_called.parameters_list.length; i++) { if (ref_object.function_called.parameters_list[i].reference) { index_references.push(i) ref_object.parameters_list[i].reference = true ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.only_variable; if (ref_object.parameters_list[i].column) ref_object.parameters_list[i].column.reference_parent = true if (ref_object.parameters_list[i].row) ref_object.parameters_list[i].row.reference_parent = true } else { ref_object.parameters_list[i].reference = false; ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.all; if (ref_object.parameters_list[i].column) ref_object.parameters_list[i].column.reference_parent = false if (ref_object.parameters_list[i].row) ref_object.parameters_list[i].row.reference_parent = false } ref_object.parameters_list[i].reference_dimensions = ref_object.function_called.parameters_list[i].dimensions } } } let menu_var_or_value = '