What's the best way to access fields within an UnManagedStruct, one
returned from an NCI call? For example, if I call _new_SDL_Screen, how
can I access the w and h fields of the SDL_Surface it returns?
I've tried creating an OrderedHash called layout and then doing:
set screen, layout
Is there a better way? I can provide more code if necessary.
-- c
> What's the best way to access fields within an UnManagedStruct, one
> returned from an NCI call? For example, if I call _new_SDL_Screen, how
> can I access the w and h fields of the SDL_Surface it returns?
> I've tried creating an OrderedHash called layout and then doing:
> set screen, layout
Above statement just aliases both P-registers to point to the same thing,
_new_SDL_screen has a return type of 'p' - that is an UnManagedStruct
pointing to that. You know, that the return type is a struct screen *.
So you create an initializer for that struct (above layout? - a bad name
BTW) and *assign* it to the screen:
assign screen, screen_struct_layout
w = screen["w"] # presumed your struct initializer defines that
s. docs/pmcs/struct.pod
> ... I can provide more code if necessary.
If its still not clear, yes please.
> -- c
leo
> So you create an initializer for that struct (above layout? - a bad name
> BTW) and *assign* it to the screen:
>
> assign screen, screen_struct_layout
> w = screen["w"] # presumed your struct initializer defines that
>
> s. docs/pmcs/struct.pod
Hmm, I wasn't adding the _struct property for struct pointers, but it
looks like I should do that. That's workable.
Now, I'm seeing an odd error whenever I use the 'loadlib' op, though:
set_pmc_keyed_str() not implemented in class 'PerlInt'
The backtrace oddness starts in imcc/parser.c 352, when it calls
Parrot_load_lib().
-- c
> set_pmc_keyed_str() not implemented in class 'PerlInt'
Time for an example ;)
leo
I see it on examples/sdl/anim_parrot_logo.imc with a fresh build.
-- c
> I see it on examples/sdl/anim_parrot_logo.imc with a fresh build.
Oops, now I don't. Ignore that; I'll have a better example of weirdness
shortly.
-- c