Newbie questions about Pliant

Newbie questions about Pliant

external and Int32

can't seem to pass back from C function an Int32
Message posted by reitman on 2003/06/10 05:56:02
Hi, here's a small test that I ran, 

======== t.c ========
long int get_int32()

  long int x = 5;
  return x;
}

======== t.pli ======
module "/pliant/language/unsafe.pli"

function get_int32 -> number
  arg Int32 number
  external "lib_borisreitman_t.so" "get_int32"

gvar Int32 tmp := get_int32
console (cast tmp Int) eol
console (cast get_int32 Int) eol  # or, this

===== Makefile =======
lib_borisreitman_t.so:
        gcc --shared -o lib_borisreitman_t.so t.c

==== setup-paths =====
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

===================================================
What I get when I run 'pliant t.pli' is

134516667
0

instead of expected 5.

I am on i686, glibc2.31, debian sid

What am I doing wrong ?
Boris

Message posted by hubert.tonneau on 2003/06/10 08:27:09
C prototype:

long int get_int32()

  long int x = 5;
  return x;
}

Translates to:

function get_int32 -> number
  arg Int number
  external "lib_borisreitman_t.so" "get_int32"

The reason is that size forced integers only exist in the memory.
The only exception I know being 'long' when you have a 16 bits environment.
Message posted by marcus on 2003/06/10 11:33:49
Hello Boris.

Since you are running some interesting experiments on linking Pliant with C (and
perhaps other languages), I wonder if you would be willing to prepare a short
HowTo documentation, which would include simple examples like the one you mentioned
above, plus the technical details involved.

You can perhaps post a draft of your HowTo on a new discussion on this forum, then 
together, with the help of the experts, we can further improve the draft. 
Eventually I would post it at the PDI site.

Thanks in advance for your time and cooperation.

Truly,

Marcus Vinicius

Message posted by reitman on 2003/06/11 07:24:53
I will be glad to prepare such document.  However, I would like to 
wait until I bring that perl wrapper to a working state, so that 
I can have a particular example to talk about. 

In the meantime, I have written a web application in the 
literate programming style, using Pliant.  This is a web-interface
for the CUMC -- canadian undergraduate mathematics conferece

It is available at

  http://student.mathsoc.uottawa.ca/cumc/doc/form.pdf

I think I'm just a week away from having the perl wrapper working well.
Boris