close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 1 and Version 2 of tolLink


Ignore:
Timestamp:
May 13, 2015, 9:21:44 AM (10 years ago)
Author:
Pedro Gea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • tolLink

    v1 v2  
    1010
    1111Dispone de métodos para cargar y descargar la dll, iniciar y cerrar la sesión TOL, compilar código en el núcleo de TOL, obtener en R objetos de TOL, trasladar objetos de R hacia TOL, etc.
     12
     13== Conexión con TOL ==
     14
     15El paquete {{{tolLink}}} en R permite la conexión con TOL, para ello ha de existir una instalación de TOL compatible (TOL-GNU) cuyo directorio principal se encuentre apuntado por la variable de entorno {{{TOLGNU_ROOT}}}. Esta variable se creará durante el proceso de instalación de TOL.
     16
     17Durante el proceso de carga en R, el paquete intentará localizar la instalación de TOL, y en caso de encontrarla emitirá el siguiente mensaje: {{{TOL-GNU was correctly found.}}}.
     18
     19Una vez cargado el paquete {{{tolLink}}} en R disponemos de diferentes funciones para cargar o descargar la librería (.dll o .so) e inicializar o salir de TOL:
     20 * tolLoad
     21 * tolUnload
     22 * tolIsLoaded
     23 * tolInit
     24 * tolExit
     25 * tolReinit
     26 * tolIsInitialized
     27
     28Las diferentes llamadas en este paquete desencadenan las correspondientes llamadas para su adecuado funcionamiento, así pues, la llamada a {{{tolInit}}} basta para inicializar TOL, ya que la librería ser cargará automáticamente si no estuviera hecho:
     29
     30{{{
     31#!ruby
     32tolInit() # llama a tolLoad() automáticamente
     33}}}
     34
     35== Comunicación con TOL ==
     36
     37Para la comunicación con TOL disponemos de diferentes funciones que nos permiten interaccionar con las variables y las funciones de TOL:
     38 * tolGet
     39 * tolRefer
     40 * tolExecute
     41 * tolDeclare
     42
     43Mientras {{{tolGet}}} nos permite obtener el valor de una variable en TOL, {{{tolRefer}}} nos permite referirnos a ella sin traer su valor hasta R.
     44
     45De modo similar {{{tolExecute}}} nos permite ejecutar una función en TOL, mientras que {{{tolDeclare}}} nos permite preparar la expresión para su ejecución sin hacerlo.
     46
     47Ejemplos:
     48
     49{{{
     50#!ruby
     51# Obtener un valor de TOL
     52tolGet("Time") #warning
     53tolGet("Time", grammar="Text")
     54}}}
     55
     56{{{
     57#!ruby
     58# Llamar a una función de TOL
     59tolExecute("Sin", 3)
     60tolExecute("TextLength", "Texto")
     61# Con varios argumentos
     62tolExecute("TextSub", "Texto", 2, -2)
     63}}}
     64
     65{{{
     66#!ruby
     67# Encadenar llamadas
     68tolExecute("Sin", tolExecute("Sin", 3)) # 2 llamadas
     69tolExecute("Sin", tolDeclare("Sin", 3)) # 1 llamada
     70}}}
     71
     72{{{
     73#!ruby
     74# Usar variables de TOL
     75tolExecute("Sin", tolGet("Pi")) # 2 llamadas
     76tolExecute("Sin", tolRefer("Pi")) # 1 llamada
     77}}}
     78
     79Las funciones en TOL pueden ser usadas como variables, para hacer esto en R usaremos {{{tolExecute}}} o {{{tolDeclare}}} con un sólo argumento:
     80
     81{{{
     82#!ruby
     83# Usar un Code como variable
     84tolExecute("CodeGrammar", tolDeclare("Sin")) #warning
     85# Obtener el Code para una gramática dada
     86tolExecute("Sin", grammar="Real")
     87}}}
     88
     89Las funciones {{{tolExecute}}} y {{{tolDeclare}}} también pueden usarse con operadores:
     90
     91{{{
     92#!ruby
     93# Usar operadores
     94tolExecute("-", 2) # monario
     95tolExecute("-", 2, 1) # binario
     96tolExecute("-", 10, 2, 1) # binario
     97}}}
     98
     99== Otras interacciones con TOL ==
     100
     101Para la declaración de variables en TOL disponemos de dos funciones:
     102 * tolDefine
     103 * tolRelease
     104
     105Para la inclusión de archivos en TOL disponemos de:
     106 * tolInclude
     107 * tolExclude
     108
     109Para la carga de paquetes en TOL tenemos la función:
     110 * tolRequire
     111
     112La función {{{tolExist}}} nos permite determinar si una variable TOL existe antes de intentar obtenerla con {{{tolGet}}}.
     113
     114la función {{{tolStruct}}} nos permite crear listas estructuradas, compatibles con los conjuntos estructurados en TOL.
     115
     116Ejemplos:
     117
     118{{{
     119#!ruby
     120ss <- tolStruct("@Real", 3);
     121tolExecute("StructName", ss) # se obtiene el nombre de la estructura
     122}}}
     123
     124{{{
     125#!ruby
     126tolExist("test") # -> FALSE
     127tolDefine("test", 8)
     128tolExist("test") # -> TRUE
     129tolGet("test") # -> 8
     130tolRelease("test")
     131tolExist("test") # -> FALSE
     132}}}
     133
     134