Guest User

Untitled

a guest
May 27th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. #include <stdio.h>
  2. static char* strs[3] = { "howdy", "doody", NULL };
  3. extern void ptr_to_strs (char ***ptr) {
  4. *ptr = strs;
  5. }
  6.  
  7. use v6;
  8. use LibraryMake;
  9. use NativeCall;
  10.  
  11. sub testlib {
  12. state $ = do {
  13. my $so = get-vars('')<SO>;
  14. ~(%?RESOURCES{"lib/test$so"});
  15. }
  16. }
  17.  
  18. sub ptr_to_strs(Pointer[CArray[Str]] $strs is rw) is native(&testlib)
  19.  
  20. my Pointer[CArray[Str]] $a .= new;
  21. ptr_to_strs($a);
  22. say $a[0][0]; # howdy
  23. say $a[0][1]; # doody
  24. say $a[0][2]; # Str
  25.  
  26. # assuming you've already got a $bus object
  27. sub sd_bus_list_names(Pointer, Pointer[CArray[Str]] is rw, Pointer[CArray[Str]] is rw) returns int32 is native('systemd') {*}
  28.  
  29. my CArray[Str] $acq .= new;
  30. my CArray[Str] $act .= new;
  31. sd_bus_list_names($bus, $acq, $act);
  32. say $acq[0][0]; # first acquired name
Add Comment
Please, Sign In to add comment