X-Git-Url: https://git.hcoop.net/bpt/guile.git/blobdiff_plain/1fa86ca526d94b9149bdd805989f694be8c120d5..29fed193d3af3bf34ee801bdec819e1ccdec0cf2:/libguile/convert.c diff --git a/libguile/convert.c b/libguile/convert.c dissimilarity index 91% index 43d5d7107..d43c14b37 100644 --- a/libguile/convert.c +++ b/libguile/convert.c @@ -1,146 +1,146 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA - * - * As a special exception, the Free Software Foundation gives permission - * for additional uses of the text contained in its release of GUILE. - * - * The exception is that, if you link the GUILE library with other files - * to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the GUILE library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the - * Free Software Foundation under the name GUILE. If you copy - * code from other Free Software Foundation releases into a copy of - * GUILE, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for GUILE, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. */ - - - -#include "libguile/_scm.h" -#include "libguile/validate.h" -#include "libguile/strings.h" -#include "libguile/vectors.h" -#include "libguile/pairs.h" -#if HAVE_ARRAYS -# include "libguile/unif.h" -#endif - -#include "libguile/convert.h" - -#define CTYPE char -#define SCM2CTYPES_FN "scm_c_scm2chars" -#define SCM2CTYPES scm_c_scm2chars -#define CTYPES2SCM_FN "scm_c_chars2scm" -#define CTYPES2SCM scm_c_chars2scm -#define CTYPEFIXABLE -#define CTYPES2UVECT_FN "scm_c_chars2byvect" -#define CTYPES2UVECT scm_c_chars2byvect -#define UVECTTYPE scm_tc7_byvect -#define CTYPEMIN -128 -#define CTYPEMAX +255 -#define ARRAYTYPE1 scm_tc7_byvect -#define STRINGTYPE -#include "convert.i.c" - -#define CTYPE short -#define SCM2CTYPES_FN "scm_c_scm2shorts" -#define SCM2CTYPES scm_c_scm2shorts -#define CTYPES2SCM_FN "scm_c_shorts2scm" -#define CTYPES2SCM scm_c_shorts2scm -#define CTYPEFIXABLE -#define CTYPES2UVECT_FN "scm_c_shorts2svect" -#define CTYPES2UVECT scm_c_shorts2svect -#define UVECTTYPE scm_tc7_svect -#define CTYPEMIN -32768 -#define CTYPEMAX +65535 -#define ARRAYTYPE1 scm_tc7_svect -#include "convert.i.c" - -#define CTYPE int -#define SCM2CTYPES_FN "scm_c_scm2ints" -#define SCM2CTYPES scm_c_scm2ints -#define CTYPES2SCM_FN "scm_c_ints2scm" -#define CTYPES2SCM scm_c_ints2scm -#define CTYPES2UVECT_FN "scm_c_ints2ivect" -#define CTYPES2UVECT scm_c_ints2ivect -#define UVECTTYPE scm_tc7_ivect -#define CTYPES2UVECT_FN2 "scm_c_uints2uvect" -#define CTYPES2UVECT2 scm_c_uints2uvect -#define UVECTTYPE2 scm_tc7_uvect -#define ARRAYTYPE1 scm_tc7_ivect -#define ARRAYTYPE2 scm_tc7_uvect -#include "convert.i.c" - -#define CTYPE long -#define SCM2CTYPES_FN "scm_c_scm2longs" -#define SCM2CTYPES scm_c_scm2longs -#define CTYPES2SCM_FN "scm_c_longs2scm" -#define CTYPES2SCM scm_c_longs2scm -#define CTYPES2UVECT_FN "scm_c_longs2ivect" -#define CTYPES2UVECT scm_c_longs2ivect -#define UVECTTYPE scm_tc7_ivect -#define CTYPES2UVECT_FN2 "scm_c_ulongs2uvect" -#define CTYPES2UVECT2 scm_c_ulongs2uvect -#define UVECTTYPE2 scm_tc7_uvect -#define ARRAYTYPE1 scm_tc7_ivect -#define ARRAYTYPE2 scm_tc7_uvect -#include "convert.i.c" - -#define CTYPE float -#define SCM2CTYPES_FN "scm_c_scm2floats" -#define SCM2CTYPES scm_c_scm2floats -#define CTYPES2SCM_FN "scm_c_floats2scm" -#define CTYPES2SCM scm_c_floats2scm -#define CTYPES2UVECT_FN "scm_c_floats2fvect" -#define CTYPES2UVECT scm_c_floats2fvect -#define UVECTTYPE scm_tc7_fvect -#define ARRAYTYPE1 scm_tc7_fvect -#define ARRAYTYPE2 scm_tc7_dvect -#define FLOATTYPE1 float -#define FLOATTYPE2 double -#include "convert.i.c" - -#define CTYPE double -#define SCM2CTYPES_FN "scm_c_scm2doubles" -#define SCM2CTYPES scm_c_scm2doubles -#define CTYPES2SCM_FN "scm_c_doubles2scm" -#define CTYPES2SCM scm_c_doubles2scm -#define CTYPES2UVECT_FN "scm_c_doubles2dvect" -#define CTYPES2UVECT scm_c_doubles2dvect -#define UVECTTYPE scm_tc7_dvect -#define ARRAYTYPE1 scm_tc7_dvect -#define ARRAYTYPE2 scm_tc7_fvect -#define FLOATTYPE1 double -#define FLOATTYPE2 float -#include "convert.i.c" - -/* - Local Variables: - c-file-style: "gnu" - End: -*/ +/* Copyright (C) 2002 Free Software Foundation, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#if HAVE_CONFIG_H +# include +#endif + +#include "libguile/_scm.h" +#include "libguile/validate.h" +#include "libguile/strings.h" +#include "libguile/vectors.h" +#include "libguile/pairs.h" +#include "libguile/unif.h" +#include "libguile/srfi-4.h" + +#include "libguile/convert.h" + +#ifdef HAVE_STRING_H +#include +#endif + +/* char *scm_c_scm2chars (SCM obj, char *dst); + SCM scm_c_chars2scm (const char *src, long n); + SCM scm_c_chars2byvect (const char *src, long n); +*/ + +#define CTYPE char +#define FROM_CTYPE scm_from_char +#define SCM2CTYPES scm_c_scm2chars +#define CTYPES2SCM scm_c_chars2scm +#define CTYPES2UVECT scm_c_chars2byvect +#if CHAR_MIN == 0 +/* 'char' is unsigned. */ +#define UVEC_TAG u8 +#define UVEC_CTYPE scm_t_uint8 +#else +/* 'char' is signed. */ +#define UVEC_TAG s8 +#define UVEC_CTYPE scm_t_int8 +#endif +#include "libguile/convert.i.c" + +/* short *scm_c_scm2shorts (SCM obj, short *dst); + SCM scm_c_shorts2scm (const short *src, long n); + SCM scm_c_shorts2svect (const short *src, long n); +*/ + +#define CTYPE short +#define FROM_CTYPE scm_from_short +#define SCM2CTYPES scm_c_scm2shorts +#define CTYPES2SCM scm_c_shorts2scm +#define CTYPES2UVECT scm_c_shorts2svect +#define UVEC_TAG s16 +#define UVEC_CTYPE scm_t_int16 +#include "libguile/convert.i.c" + +/* int *scm_c_scm2ints (SCM obj, int *dst); + SCM scm_c_ints2scm (const int *src, long n); + SCM scm_c_ints2ivect (const int *src, long n); + SCM scm_c_uints2uvect (const unsigned int *src, long n); +*/ + +#define CTYPE int +#define FROM_CTYPE scm_from_int +#define SCM2CTYPES scm_c_scm2ints +#define CTYPES2SCM scm_c_ints2scm +#define CTYPES2UVECT scm_c_ints2ivect +#define UVEC_TAG s32 +#define UVEC_CTYPE scm_t_int32 + +#define CTYPES2UVECT_2 scm_c_uints2uvect +#define CTYPE_2 unsigned int +#define UVEC_TAG_2 u32 +#define UVEC_CTYPE_2 scm_t_uint32 + +#include "libguile/convert.i.c" + +/* long *scm_c_scm2longs (SCM obj, long *dst); + SCM scm_c_longs2scm (const long *src, long n); + SCM scm_c_longs2ivect (const long *src, long n); + SCM scm_c_ulongs2uvect (const unsigned long *src, long n); +*/ + +#define CTYPE long +#define FROM_CTYPE scm_from_long +#define SCM2CTYPES scm_c_scm2longs +#define CTYPES2SCM scm_c_longs2scm +#define CTYPES2UVECT scm_c_longs2ivect +#define UVEC_TAG s32 +#define UVEC_CTYPE scm_t_int32 + +#define CTYPES2UVECT_2 scm_c_ulongs2uvect +#define CTYPE_2 unsigned int +#define UVEC_TAG_2 u32 +#define UVEC_CTYPE_2 scm_t_uint32 + +#include "libguile/convert.i.c" + +/* float *scm_c_scm2floats (SCM obj, float *dst); + SCM scm_c_floats2scm (const float *src, long n); + SCM scm_c_floats2fvect (const float *src, long n); +*/ + +#define CTYPE float +#define FROM_CTYPE scm_from_double +#define SCM2CTYPES scm_c_scm2floats +#define CTYPES2SCM scm_c_floats2scm +#define CTYPES2UVECT scm_c_floats2fvect +#define UVEC_TAG f32 +#define UVEC_CTYPE float +#include "libguile/convert.i.c" + +/* double *scm_c_scm2doubles (SCM obj, double *dst); + SCM scm_c_doubles2scm (const double *src, long n); + SCM scm_c_doubles2dvect (const double *src, long n); +*/ + +#define CTYPE double +#define FROM_CTYPE scm_from_double +#define SCM2CTYPES scm_c_scm2doubles +#define CTYPES2SCM scm_c_doubles2scm +#define CTYPES2UVECT scm_c_doubles2dvect +#define UVEC_TAG f64 +#define UVEC_CTYPE double +#include "libguile/convert.i.c" + +/* + Local Variables: + c-file-style: "gnu" + End: +*/