Hi Mariano, what about the rule in Kent Beck Smalltalk best practices
book, put magic numbers into a method.
OpenDBUnix>>odbxErrBackend.
^ 1
OpenDBUnix apiError: handle number: OpenDBUnix odbxErrBackend.
Or i you prefer also can code a mapping method like this one
( although the first solution is much more elegant )
OpenDBUnix>>errorFromString: 'ODBX_ERR_BACKEND'
OpenDBUnix apiError: handle number: ( OpenDBUnix errorFromString:
'ODBX_ERR_BACKEND')
> 2009/9/30 Mariano Martinez Peck <[email protected]>:
>> 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
>>
>>
>>
>>
>>
>>
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project