*** empty log message ***
[bpt/guile.git] / libguile / srfi-4.h
CommitLineData
f8579182
MV
1#ifndef SCM_SRFI_4_H
2#define SCM_SRFI_4_H
3/* srfi-4.c --- Homogeneous numeric vector datatypes.
4 *
5 * Copyright (C) 2001, 2004 Free Software Foundation, Inc.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21\f
22
23#include "libguile/__scm.h"
24
e0e49670
MV
25/* Generic procedures.
26 */
27
28SCM_API SCM scm_uniform_vector_p (SCM v);
29SCM_API SCM scm_uniform_vector_length (SCM v);
30SCM_API SCM scm_uniform_vector_ref (SCM v, SCM idx);
31SCM_API SCM scm_uniform_vector_set_x (SCM v, SCM idx, SCM val);
32SCM_API SCM scm_uniform_vector_to_list (SCM v);
33
34SCM_API int scm_is_uniform_vector (SCM obj);
35SCM_API size_t scm_c_uniform_vector_length (SCM v);
36SCM_API size_t scm_c_uniform_vector_size (SCM v);
37
38SCM_API void *scm_uniform_vector_elements (SCM uvec);
39SCM_API size_t scm_uniform_vector_element_size (SCM uvec);
40SCM_API void scm_uniform_vector_release (SCM uvec);
41
42/* Specific procedures.
43 */
44
f8579182
MV
45SCM_API SCM scm_u8vector_p (SCM obj);
46SCM_API SCM scm_make_u8vector (SCM n, SCM fill);
faa00365 47SCM_API SCM scm_take_u8vector (const scm_t_uint8 *data, size_t n);
f8579182
MV
48SCM_API SCM scm_u8vector (SCM l);
49SCM_API SCM scm_u8vector_length (SCM uvec);
50SCM_API SCM scm_u8vector_ref (SCM uvec, SCM index);
51SCM_API SCM scm_u8vector_set_x (SCM uvec, SCM index, SCM value);
52SCM_API SCM scm_u8vector_to_list (SCM uvec);
53SCM_API SCM scm_list_to_u8vector (SCM l);
e0e49670 54SCM_API scm_t_uint8 *scm_u8vector_elements (SCM uvec);
f8579182
MV
55
56SCM_API SCM scm_s8vector_p (SCM obj);
57SCM_API SCM scm_make_s8vector (SCM n, SCM fill);
faa00365 58SCM_API SCM scm_take_s8vector (const scm_t_int8 *data, size_t n);
f8579182
MV
59SCM_API SCM scm_s8vector (SCM l);
60SCM_API SCM scm_s8vector_length (SCM uvec);
61SCM_API SCM scm_s8vector_ref (SCM uvec, SCM index);
62SCM_API SCM scm_s8vector_set_x (SCM uvec, SCM index, SCM value);
63SCM_API SCM scm_s8vector_to_list (SCM uvec);
64SCM_API SCM scm_list_to_s8vector (SCM l);
e0e49670 65SCM_API scm_t_int8 *scm_s8vector_elements (SCM uvec);
f8579182
MV
66
67SCM_API SCM scm_u16vector_p (SCM obj);
68SCM_API SCM scm_make_u16vector (SCM n, SCM fill);
faa00365 69SCM_API SCM scm_take_u16vector (const scm_t_uint16 *data, size_t n);
f8579182
MV
70SCM_API SCM scm_u16vector (SCM l);
71SCM_API SCM scm_u16vector_length (SCM uvec);
72SCM_API SCM scm_u16vector_ref (SCM uvec, SCM index);
73SCM_API SCM scm_u16vector_set_x (SCM uvec, SCM index, SCM value);
74SCM_API SCM scm_u16vector_to_list (SCM uvec);
75SCM_API SCM scm_list_to_u16vector (SCM l);
e0e49670 76SCM_API scm_t_uint16 *scm_u16vector_elements (SCM uvec);
f8579182
MV
77
78SCM_API SCM scm_s16vector_p (SCM obj);
79SCM_API SCM scm_make_s16vector (SCM n, SCM fill);
faa00365 80SCM_API SCM scm_take_s16vector (const scm_t_int16 *data, size_t n);
f8579182
MV
81SCM_API SCM scm_s16vector (SCM l);
82SCM_API SCM scm_s16vector_length (SCM uvec);
83SCM_API SCM scm_s16vector_ref (SCM uvec, SCM index);
84SCM_API SCM scm_s16vector_set_x (SCM uvec, SCM index, SCM value);
85SCM_API SCM scm_s16vector_to_list (SCM uvec);
86SCM_API SCM scm_list_to_s16vector (SCM l);
e0e49670 87SCM_API scm_t_int16 *scm_s16vector_elements (SCM uvec);
f8579182
MV
88
89SCM_API SCM scm_u32vector_p (SCM obj);
90SCM_API SCM scm_make_u32vector (SCM n, SCM fill);
faa00365 91SCM_API SCM scm_take_u32vector (const scm_t_uint32 *data, size_t n);
f8579182
MV
92SCM_API SCM scm_u32vector (SCM l);
93SCM_API SCM scm_u32vector_length (SCM uvec);
94SCM_API SCM scm_u32vector_ref (SCM uvec, SCM index);
95SCM_API SCM scm_u32vector_set_x (SCM uvec, SCM index, SCM value);
96SCM_API SCM scm_u32vector_to_list (SCM uvec);
97SCM_API SCM scm_list_to_u32vector (SCM l);
e0e49670 98SCM_API scm_t_uint32 *scm_u32vector_elements (SCM uvec);
f8579182
MV
99
100SCM_API SCM scm_s32vector_p (SCM obj);
101SCM_API SCM scm_make_s32vector (SCM n, SCM fill);
faa00365 102SCM_API SCM scm_take_s32vector (const scm_t_int32 *data, size_t n);
f8579182
MV
103SCM_API SCM scm_s32vector (SCM l);
104SCM_API SCM scm_s32vector_length (SCM uvec);
105SCM_API SCM scm_s32vector_ref (SCM uvec, SCM index);
106SCM_API SCM scm_s32vector_set_x (SCM uvec, SCM index, SCM value);
107SCM_API SCM scm_s32vector_to_list (SCM uvec);
108SCM_API SCM scm_list_to_s32vector (SCM l);
e0e49670 109SCM_API scm_t_int32 *scm_s32vector_elements (SCM uvec);
f8579182
MV
110
111SCM_API SCM scm_u64vector_p (SCM obj);
112SCM_API SCM scm_make_u64vector (SCM n, SCM fill);
faa00365 113SCM_API SCM scm_take_u64vector (const scm_t_uint64 *data, size_t n);
f8579182
MV
114SCM_API SCM scm_u64vector (SCM l);
115SCM_API SCM scm_u64vector_length (SCM uvec);
116SCM_API SCM scm_u64vector_ref (SCM uvec, SCM index);
117SCM_API SCM scm_u64vector_set_x (SCM uvec, SCM index, SCM value);
118SCM_API SCM scm_u64vector_to_list (SCM uvec);
119SCM_API SCM scm_list_to_u64vector (SCM l);
e0e49670 120SCM_API scm_t_uint64 *scm_u64vector_elements (SCM uvec);
f8579182
MV
121
122SCM_API SCM scm_s64vector_p (SCM obj);
123SCM_API SCM scm_make_s64vector (SCM n, SCM fill);
faa00365 124SCM_API SCM scm_take_s64vector (const scm_t_int64 *data, size_t n);
f8579182
MV
125SCM_API SCM scm_s64vector (SCM l);
126SCM_API SCM scm_s64vector_length (SCM uvec);
127SCM_API SCM scm_s64vector_ref (SCM uvec, SCM index);
128SCM_API SCM scm_s64vector_set_x (SCM uvec, SCM index, SCM value);
129SCM_API SCM scm_s64vector_to_list (SCM uvec);
130SCM_API SCM scm_list_to_s64vector (SCM l);
e0e49670 131SCM_API scm_t_int64 *scm_s64vector_elements (SCM uvec);
f8579182
MV
132
133SCM_API SCM scm_f32vector_p (SCM obj);
134SCM_API SCM scm_make_f32vector (SCM n, SCM fill);
faa00365 135SCM_API SCM scm_take_f32vector (const float *data, size_t n);
f8579182
MV
136SCM_API SCM scm_f32vector (SCM l);
137SCM_API SCM scm_f32vector_length (SCM uvec);
138SCM_API SCM scm_f32vector_ref (SCM uvec, SCM index);
139SCM_API SCM scm_f32vector_set_x (SCM uvec, SCM index, SCM value);
140SCM_API SCM scm_f32vector_to_list (SCM uvec);
141SCM_API SCM scm_list_to_f32vector (SCM l);
e0e49670 142SCM_API float *scm_f32vector_elements (SCM uvec);
f8579182
MV
143
144SCM_API SCM scm_f64vector_p (SCM obj);
145SCM_API SCM scm_make_f64vector (SCM n, SCM fill);
faa00365 146SCM_API SCM scm_take_f64vector (const double *data, size_t n);
f8579182
MV
147SCM_API SCM scm_f64vector (SCM l);
148SCM_API SCM scm_f64vector_length (SCM uvec);
149SCM_API SCM scm_f64vector_ref (SCM uvec, SCM index);
150SCM_API SCM scm_f64vector_set_x (SCM uvec, SCM index, SCM value);
151SCM_API SCM scm_f64vector_to_list (SCM uvec);
152SCM_API SCM scm_list_to_f64vector (SCM l);
e0e49670 153SCM_API double *scm_f64vector_elements (SCM uvec);
f8579182 154
cbdc8379
MV
155SCM_API SCM scm_c32vector_p (SCM obj);
156SCM_API SCM scm_make_c32vector (SCM n, SCM fill);
157SCM_API SCM scm_take_c32vector (const float *data, size_t n);
158SCM_API SCM scm_c32vector (SCM l);
159SCM_API SCM scm_c32vector_length (SCM uvec);
160SCM_API SCM scm_c32vector_ref (SCM uvec, SCM index);
161SCM_API SCM scm_c32vector_set_x (SCM uvec, SCM index, SCM value);
162SCM_API SCM scm_c32vector_to_list (SCM uvec);
163SCM_API SCM scm_list_to_c32vector (SCM l);
164SCM_API float *scm_c32vector_elements (SCM uvec);
165
166SCM_API SCM scm_c64vector_p (SCM obj);
167SCM_API SCM scm_make_c64vector (SCM n, SCM fill);
168SCM_API SCM scm_take_c64vector (const double *data, size_t n);
169SCM_API SCM scm_c64vector (SCM l);
170SCM_API SCM scm_c64vector_length (SCM uvec);
171SCM_API SCM scm_c64vector_ref (SCM uvec, SCM index);
172SCM_API SCM scm_c64vector_set_x (SCM uvec, SCM index, SCM value);
173SCM_API SCM scm_c64vector_to_list (SCM uvec);
174SCM_API SCM scm_list_to_c64vector (SCM l);
175SCM_API double *scm_c64vector_elements (SCM uvec);
176
177SCM_API SCM scm_i_uniform_vector_creator (SCM uvec);
e0e49670
MV
178SCM_API const char *scm_i_uniform_vector_tag (SCM uvec);
179
180SCM_API size_t scm_uniform_element_size (SCM obj);
f8579182 181
cbdc8379
MV
182SCM_API SCM scm_i_proc_make_u8vector;
183SCM_API SCM scm_i_proc_make_s8vector;
184SCM_API SCM scm_i_proc_make_u16vector;
185SCM_API SCM scm_i_proc_make_s16vector;
186SCM_API SCM scm_i_proc_make_u32vector;
187SCM_API SCM scm_i_proc_make_s32vector;
188SCM_API SCM scm_i_proc_make_u64vector;
189SCM_API SCM scm_i_proc_make_s64vector;
190SCM_API SCM scm_i_proc_make_f32vector;
191SCM_API SCM scm_i_proc_make_f64vector;
192SCM_API SCM scm_i_proc_make_c32vector;
193SCM_API SCM scm_i_proc_make_c64vector;
194
f8579182
MV
195SCM_API void scm_init_srfi_4 (void);
196
197#endif /* SCM_SRFI_4_H */