101 |
while the vector is being created. */ |
while the vector is being created. */ |
102 |
SCM_VALIDATE_LIST_COPYLEN (1, l, i); |
SCM_VALIDATE_LIST_COPYLEN (1, l, i); |
103 |
res = scm_c_make_vector (i, SCM_UNSPECIFIED); |
res = scm_c_make_vector (i, SCM_UNSPECIFIED); |
104 |
data = SCM_VELTS (res); |
|
105 |
|
/* |
106 |
|
this code doesn't alloc. -- accessing RES is safe. |
107 |
|
*/ |
108 |
|
data = SCM_WRITABLE_VELTS (res); |
109 |
while (!SCM_NULL_OR_NIL_P (l)) |
while (!SCM_NULL_OR_NIL_P (l)) |
110 |
{ |
{ |
111 |
*data++ = SCM_CAR (l); |
*data++ = SCM_CAR (l); |
169 |
g_vector_set_x, scm_list_3 (v, k, obj), |
g_vector_set_x, scm_list_3 (v, k, obj), |
170 |
SCM_ARG2, s_vector_set_x); |
SCM_ARG2, s_vector_set_x); |
171 |
SCM_ASSERT_RANGE (2, k, SCM_INUM (k) < SCM_VECTOR_LENGTH (v) && SCM_INUM (k) >= 0); |
SCM_ASSERT_RANGE (2, k, SCM_INUM (k) < SCM_VECTOR_LENGTH (v) && SCM_INUM (k) >= 0); |
172 |
SCM_VELTS(v)[(long) SCM_INUM(k)] = obj; |
SCM_VECTOR_SET (v, (long) SCM_INUM(k), obj); |
173 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
174 |
} |
} |
175 |
#undef FUNC_NAME |
#undef FUNC_NAME |
239 |
{ |
{ |
240 |
SCM res = SCM_EOL; |
SCM res = SCM_EOL; |
241 |
long i; |
long i; |
242 |
SCM *data; |
SCM const *data; |
243 |
SCM_VALIDATE_VECTOR (1,v); |
SCM_VALIDATE_VECTOR (1, v); |
244 |
data = SCM_VELTS(v); |
data = SCM_VELTS(v); |
245 |
for(i = SCM_VECTOR_LENGTH(v)-1;i >= 0;i--) res = scm_cons(data[i], res); |
for(i = SCM_VECTOR_LENGTH(v)-1;i >= 0;i--) res = scm_cons(data[i], res); |
246 |
return res; |
return res; |
255 |
#define FUNC_NAME s_scm_vector_fill_x |
#define FUNC_NAME s_scm_vector_fill_x |
256 |
{ |
{ |
257 |
register long i; |
register long i; |
|
register SCM *data; |
|
258 |
SCM_VALIDATE_VECTOR (1, v); |
SCM_VALIDATE_VECTOR (1, v); |
259 |
data = SCM_VELTS (v); |
|
260 |
for(i = SCM_VECTOR_LENGTH (v) - 1; i >= 0; i--) |
for(i = SCM_VECTOR_LENGTH (v) - 1; i >= 0; i--) |
261 |
data[i] = fill; |
SCM_VECTOR_SET(v, i, fill); |
262 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
263 |
} |
} |
264 |
#undef FUNC_NAME |
#undef FUNC_NAME |
290 |
long j; |
long j; |
291 |
long e; |
long e; |
292 |
|
|
293 |
SCM_VALIDATE_VECTOR (1,vec1); |
SCM_VALIDATE_VECTOR (1, vec1); |
294 |
SCM_VALIDATE_INUM_COPY (2,start1,i); |
SCM_VALIDATE_INUM_COPY (2, start1, i); |
295 |
SCM_VALIDATE_INUM_COPY (3,end1,e); |
SCM_VALIDATE_INUM_COPY (3, end1, e); |
296 |
SCM_VALIDATE_VECTOR (4,vec2); |
SCM_VALIDATE_VECTOR (4, vec2); |
297 |
SCM_VALIDATE_INUM_COPY (5,start2,j); |
SCM_VALIDATE_INUM_COPY (5, start2, j); |
298 |
SCM_ASSERT_RANGE (2, start1, i <= SCM_VECTOR_LENGTH (vec1) && i >= 0); |
SCM_ASSERT_RANGE (2, start1, i <= SCM_VECTOR_LENGTH (vec1) && i >= 0); |
299 |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2) && j >= 0); |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2) && j >= 0); |
300 |
SCM_ASSERT_RANGE (3, end1, e <= SCM_VECTOR_LENGTH (vec1) && e >= 0); |
SCM_ASSERT_RANGE (3, end1, e <= SCM_VECTOR_LENGTH (vec1) && e >= 0); |
301 |
SCM_ASSERT_RANGE (5, start2, e-i+j <= SCM_VECTOR_LENGTH (vec2)); |
SCM_ASSERT_RANGE (5, start2, e-i+j <= SCM_VECTOR_LENGTH (vec2)); |
302 |
while (i<e) SCM_VELTS (vec2)[j++] = SCM_VELTS (vec1)[i++]; |
|
303 |
|
while (i<e) |
304 |
|
SCM_VECTOR_SET (vec2, j++, SCM_VELTS (vec1)[i++]); |
305 |
|
|
306 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
307 |
} |
} |
308 |
#undef FUNC_NAME |
#undef FUNC_NAME |
322 |
long j; |
long j; |
323 |
long e; |
long e; |
324 |
|
|
325 |
SCM_VALIDATE_VECTOR (1,vec1); |
SCM_VALIDATE_VECTOR (1, vec1); |
326 |
SCM_VALIDATE_INUM_COPY (2,start1,i); |
SCM_VALIDATE_INUM_COPY (2, start1, i); |
327 |
SCM_VALIDATE_INUM_COPY (3,end1,e); |
SCM_VALIDATE_INUM_COPY (3, end1, e); |
328 |
SCM_VALIDATE_VECTOR (4,vec2); |
SCM_VALIDATE_VECTOR (4, vec2); |
329 |
SCM_VALIDATE_INUM_COPY (5,start2,j); |
SCM_VALIDATE_INUM_COPY (5, start2, j); |
330 |
SCM_ASSERT_RANGE (2, start1, i <= SCM_VECTOR_LENGTH (vec1) && i >= 0); |
SCM_ASSERT_RANGE (2, start1, i <= SCM_VECTOR_LENGTH (vec1) && i >= 0); |
331 |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2) && j >= 0); |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2) && j >= 0); |
332 |
SCM_ASSERT_RANGE (3, end1, e <= SCM_VECTOR_LENGTH (vec1) && e >= 0); |
SCM_ASSERT_RANGE (3, end1, e <= SCM_VECTOR_LENGTH (vec1) && e >= 0); |
333 |
j = e - i + j; |
j = e - i + j; |
334 |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2)); |
SCM_ASSERT_RANGE (5, start2, j <= SCM_VECTOR_LENGTH (vec2)); |
335 |
while (i < e) |
while (i < e) |
336 |
SCM_VELTS (vec2)[--j] = SCM_VELTS (vec1)[--e]; |
SCM_VECTOR_SET (vec2, --j, SCM_VELTS (vec1)[--e]); |
337 |
return SCM_UNSPECIFIED; |
return SCM_UNSPECIFIED; |
338 |
} |
} |
339 |
#undef FUNC_NAME |
#undef FUNC_NAME |