public Funcion(TeDeU tipoRetorno, List <NodoDeclararParametro> nodosDeclararParametro, List <Instruccion> listaInstrucciones, ZContenedor ambitoCapturado) { this.tipoRetorno = tipoRetorno; this.nodosDeclararParametro = nodosDeclararParametro; this.listaInstrucciones = listaInstrucciones; this.ambitoCapturado = ambitoCapturado; //se valida que el ambito capturado sea una funcion }
public ZLista(List <ZContenedor> elementos, TeDeU origen) : base(null, origen) { this.Elementos = elementos; cargarFuncionInsert(); cargarFuncionGet(); cargarFuncionSet(); cargarFuncionRemove(); cargarFuncionSize(); cargarFuncionClear(); cargarFuncionContains(); }
/// <summary> /// esta funcion verifia que la funcion invocada contenga los mismos argumentos /// </summary> /// <param name="argumentos"></param> /// <returns>bool</returns> public bool mismFirma(List <ZContenedor> argumentos) { if (cantParametros() != argumentos.Count) { return(false); } for (int x = 0; x < argumentos.Count; x++) { TeDeU tipo1 = (TeDeU)nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado); TeDeU tipo2 = argumentos[x].Origen; if (tipo1 != tipo2 && tipo2 != TiposPrimitivos.tipoNulo) { return(false); } } //son iguales return(true); }
/// <summary> /// esta funcion verifica si no hay una funcion con la misma firma, de lo contrario se agrega al entrono /// </summary> /// <param name="funcion"></param> /// <returns></returns> public bool mismFirma(Funcion funcion) { if (cantParametros() != funcion.cantParametros()) { return(false); } for (int x = 0; x < cantParametros(); x++) { TeDeU tipo1 = (TeDeU)nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado); TeDeU tipo2 = (TeDeU)funcion.nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado); if (tipo1 != tipo2) { return(false); } } //son iguales return(true); }
// public FuncionNativa(TeDeU tipoRetorno, List <NodoDeclararParametro> nodosDeclararParametro, ZContenedor ambitoCapturado, funcionNativaDelegado f) : base(tipoRetorno, nodosDeclararParametro, new List <Instruccion>(), ambitoCapturado) { _f = f; }