X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=guile18%2Flibguile%2Fconvert.c;fp=guile18%2Flibguile%2Fconvert.c;h=700deaa879a0d3618512d9e66f18343c16abdf74;hb=139c38d9204dd07f6b235f83bae644faedbc63fd;hp=0000000000000000000000000000000000000000;hpb=652ed35a2013489d0a14fede6307cd2595abb2c4;p=lilypond.git diff --git a/guile18/libguile/convert.c b/guile18/libguile/convert.c new file mode 100644 index 0000000000..700deaa879 --- /dev/null +++ b/guile18/libguile/convert.c @@ -0,0 +1,146 @@ +/* Copyright (C) 2002, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifdef 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: +*/