*** empty log message ***
[bpt/guile.git] / libguile / convert.c
CommitLineData
1fa86ca5
SJ
1/* Copyright (C) 2002 Free Software Foundation, Inc.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2, or (at your option)
6 * any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this software; see the file COPYING. If not, write to
15 * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
16 * Boston, MA 02111-1307 USA
17 *
18 * As a special exception, the Free Software Foundation gives permission
19 * for additional uses of the text contained in its release of GUILE.
20 *
21 * The exception is that, if you link the GUILE library with other files
22 * to produce an executable, this does not by itself cause the
23 * resulting executable to be covered by the GNU General Public License.
24 * Your use of that executable is in no way restricted on account of
25 * linking the GUILE library code into it.
26 *
27 * This exception does not however invalidate any other reasons why
28 * the executable file might be covered by the GNU General Public License.
29 *
30 * This exception applies only to the code released by the
31 * Free Software Foundation under the name GUILE. If you copy
32 * code from other Free Software Foundation releases into a copy of
33 * GUILE, as the General Public License permits, the exception does
34 * not apply to the code that you add in this way. To avoid misleading
35 * anyone as to the status of such modified files, you must delete
36 * this exception notice from them.
37 *
38 * If you write modifications of your own for GUILE, it is your choice
39 * whether to permit this exception to apply to your modifications.
40 * If you do not wish that, delete this exception notice. */
41
42\f
3c6be74a
RB
43#if HAVE_CONFIG_H
44# include <config.h>
45#endif
1fa86ca5
SJ
46
47#include "libguile/_scm.h"
48#include "libguile/validate.h"
49#include "libguile/strings.h"
50#include "libguile/vectors.h"
51#include "libguile/pairs.h"
3c6be74a 52#if SCM_HAVE_ARRAYS
1fa86ca5
SJ
53# include "libguile/unif.h"
54#endif
55
56#include "libguile/convert.h"
57
4f2716b6
GH
58#ifdef HAVE_STRING_H
59#include <string.h>
60#endif
61
97820583
SJ
62#define CTYPE char
63#define SIZEOF_CTYPE 1
64#define SCM2CTYPES_FN "scm_c_scm2chars"
65#define SCM2CTYPES scm_c_scm2chars
66#define CTYPES2SCM_FN "scm_c_chars2scm"
67#define CTYPES2SCM scm_c_chars2scm
68#define CTYPES2UVECT_FN "scm_c_chars2byvect"
69#define CTYPES2UVECT scm_c_chars2byvect
70#define UVECTTYPE scm_tc7_byvect
71#define SIZEOF_UVECTTYPE 1
72#define UVECTCTYPE char
73#define ARRAYTYPE scm_tc7_byvect
74#define SIZEOF_ARRAYTYPE 1
75#define ARRAYCTYPE char
1fa86ca5
SJ
76#include "convert.i.c"
77
97820583
SJ
78#define CTYPE short
79#define SIZEOF_CTYPE SIZEOF_SHORT
80#define SCM2CTYPES_FN "scm_c_scm2shorts"
81#define SCM2CTYPES scm_c_scm2shorts
82#define CTYPES2SCM_FN "scm_c_shorts2scm"
83#define CTYPES2SCM scm_c_shorts2scm
84#define CTYPES2UVECT_FN "scm_c_shorts2svect"
85#define CTYPES2UVECT scm_c_shorts2svect
86#define UVECTTYPE scm_tc7_svect
87#define SIZEOF_UVECTTYPE SIZEOF_SHORT
88#define UVECTCTYPE short
89#define ARRAYTYPE scm_tc7_svect
90#define SIZEOF_ARRAYTYPE SIZEOF_SHORT
91#define ARRAYCTYPE short
1fa86ca5
SJ
92#include "convert.i.c"
93
edb810bb
SJ
94#define CTYPE int
95#define SIZEOF_CTYPE SIZEOF_INT
96#define SCM2CTYPES_FN "scm_c_scm2ints"
97#define SCM2CTYPES scm_c_scm2ints
98#define CTYPES2SCM_FN "scm_c_ints2scm"
99#define CTYPES2SCM scm_c_ints2scm
100#define CTYPES2UVECT_FN "scm_c_ints2ivect"
101#define CTYPES2UVECT scm_c_ints2ivect
102#define UVECTTYPE scm_tc7_ivect
97820583
SJ
103#define SIZEOF_UVECTTYPE SIZEOF_LONG
104#define UVECTCTYPE long
edb810bb
SJ
105#define CTYPES2UVECT_FN_OPTIONAL "scm_c_uints2uvect"
106#define CTYPES2UVECT_OPTIONAL scm_c_uints2uvect
107#define UVECTTYPE_OPTIONAL scm_tc7_uvect
108#define ARRAYTYPE scm_tc7_ivect
97820583
SJ
109#define SIZEOF_ARRAYTYPE SIZEOF_LONG
110#define ARRAYCTYPE long
edb810bb 111#define ARRAYTYPE_OPTIONAL scm_tc7_uvect
1fa86ca5
SJ
112#include "convert.i.c"
113
edb810bb
SJ
114#define CTYPE long
115#define SIZEOF_CTYPE SIZEOF_LONG
116#define SCM2CTYPES_FN "scm_c_scm2longs"
117#define SCM2CTYPES scm_c_scm2longs
118#define CTYPES2SCM_FN "scm_c_longs2scm"
119#define CTYPES2SCM scm_c_longs2scm
120#define CTYPES2UVECT_FN "scm_c_longs2ivect"
121#define CTYPES2UVECT scm_c_longs2ivect
122#define UVECTTYPE scm_tc7_ivect
97820583
SJ
123#define SIZEOF_UVECTTYPE SIZEOF_LONG
124#define UVECTCTYPE long
edb810bb
SJ
125#define CTYPES2UVECT_FN_OPTIONAL "scm_c_ulongs2uvect"
126#define CTYPES2UVECT_OPTIONAL scm_c_ulongs2uvect
127#define UVECTTYPE_OPTIONAL scm_tc7_uvect
128#define ARRAYTYPE scm_tc7_ivect
97820583
SJ
129#define SIZEOF_ARRAYTYPE SIZEOF_LONG
130#define ARRAYCTYPE long
edb810bb 131#define ARRAYTYPE_OPTIONAL scm_tc7_uvect
1fa86ca5
SJ
132#include "convert.i.c"
133
edb810bb
SJ
134#define CTYPE float
135#define SIZEOF_CTYPE 0
136#define SCM2CTYPES_FN "scm_c_scm2floats"
137#define SCM2CTYPES scm_c_scm2floats
138#define CTYPES2SCM_FN "scm_c_floats2scm"
139#define CTYPES2SCM scm_c_floats2scm
140#define CTYPES2UVECT_FN "scm_c_floats2fvect"
141#define CTYPES2UVECT scm_c_floats2fvect
142#define UVECTTYPE scm_tc7_fvect
97820583 143#define SIZEOF_UVECTTYPE 0
edb810bb 144#define ARRAYTYPE scm_tc7_fvect
97820583 145#define SIZEOF_ARRAYTYPE 0
edb810bb
SJ
146#define ARRAYTYPE_OPTIONAL scm_tc7_dvect
147#define FLOATTYPE float
148#define FLOATTYPE_OPTIONAL double
1fa86ca5
SJ
149#include "convert.i.c"
150
edb810bb
SJ
151#define CTYPE double
152#define SIZEOF_CTYPE 0
153#define SCM2CTYPES_FN "scm_c_scm2doubles"
154#define SCM2CTYPES scm_c_scm2doubles
155#define CTYPES2SCM_FN "scm_c_doubles2scm"
156#define CTYPES2SCM scm_c_doubles2scm
157#define CTYPES2UVECT_FN "scm_c_doubles2dvect"
158#define CTYPES2UVECT scm_c_doubles2dvect
159#define UVECTTYPE scm_tc7_dvect
97820583 160#define SIZEOF_UVECTTYPE 0
edb810bb 161#define ARRAYTYPE scm_tc7_dvect
97820583 162#define SIZEOF_ARRAYTYPE 0
edb810bb
SJ
163#define ARRAYTYPE_OPTIONAL scm_tc7_fvect
164#define FLOATTYPE double
165#define FLOATTYPE_OPTIONAL float
1fa86ca5
SJ
166#include "convert.i.c"
167
168/*
169 Local Variables:
170 c-file-style: "gnu"
171 End:
172*/