Add pffi-pointer-address shims for some implementations

This commit is contained in:
retropikzel 2024-10-13 19:04:03 +03:00
parent fe373d0fb7
commit 93962b3403
6 changed files with 19 additions and 20 deletions

View File

@ -146,6 +146,11 @@
(lambda (size) (lambda (size)
(allocate size))) (allocate size)))
(define pffi-pointer-address
(lambda (pointer)
;; TODO
pointer))
(define pffi-pointer-null (define pffi-pointer-null
(lambda () (lambda ()
(address->pointer 0))) (address->pointer 0)))

View File

@ -375,7 +375,3 @@
((equal? type 'double) (pffi-pointer-double-get pointer offset)) ((equal? type 'double) (pffi-pointer-double-get pointer offset))
((equal? type 'pointer) (pffi-pointer-pointer-get pointer offset)) ((equal? type 'pointer) (pffi-pointer-pointer-get pointer offset))
))) )))
(define pffi-pointer-cast->struct
(lambda (struct-name pointer)
pointer))

View File

@ -52,6 +52,11 @@
(lambda (size) (lambda (size)
(bytevector->pointer (make-bytevector size 0)))) (bytevector->pointer (make-bytevector size 0))))
(define pffi-pointer-address
(lambda (pointer)
;; TODO
pointer))
(define pffi-pointer-null (define pffi-pointer-null
(lambda () (lambda ()
(make-pointer 0))) (make-pointer 0)))
@ -122,7 +127,3 @@
((equal? type 'double) (bytevector-ieee-double-ref p offset (native-endianness))) ((equal? type 'double) (bytevector-ieee-double-ref p offset (native-endianness)))
((equal? type 'pointer) (make-pointer (bytevector-sint-ref p offset (native-endianness) (pffi-size-of type)))) ((equal? type 'pointer) (make-pointer (bytevector-sint-ref p offset (native-endianness) (pffi-size-of type))))
((equal? type 'string) (pffi-pointer->string (make-pointer (bytevector-sint-ref p offset (native-endianness) (pffi-size-of type))))))))) ((equal? type 'string) (pffi-pointer->string (make-pointer (bytevector-sint-ref p offset (native-endianness) (pffi-size-of type)))))))))
(define pffi-pointer-cast->struct
(lambda (struct-name pointer)
pointer))

View File

@ -133,6 +133,11 @@
(lambda (size) (lambda (size)
(invoke (invoke arena 'allocate size 1) 'reinterpret (static-field java.lang.Integer 'MAX_VALUE)))) (invoke (invoke arena 'allocate size 1) 'reinterpret (static-field java.lang.Integer 'MAX_VALUE))))
(define pffi-pointer-address
(lambda (pointer)
;; TODO
pointer))
(define pffi-pointer-null (define pffi-pointer-null
(lambda () (lambda ()
(static-field java.lang.foreign.MemorySegment 'NULL))) (static-field java.lang.foreign.MemorySegment 'NULL)))
@ -191,7 +196,3 @@
(define pffi-pointer-deref (define pffi-pointer-deref
(lambda (pointer) (lambda (pointer)
(invoke pointer 'get (invoke (static-field java.lang.foreign.ValueLayout 'ADDRESS) 'withByteAlignment 1) 0))) (invoke pointer 'get (invoke (static-field java.lang.foreign.ValueLayout 'ADDRESS) 'withByteAlignment 1) 0)))
(define pffi-pointer-cast->struct
(lambda (struct-name pointer)
pointer))

View File

@ -52,6 +52,10 @@
(lambda (size) (lambda (size)
(malloc 'raw size))) (malloc 'raw size)))
(define pffi-pointer-address
(lambda (pointer)
pointer))
(define pffi-pointer-null (define pffi-pointer-null
(lambda () (lambda ()
#f )) ; #f is the null pointer on racket #f )) ; #f is the null pointer on racket
@ -100,7 +104,3 @@
(if (equal? type 'char) (if (equal? type 'char)
(integer->char r) (integer->char r)
r)))) r))))
(define pffi-pointer-cast->struct
(lambda (struct-name pointer)
pointer))

View File

@ -155,7 +155,3 @@
((equal? type 'double) (pointer-ref-c-double pointer offset)) ((equal? type 'double) (pointer-ref-c-double pointer offset))
((equal? type 'void) (pointer-ref-c-pointer pointer offset)) ((equal? type 'void) (pointer-ref-c-pointer pointer offset))
((equal? type 'pointer) (pointer-ref-c-pointer pointer offset))))) ((equal? type 'pointer) (pointer-ref-c-pointer pointer offset)))))
(define pffi-pointer-cast->struct
(lambda (struct-name pointer)
pointer))