Bill Allombert on Fri, 26 Aug 2011 14:11:09 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: embedding GP in GUI applications (android-port)


On Wed, Aug 24, 2011 at 10:50:10PM -0400, Charles Boyd wrote:
> Hello,
> 
> I have produced a statically compiled GP binary for Android, and now want to
> build a light graphical application to improve the usability of PARI/GP on
> Android <https://code.google.com/p/paridroid/>.
> 
> Android applications are written in Java, and may interface with native
> C/C++ functions via the Java Native Interface (JNI).
> 
> Is there a relatively simple way to send commands for evaluation by GP from
> an external application?

There is a distinction to make between the gp programm and the GP interpreter. 
The gp programm is a standalone exectutable that provide an interface to the
GP interpretor which is included in libpari. In the context of a graphical
application you probably want to use the GP interpreter directly since gp mostly 
provide the text-based user interface which you do not need.

> For example, if it is possible to embed the GP interpreter in a C program
> (similar to Python embedding <http://www.linuxjournal.com/article/8497>) --
> then I could write a small wrapper library in C that interfaces with GP and
> then load this library in the Java GUI application via JNI. For example,
> this library would provide simple functions...roughly prototyped as:

Yes, you can embed the GP interpretor in your C program, since the GP interpretor
is part of the libpari library. See examples/minigp.c in the distribution for
an example.

Basically you do
out = gp_read_str(in);
where 'in' is the input and 'out' is the output.
You can convert 'out' to a char * using GENtostr.

Cheers,
Bill.