Have `parse-c-struct' and `make-c-struct' support `int', pointers, etc.
authorLudovic Courtès <ludo@gnu.org>
Thu, 11 Nov 2010 15:09:22 +0000 (16:09 +0100)
committerLudovic Courtès <ludo@gnu.org>
Thu, 11 Nov 2010 15:41:15 +0000 (16:41 +0100)
commitfb636a1cce4444928ab313574fa150a06baae54b
tree022b79663061ee74e3a73272a04f57daff3a392a
parent1f864a1685eac0fd62b4d573ca0ae98c90679e9e
Have `parse-c-struct' and `make-c-struct' support `int', pointers, etc.

Reported by Tristan Colgate <tcolgate@gmail.com>.

* module/system/foreign.scm: Call `load-extension' at compile-time too.
  (compile-time-value): New macro.
  (integer-ref, integer-set): New procedures.
  (define-integer-reader, define-integer-writer): New macros.
  (%read-int, %read-long, %write-int!, %write-long!, %read-unsigned-int,
  %read-unsigned-long, %write-unsigned-int!, %write-unsigned-long!,
  %read-size_t, %write-size_t!, %read-pointer, %write-pointer!): New
  procedures.
  (*writers*): Add writers for `int', `unsigned-int', `long',
  `unsigned-long', `size_t', and `*'.
  (*readers*): Likewise.

* test-suite/tests/foreign.test ("structs")["int8, pointer",
  "unsigned-long, int8, size_t", "long, int, pointer"]: New tests.
module/system/foreign.scm
test-suite/tests/foreign.test