[squeak-dev] Question about FFI and constants
Mariano Martinez Peck
marianopeck at gmail.com
Wed Sep 30 16:30:38 UTC 2009
Hi folks: I am calling to the OpenDBX library and this library uses C
constants. Suppose something like this:
enum odbxerr {
ODBX_ERR_SUCCESS,
#define ODBX_ERR_SUCCESS ODBX_ERR_SUCCESS
ODBX_ERR_BACKEND,
#define ODBX_ERR_BACKEND ODBX_ERR_BACKEND
ODBX_ERR_NOCAP,
#define ODBX_ERR_NOCAP ODBX_ERR_NOCAP
ODBX_ERR_PARAM,
.........
Then I have a function like this:
char* odbx_error( odbx_t* handle, int error )
In that case the int error es the index of the array or I can use the
constant.
Right now, I am using int from 0 to N. But I would like to invoke calls to
that function using Smalltalk Strings that represent C constants.
For example, now I have this:
OpenDBXUnix>>apiError: handle number: err
"long odbx_error(odbx_t*, int)"
<cdecl: char* 'odbx_error' (ulong long) module: 'opendbx' >
^self externalCallFailed
And I call them this way for example:
OpenDBXUnix apiError: handle number: 1.
But, I would love to do:
OpenDBXUnix apiError: handle number: 'ODBX_ERR_BACKEND'.
Of course this fails because it cannot coerce and String to a long.
So, that someone know how can I do this (if I can) ?
Thanks
Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090930/1f0a2320/attachment.htm
More information about the Squeak-dev
mailing list
|