mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 06:41:13 +02:00
Add foreign types: ssize_t and ptrdiff_t.
* libguile/foreign.c (sym_ssize_t, sym_ptrdiff_t): New symbols. (scm_init_foreign): Add bindings for ssize_t and ptrdiff_t. * module/system/foreign.scm: Export ssize_t and ptrdiff_t. * doc/ref/api-foreign.texi (Foreign Types): Add docs.
This commit is contained in:
parent
7facc08a80
commit
3a3bea729f
3 changed files with 27 additions and 3 deletions
|
@ -489,6 +489,8 @@ platform-dependent size:
|
||||||
@defvrx {Scheme Variable} long
|
@defvrx {Scheme Variable} long
|
||||||
@defvrx {Scheme Variable} unsigned-long
|
@defvrx {Scheme Variable} unsigned-long
|
||||||
@defvrx {Scheme Variable} size_t
|
@defvrx {Scheme Variable} size_t
|
||||||
|
@defvrx {Scheme Variable} ssize_t
|
||||||
|
@defvrx {Scheme Variable} ptrdiff_t
|
||||||
Values exported by the @code{(system foreign)} module, representing C
|
Values exported by the @code{(system foreign)} module, representing C
|
||||||
numeric types. For example, @code{long} may be @code{equal?} to
|
numeric types. For example, @code{long} may be @code{equal?} to
|
||||||
@code{int64} on a 64-bit platform.
|
@code{int64} on a 64-bit platform.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
|
/* Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public License
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
@ -53,6 +53,8 @@ SCM_SYMBOL (sym_unsigned_short, "unsigned-short");
|
||||||
SCM_SYMBOL (sym_unsigned_int, "unsigned-int");
|
SCM_SYMBOL (sym_unsigned_int, "unsigned-int");
|
||||||
SCM_SYMBOL (sym_unsigned_long, "unsigned-long");
|
SCM_SYMBOL (sym_unsigned_long, "unsigned-long");
|
||||||
SCM_SYMBOL (sym_size_t, "size_t");
|
SCM_SYMBOL (sym_size_t, "size_t");
|
||||||
|
SCM_SYMBOL (sym_ssize_t, "ssize_t");
|
||||||
|
SCM_SYMBOL (sym_ptrdiff_t, "ptrdiff_t");
|
||||||
|
|
||||||
/* that's for pointers, you know. */
|
/* that's for pointers, you know. */
|
||||||
SCM_SYMBOL (sym_asterisk, "*");
|
SCM_SYMBOL (sym_asterisk, "*");
|
||||||
|
@ -1281,6 +1283,26 @@ scm_init_foreign (void)
|
||||||
scm_from_uint8 (SCM_FOREIGN_TYPE_UINT32)
|
scm_from_uint8 (SCM_FOREIGN_TYPE_UINT32)
|
||||||
#else
|
#else
|
||||||
# error unsupported sizeof (size_t)
|
# error unsupported sizeof (size_t)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
scm_define (sym_ssize_t,
|
||||||
|
#if SIZEOF_SIZE_T == 8
|
||||||
|
scm_from_uint8 (SCM_FOREIGN_TYPE_INT64)
|
||||||
|
#elif SIZEOF_SIZE_T == 4
|
||||||
|
scm_from_uint8 (SCM_FOREIGN_TYPE_INT32)
|
||||||
|
#else
|
||||||
|
# error unsupported sizeof (ssize_t)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
scm_define (sym_ptrdiff_t,
|
||||||
|
#if SCM_SIZEOF_SCM_T_PTRDIFF == 8
|
||||||
|
scm_from_uint8 (SCM_FOREIGN_TYPE_INT64)
|
||||||
|
#elif SCM_SIZEOF_SCM_T_PTRDIFF == 4
|
||||||
|
scm_from_uint8 (SCM_FOREIGN_TYPE_INT32)
|
||||||
|
#else
|
||||||
|
# error unsupported sizeof (scm_t_ptrdiff)
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
;;;; Copyright (C) 2010, 2011 Free Software Foundation, Inc.
|
;;;; Copyright (C) 2010, 2011, 2013 Free Software Foundation, Inc.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This library is free software; you can redistribute it and/or
|
;;;; This library is free software; you can redistribute it and/or
|
||||||
;;;; modify it under the terms of the GNU Lesser General Public
|
;;;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
float double
|
float double
|
||||||
short
|
short
|
||||||
unsigned-short
|
unsigned-short
|
||||||
int unsigned-int long unsigned-long size_t
|
int unsigned-int long unsigned-long size_t ssize_t ptrdiff_t
|
||||||
int8 uint8
|
int8 uint8
|
||||||
uint16 int16
|
uint16 int16
|
||||||
uint32 int32
|
uint32 int32
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue