package com.hcarralero.toljava; /** * Representa a una instancia de la Máquina Virtual de TOL. * * @author Humberto Andrés Carralero López (hcarralero@gmail.com) * @version 1.0 * @see com.hcarralero.toljava.TOLMachineException */ public class TOLMachine { //Inicializa una instancia de TOL private native String nativeInitTOL(); //Ejecuta código TOL private native Object[] nativeExecute(String code); //Ejecuta código TOL private native Object nativeCallCode(String codeName, Object[] parameters); //Obtiene una variable del entorno de ejecución de TOL private native Object nativeGetVariable(String varName); //Cambia el valor a una variable del entorno ejecución de TOL private native Object nativeSetVariableValue(String varName, TOLLObject varValue); //Obtiene un arreglo con todas las viariables tipo Text definidas en TOL private native TOLVariable[] nativeGetTextVariables(); //Obtiene un arreglo con todas las viariables tipo Real definidas en TOL private native TOLVariable[] nativeGetRealVariables(); //Obtiene un arreglo con todas las viariables tipo Date definidas en TOL private native TOLVariable[] nativeGetDateVariables(); //Obtiene un arreglo con todas las viariables tipo Complex definidas en TOL private native TOLVariable[] nativeGetComplexVariables(); //Obtiene un arreglo con todas las viariables tipo Matrix definidas en TOL private native TOLVariable[] nativeGetMatrixVariables(); //Obtiene un arreglo con todas las viariables tipo VMatrix definidas en TOL private native TOLVariable[] nativeGetVMatrixVariables(); //Obtiene un arreglo con todas las viariables tipo Polyn definidas en TOL private native TOLVariable[] nativeGetPolynVariables(); //Obtiene un arreglo con todas las viariables tipo Polyn definidas en TOL private native TOLVariable[] nativeGetRatioVariables(); //Obtiene un arreglo con todas las viariables tipo Code definidas en TOL private native TOLVariable[] nativeGetCodeVariables(); //Obtiene un arreglo con todas las viariables tipo Serie definidas en TOL private native TOLVariable[] nativeGetSerieVariables(); //Obtiene un arreglo con todas las viariables tipo TimeSet definidas en TOL private native TOLVariable[] nativeGetTimeSetVariables(); //Obtiene un arreglo con todas las viariables tipo Set definidas en TOL private native TOLVariable[] nativeGetSetVariables(); //Obtiene un arreglo con todos los NameBlocks definidos en TOL private native TOLNameBlock[] nativeGetNameBlocks(); //Obtiene el valor de una serie en una fecha dada private native Object nativeSerieGetValue(String varname, TOLDate date); //Obtiene el valor de una serie en un índice dado private native Object nativeSerieGetValue(String varname, int index); //Obtiene un arreglo de Items de una serie a partir de una fecha dada private native Object[] nativeSerieGetItems(String varname, TOLDate date, int size); //Obtiene un arreglo de Items de una serie a partir de una posición dada private native Object[] nativeSerieGetItems(String varname, int index, int size); //Obtiene la primera fecha de una serie private native Object nativeSerieGetFirstDate(String varname); //Obtiene la última fecha de una serie private native Object nativeSerieGetLastDate(String varname); //Obtiene un arreglo de fechas de un TimeSet a partir de una fecha dada private native Object[] nativeTimeSetGetDates(String varname, TOLDate date, int size); //Obtiene la fecha previa a una dada en un TimeSet private native Object nativeTimeSetGetPrevDate(String varname, TOLDate date); //Obtiene la fecha siguiente a una dada en un TimeSet private native Object nativeTimeSetGetNextDate(String varname, TOLDate date); //Obtiene el tamaño de un Set private native Object nativeSetGetSize(String varname); //Obtiene el elemento de la posición index de un conjunto private native Object nativeSetGetElement(String varname, int index); //Obtiene todos los elementos de un conjunto como un arreglo private native Object[] nativeSetGetElements(String varname); /** * Crea una instancia de la Máquina Virtual de TOL y la inicializa * */ public TOLMachine() { nativeInitTOL(); } /** * Inicializa la Máquina Virtual de TOL. * */ public void initTOL() { nativeInitTOL(); } /** * Ejecuta en la Máquina Virtual de TOL el código pasado por parámetro * * @param code código TOL a ejecutarse * @return un arreglo de objetos cuyo primer elemento es el número de errores * que se han producido tanto en la compilación como en la ejecución, el resto * de los elementos son los mensajes generados por la Máquina Virtual de TOL, * lo cual es variable. (Consulte la documentación de TOL para revisar el * formato de los mensajes producidos y poder procesarlos) */ public Object[] execute(String code) { return nativeExecute(code); } /** * Hace una llamada a una función asignada a una variable de tipo Code * * @param codeName nombre de la variable tipo Code a la que se hace la llamada * @param parameters arreglo contiendo los parámetros que se deben pasar a la * función que se llama; cada elemento de este arreglo puede ser un objeto * perteneciente a una clase derivada de TOLLObject o una cadena con el * nombre de una variable definida en TOL * @return un objeto con el valor retornado por la función que se ha invocado * @throws com.hcarralero.toljava.TOLMachineException cuando algún parámetro no es * correcto, el nombre de la función a invocar no se ha encontrado u ocurre alguna * otra anomalía en la evaluación */ public TOLObject callCode(String codeName, Object[] parameters) throws TOLMachineException { // String strParameters[] = new String[parameters.length]; // for (int i = 0; i < parameters.length; ++i) { // if (parameters[i].getClass() == TOLText.class) { // TOLText tt = (TOLText) parameters[i]; // strParameters[i] = "\"" + tt.getText() + "\""; // } else { // if (parameters[i].getClass() == TOLReal.class) { // TOLReal tr = (TOLReal) parameters[i]; // strParameters[i] = "" + tr.getValue(); // } else { // if (parameters[i].getClass() == TOLDate.class) { // TOLDate td = (TOLDate) parameters[i]; // strParameters[i] = "y" + td.getYear() + "m" + td.getMonth() + "d" + // td.getDay() + "h" + td.getHour() + "i" + // td.getMinute() + "s" + td.getSecond(); // } else { // if (parameters[i].getClass() == TOLComplex.class) { // TOLComplex tc = (TOLComplex) parameters[i]; // double x = tc.getX(); // double y = tc.getY(); // if (y != 0) { // strParameters[i] = "" + tc.getY() + "*i"; // } // if (x > 0) { // strParameters[i] += "+" + tc.getX(); // } // if (x < 0) { // strParameters[i] += tc.getX(); // } // if (x == 0 && y == 0) { // strParameters[i] += "0"; // } // } else { // if (parameters[i].getClass() == TOLMatrix.class) { // TOLMatrix tm = (TOLMatrix) parameters[i]; // int rows= tm.getRows(); // int columns= tm.getColumns(); // if (rows==0||columns==0) { // strParameters[i] = "UnknownMatrix"; // } else { // strParameters[i] = "("; // for (int m= 0; m