You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1.
use NativeCall;
2.
3.
class TopWindow {...}
4.
5.
class TopWindow is repr('CPointer') is export {
6.
7.
sub TopWindow_TopWindow_c() returns TopWindow is
symbol('TopWindow_TopWindow_c') is native("whatever") { * }
8.
9.
multi method new() returns TopWindow {
10.
return TopWindow_TopWindow_c();}
11.
12.
}
13.
14.
15.
my $t = TopWindow.new();
if I run this,
I get
Unknown type TopWindow used in native call.
If you want to pass a struct, be sure to use the CStruct representation.
If you want to pass an array, be sure to use the CArray type.
in sub type_code_for at
D:\rakudogit\install/languages/perl6/lib\NativeCall.pm6:89
in sub return_hash_for at
D:\rakudogit\install/languages/perl6/lib\NativeCall.pm6:62
in method postcircumfix:<( )> at
D:\rakudogit\install/languages/perl6/lib\NativeCall.pm6:127
in method new at D:\m\perl\cheadertoperl6\test.p6:9
in block <unit> at D:\m\perl\cheadertoperl6\test.p6:15
if you remove class TopWindow {...}, it starts working.
I need to forward reference TopWindow as it is used in other classes,
function calls.
$ perl6 -e 'use NativeCall; class T is repr<CPointer> is export { sub new(size_t $n) returns T is symbol<malloc> is native { * }; }; T.new();'
$ perl6 -e 'use NativeCall; class T {...}; class T is repr<CPointer> is export { sub new(size_t $n) returns T is symbol<malloc> is native { * }; }; T.new();'
===SORRY!=== Error while compiling -e
Cannot change REPR of T now (must be set at initial declaration)
at -e:1
Workaround:
$ perl6 -e 'use NativeCall; class T is repr<CPointer> {...}; class T is export { sub new(size_t $n) returns T is symbol<malloc> is native { * }; }; T.new(); say T.REPR;'
CPointer
Migrated from rt.perl.org#122815 (status was 'open')
Searchable as RT122815$
The text was updated successfully, but these errors were encountered: