Hello,

since gprolog ints are not coded on signed 29 bits it is difficult to ensure you can encode a pointeur as a Prolog integer. Some possible solutions:
  • encode an index (0-based displacement). If not possible, use an array in C where you store the pointer then you pass the index inside this array
  • encode it as a Prolog float (C double).
  • encode it as a Prolog structure of 2 integers (2 x 16 bits)
  • encode it as an atom (only if there is a limited set of pointers to handle).
Daniel


Tushar Parekh a écrit :
hello,

i have interfaced gnu prolog and c libraries.

i am able to handle input, output arguments of simple types like string, integer.

i have a structure in c program e.g. BITMAP.  i want to return a pointer to this structure
i.e. BITMAP * back to gnu prolog from c function.  how do i code this ?
i am working on 32 bit machine.  so all pointers are 32 bits.  i am able to handle integer output
arguments by declaring int * on c function side and setting this to the integer value and returing
PL_TRUE to enable binding to prolog argument.  can i cast BITMAP * to INTEGER * and send it
back to gnu prolog.  the reason i need to store this pointer on prolog side is to facilitate future calls
to c functions with this pointer supplied as an argument.


thank you in advance for any help.

regards,
tushar parekh.



Ask a question on any topic and get answers from real people. Go to Yahoo! Answers.
--
Ce message a été vérifié par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a été trouvé.


_______________________________________________ Users-prolog mailing list [email protected] http://lists.gnu.org/mailman/listinfo/users-prolog





_______________________________________________
Users-prolog mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/users-prolog

Reply via email to