Merge branch 'master' of git://factorcode.org/git/factor
commit
81098989ec
|
@ -270,6 +270,16 @@ FUNCTION: double ffi_test_35 test-struct-11 x int y ;
|
||||||
3 ffi_test_35
|
3 ffi_test_35
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
C-STRUCT: test-struct-12 { "int" "a" } { "double" "x" } ;
|
||||||
|
|
||||||
|
: make-struct-12
|
||||||
|
"test-struct-12" <c-object>
|
||||||
|
[ set-test-struct-12-x ] keep ;
|
||||||
|
|
||||||
|
FUNCTION: double ffi_test_36 ( test-struct-12 x ) ;
|
||||||
|
|
||||||
|
[ 1.23456 ] [ 1.23456 make-struct-12 ffi_test_36 ] unit-test
|
||||||
|
|
||||||
! Test callbacks
|
! Test callbacks
|
||||||
|
|
||||||
: callback-1 "void" { } "cdecl" [ ] alien-callback ;
|
: callback-1 "void" { } "cdecl" [ ] alien-callback ;
|
||||||
|
|
|
@ -118,23 +118,11 @@ TUPLE: CreateProcess-args
|
||||||
: inherited-stderr ( args -- handle )
|
: inherited-stderr ( args -- handle )
|
||||||
drop STD_ERROR_HANDLE GetStdHandle ;
|
drop STD_ERROR_HANDLE GetStdHandle ;
|
||||||
|
|
||||||
: duplicate-handle ( handle -- handle )
|
|
||||||
GetCurrentProcess
|
|
||||||
swap
|
|
||||||
GetCurrentProcess
|
|
||||||
f <void*> [
|
|
||||||
0
|
|
||||||
TRUE
|
|
||||||
DUPLICATE_SAME_ACCESS
|
|
||||||
DuplicateHandle win32-error=0/f
|
|
||||||
] keep *void* ;
|
|
||||||
|
|
||||||
: redirect-stderr ( args -- handle )
|
: redirect-stderr ( args -- handle )
|
||||||
+stderr+ get
|
+stderr+ get
|
||||||
dup +stdout+ eq? [
|
dup +stdout+ eq? [
|
||||||
drop
|
drop
|
||||||
CreateProcess-args-lpStartupInfo duplicate-handle
|
CreateProcess-args-lpStartupInfo STARTUPINFO-hStdOutput
|
||||||
STARTUPINFO-hStdOutput
|
|
||||||
] [
|
] [
|
||||||
GENERIC_WRITE CREATE_ALWAYS redirect
|
GENERIC_WRITE CREATE_ALWAYS redirect
|
||||||
swap inherited-stderr ?closed
|
swap inherited-stderr ?closed
|
||||||
|
|
|
@ -16,8 +16,11 @@ IN: tools.deploy.backend
|
||||||
: copy-lines ( stream -- )
|
: copy-lines ( stream -- )
|
||||||
[ (copy-lines) ] with-disposal ;
|
[ (copy-lines) ] with-disposal ;
|
||||||
|
|
||||||
: run-with-output ( descriptor -- )
|
: run-with-output ( arguments -- )
|
||||||
<process-stream>
|
[
|
||||||
|
+arguments+ set
|
||||||
|
+stdout+ +stderr+ set
|
||||||
|
] H{ } make-assoc <process-stream>
|
||||||
dup duplex-stream-out dispose
|
dup duplex-stream-out dispose
|
||||||
copy-lines ;
|
copy-lines ;
|
||||||
|
|
||||||
|
|
|
@ -245,3 +245,8 @@ double ffi_test_35(struct test_struct_11 x, int y)
|
||||||
{
|
{
|
||||||
return (x.x + x.y) * y;
|
return (x.x + x.y) * y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double ffi_test_36(struct test_struct_12 x)
|
||||||
|
{
|
||||||
|
return x.x;
|
||||||
|
}
|
||||||
|
|
|
@ -57,3 +57,7 @@ struct test_struct_10 { float x; int y; };
|
||||||
DLLEXPORT double ffi_test_34(struct test_struct_10 x, int y);
|
DLLEXPORT double ffi_test_34(struct test_struct_10 x, int y);
|
||||||
struct test_struct_11 { int x; int y; };
|
struct test_struct_11 { int x; int y; };
|
||||||
DLLEXPORT double ffi_test_35(struct test_struct_11 x, int y);
|
DLLEXPORT double ffi_test_35(struct test_struct_11 x, int y);
|
||||||
|
|
||||||
|
struct test_struct_12 { int a; double x; };
|
||||||
|
|
||||||
|
DLLEXPORT double ffi_test_36(struct test_struct_12 x);
|
||||||
|
|
Loading…
Reference in New Issue