[Glass] Passing a enum element to a C library
Smalltalk at JGFoster.net
Smalltalk at JGFoster.net
Wed Jul 1 17:27:24 PDT 2020
It seems to me that the function should be interpreted as (#’ptr’ #’int’ #’ptr’) since an enum is simply an integer. Try passing it just 0 and see if that goes through.
James
> On Jul 1, 2020, at 4:41 PM, bruno buzzi brassesco via Glass <glass at lists.gemtalksystems.com> wrote:
>
> Hi,
>
> How to pass an enum element to a C library.
> C function signature:
> int ssh_options_set(ssh_session session, enum ssh_options_e type, const void *value)
>
> The enum is defined as:
> enum ssh_options_e {
> SSH_OPTIONS_HOST,
> SSH_OPTIONS_PORT}
>
> An any C call is like:
> ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "localhost");
>
> GS generated wrapper:
> ssh_options_set_: session _: type _: value
> "Interpreted as #int32 from #( #'ptr' #'ptr' #'ptr' )"
> ^Functionssh_options_set callWith: { session. type. value }
>
> In GS i tried something like:
> myLibrary ssh_options_set_: session _: optionHost _: hostName
> where
> session: is created in another successful call to myLibrary
>
> optionHost:
> cStructPointer := CByteArray gcMalloc: 8.
> cStructPointer uint64At: 0 put: 0. "0 correspond to SSH_OPTIONS_HOST - maybe i'm wrong"
>
> hostName: CByteArray withAll: 'localhost'
>
> But it seems that something is wrong. The chapter 18 do something like this with another library.
> So [optionHost] or [hostName] has a wrong value...
> For now no successful call passing an enum element.
>
> Now back to fight with C :)
>
> regards,
> bruno
>
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> https://lists.gemtalksystems.com/mailman/listinfo/glass
More information about the Glass
mailing list