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.

Opened 14 years ago

Closed 14 years ago

#1029 closed task (fixed)

API para CINT, el intérprete de C y C++

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: TOL Extensions
Component: Kernel Version: head
Severity: critical Keywords:
Cc:

Description (last modified by Víctor de Buen Remiro)

CINT es un intérprete de C y C++ open source que permite ejecutar código sin tener que compilar ni crear un fichero ejecutable. El resultado es más lento que el código compilado pero aún así es mucho más rápido que TOL y que la mayoría de los intérpretes de lenguajes de alto nivel.

Mediante la API de CINT con C sería posible desde TOL cargar y descargar ficheros con funciones C y C++ y ejecutar sentencias que las usaran. Esta API sería especialmente útil a la hora de programar ciclos de cálculo largos que en TOL resultan demasiado lentos y que no precisan el uso de los tipos abstractos, sino que pueden expresarse mediante los tipos más simples Real, Text, Date y Matrix

Existen dos funciones para la carga y descarga de funciones en el ámbito global.

 int G__loadfile(const char *file);
/*
        G__loadfile() incrementally loads source file.
*/

 int G__unloadfile(const char *file);
/*
        G__unloadfile()  unloads source file. If any of the func-
       tions  included  in  the  file  is  busy,  G__unloadfile()
       returns error code (-1) and won't unload it.
*/

Existen otras dos funciones para la llamada a código interpretado desde C/C++.

 [anytype] G__calc(char *expression);
/*
        G__calc() evaluates C expression.  It returns the type of
       object  the  argument  expression  returns.  Variables and
       function calls can be used in  the  expression.   Declara-
       tion,  loop  and  conditional statement can not be used in
       the expression.
*/
            int i;
            double a;
            i = G__calc("1+2+3");  // returns int
            a = G__calc("3.14*i");  // returns double

 [anytype] G__exec_tempfile(char *file);
/*
        G__exec_tempfile() opens temporal source file and execute
       it  in  the  current  context.   The tempfile can contain,
       variable   declaration,   struct,union,enum    definition.
       expression,  loop and control statement and cannot contain
       function definition.  G__exec_tempfile() executes a state-
       ment or statement list surrounded by '{' , '}' and returns
       the last evaluated value.
*/
            {    // example of tempfile
                 int i;
                 double ary[100];
                 for(i=0;i<100;i++) ary[i] = i;
            }
/*
       Then in the main program, you can execute above  statement
       by G__exec_tempfile.
*/

Change History (46)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Description: modified (diff)
Summary: API para el intérprete de C y C++ CINTAPI para CINT, el intérprete de C y C++

comment:2 Changed 14 years ago by Víctor de Buen Remiro

(In [2769]) Refs #1029
Added contrib files for CINT API

comment:3 Changed 14 years ago by Víctor de Buen Remiro

(In [2770]) Refs #1029
Added contrib files for CINT API

comment:4 Changed 14 years ago by Víctor de Buen Remiro

(In [2771]) Refs #1029
Just descriptions

comment:5 Changed 14 years ago by Víctor de Buen Remiro

(In [2772]) Refs #1029
Just descriptions

comment:6 Changed 14 years ago by Víctor de Buen Remiro

(In [2773]) Refs #1029
libcint.dll must have the manifest inside
mt.exe -manifest libcint.dll.manifest -outputresource:libcint.dll;2

comment:7 Changed 14 years ago by Víctor de Buen Remiro

(In [2779]) Refs #1029
New error handler Cint_errmsgcallback
New function Cint.exec_text
Enhanced documentation

comment:8 Changed 14 years ago by Víctor de Buen Remiro

(In [2780]) Refs #1029
Test for CINT API

comment:9 Changed 14 years ago by Víctor de Buen Remiro

(In [2782]) Refs #1029
Test for CINT API
Cleaning non declared variable

comment:10 Changed 14 years ago by Víctor de Buen Remiro

(In [2783]) Refs #1029
New NameBlock TolCint to handle with CINT API

comment:11 Changed 14 years ago by Víctor de Buen Remiro

(In [2785]) Refs #1029
New method Cint.import_tol_var

comment:12 Changed 14 years ago by Víctor de Buen Remiro

(In [2786]) Refs #1029
Test for method Cint.import_tol_var

comment:13 Changed 14 years ago by Víctor de Buen Remiro

(In [2788]) Refs #1029
Adding Text to Cint.import_tol_var

comment:14 Changed 14 years ago by Víctor de Buen Remiro

(In [2789]) Refs #1029
Adding file tol_cint_msg.cpp

comment:15 Changed 14 years ago by Víctor de Buen Remiro

(In [2790]) Refs #1029
Handling dynamic memory in Matrix and Text
Text concatenation operators

comment:16 Changed 14 years ago by Víctor de Buen Remiro

(In [2791]) Refs #1029
Adjusting tests

comment:17 Changed 14 years ago by Víctor de Buen Remiro

(In [2792]) Refs #1029
Fixed syntax errors

comment:18 Changed 14 years ago by Víctor de Buen Remiro

(In [2793]) Refs #1029
Just descriptions

comment:19 Changed 14 years ago by Víctor de Buen Remiro

(In [2794]) Refs #1029
Exported variables must be added to local or global scope

comment:20 Changed 14 years ago by Víctor de Buen Remiro

(In [2795]) Refs #1029
Test for exporting CINT variables to TOL.

comment:21 Changed 14 years ago by Víctor de Buen Remiro

(In [2796]) Refs #1029
Destroying argument name of special function Cint.export_to_tol

comment:22 Changed 14 years ago by Jorge

(In [2797]) refs #1029, compiling contrib/cint

comment:23 Changed 14 years ago by Víctor de Buen Remiro

(In [2798]) Refs #1029
Fixed bug in operator + number

comment:24 Changed 14 years ago by Víctor de Buen Remiro

(In [2799]) Refs #1029
Converting TolCint to package

comment:25 Changed 14 years ago by Víctor de Buen Remiro

(In [2800]) Refs #1029
Converting TolCint to package

comment:26 Changed 14 years ago by Víctor de Buen Remiro

(In [2801]) Refs #1029
Converting TolCint to package

comment:27 Changed 14 years ago by Víctor de Buen Remiro

(In [2802]) Refs #1029
Converting TolCint to package

comment:28 Changed 14 years ago by Víctor de Buen Remiro

(In [2803]) Refs #1029
Converting TolCint to package

comment:29 Changed 14 years ago by Víctor de Buen Remiro

(In [2804]) Refs #1029
Converting TolCint to package

comment:30 Changed 14 years ago by Víctor de Buen Remiro

(In [2805]) Refs #1029
Converting TolCint to package

comment:31 Changed 14 years ago by Víctor de Buen Remiro

(In [2807]) Refs #1029
Just documentation

comment:32 Changed 14 years ago by Víctor de Buen Remiro

(In [2808]) Refs #1029
Converting TolCint to package

comment:33 Changed 14 years ago by Víctor de Buen Remiro

(In [2809]) Refs #1029
Converting TolCint to package

comment:34 Changed 14 years ago by Víctor de Buen Remiro

(In [2810]) Refs #1029
Dividing source code by TOL type

comment:35 Changed 14 years ago by Víctor de Buen Remiro

(In [2811]) Refs #1029
Dividing source code by TOL type

comment:36 Changed 14 years ago by Víctor de Buen Remiro

(In [2812]) Refs #1029
Adjusting tests

comment:37 Changed 14 years ago by Víctor de Buen Remiro

(In [2813]) Refs #1029
Adjusting tests

comment:38 Changed 14 years ago by Víctor de Buen Remiro

(In [2814]) Refs #1029
Adjusting tests

comment:39 Changed 14 years ago by Víctor de Buen Remiro

(In [2815]) Refs #1029
Adding headers for C, C++ and CINT standard libraries

comment:40 Changed 14 years ago by Víctor de Buen Remiro

(In [2819]) Refs #1029
New global variable TOLSdkPath is needed in order to handle with native TOL types inside CINT

comment:41 Changed 14 years ago by Víctor de Buen Remiro

(In [2820]) Refs #1029
New method Install to be called at first execution or when the user wants

comment:42 Changed 14 years ago by Víctor de Buen Remiro

(In [2830]) Refs #1029
Using Gdouble and Gint

comment:43 Changed 14 years ago by Víctor de Buen Remiro

(In [2832]) Refs #1029
Using Gdouble and Gint
New methods Cint.initialize and Cint.scratch_all

comment:44 Changed 14 years ago by Víctor de Buen Remiro

(In [2834]) Refs #1029
Calling to Cint_initialize

comment:45 Changed 14 years ago by Víctor de Buen Remiro

(In [2837]) Refs #1029
Using Gdouble and Gint

comment:46 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.