Hi All, Over at
https://docs.raku.org/language/nativecall.html#Basic_use_of_pointers There is an example: useNativeCall; classFooHandleisrepr('CPointer') { # Here are the actual NativeCall functions. subFoo_init() returnsFooHandleisnative("foo") {*} subFoo_free(FooHandle) isnative("foo") {*} subFoo_query(FooHandle, Str) returnsint8isnative("foo") {*} subFoo_close(FooHandle) returnsint8isnative("foo") {*} # Here are the methods we use to expose it to the outside world. methodnew{ Foo_init(); } methodquery(Str$stmt) { Foo_query(self, $stmt); } methodclose{ Foo_close(self); } # Free data when the object is garbage collected. submethodDESTROY{ Foo_free(self); } } I just can't keeping my head what is going on. Questions: 1) How can I get a list of what types are imported (like Pointer and CArray) when I `use nativeCall` and what their definitions are? 2) on # Here are the actual NativeCall functions. subFoo_init() returnsFooHandleisnative("foo") {*} subFoo_free(FooHandle) isnative("foo") {*} subFoo_query(FooHandle, Str) returnsint8isnative("foo") {*} subFoo_close(FooHandle) returnsint8isnative("foo") {*} He called subs exported from NativeCall "foo*"? What does hemean by `# Here are the actual NativeCall functions.`? If he means these are fictitious "C" calls formatted into NativeCall format, he in NOT BEING HELPFUL. I need to see BOTH the actual "C" calls as well as how he formatted them to NativeCall. 3) what is ? subFoo_init() returnsFooHandleisnative("foo") {*}` 4) what is ? subFoo_free(FooHandle) isnative("foo") {*} 5) what is ? subFoo_query(FooHandle, Str) returnsint8isnative("foo") {*} 6) what is ? subFoo_close(FooHandle) returnsint8isnative("foo") {*} 7) A) in the below, where did `self` come from? Is it a type? B) not to ask too stupid a question, but what does "method" do for me? methodquery(Str$stmt) { Foo_query(self, $stmt); } Just a general comment: It would be wonderful if the docs would show actual "C" calls from something like Kernel32.dll and how to access them with NativeCall. For instance: |LSTATUS RegQueryValueExA( HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); | |The example should go over what to give NativeCall for| |all of the above "C" types.| || Yours in Confusion,, -T