ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/microscheme/scheme.c
(Generate patch)

Comparing cvsroot/microscheme/scheme.c (file contents):
Revision 1.35 by root, Sun Nov 29 00:02:21 2015 UTC vs.
Revision 1.37 by root, Sun Nov 29 05:09:24 2015 UTC

1354 1354
1355 for (i = start; i < veclength (vec); i++) 1355 for (i = start; i < veclength (vec); i++)
1356 vecvalue (vec)[i] = obj; 1356 vecvalue (vec)[i] = obj;
1357} 1357}
1358 1358
1359INTERFACE void
1360vector_resize (pointer vec, uint32_t newsize, pointer fill)
1361{
1362 uint32_t oldsize = veclength (vec);
1363 vecvalue (vec) = realloc (vecvalue (vec), newsize * sizeof (pointer));
1364 veclength (vec) = newsize;
1365 fill_vector (vec, oldsize, fill);
1366}
1367
1359INTERFACE pointer 1368INTERFACE pointer
1360vector_get (pointer vec, uint32_t ielem) 1369vector_get (pointer vec, uint32_t ielem)
1361{ 1370{
1362 return vecvalue(vec)[ielem]; 1371 return vecvalue(vec)[ielem];
1363} 1372}
4378 } 4387 }
4379 4388
4380 case OP_VECLEN: /* vector-length */ 4389 case OP_VECLEN: /* vector-length */
4381 s_return (mk_integer (SCHEME_A_ veclength (x))); 4390 s_return (mk_integer (SCHEME_A_ veclength (x)));
4382 4391
4392 case OP_VECRESIZE:
4393 vector_resize (x, ivalue_unchecked (cadr (args)), caddr (args));
4394 s_return (x);
4395
4383 case OP_VECREF: /* vector-ref */ 4396 case OP_VECREF: /* vector-ref */
4384 { 4397 {
4385 int index = ivalue_unchecked (cadr (args)); 4398 int index = ivalue_unchecked (cadr (args));
4386 4399
4387 if (index >= veclength (car (args)) && USE_ERROR_CHECKING) 4400 if (index >= veclength (car (args)) && USE_ERROR_CHECKING)
4947 s_return (mk_atom (SCHEME_A_ readstr_upto (SCHEME_A_ 0, DELIMITERS))); 4960 s_return (mk_atom (SCHEME_A_ readstr_upto (SCHEME_A_ 0, DELIMITERS)));
4948 4961
4949 case TOK_DOTATOM: 4962 case TOK_DOTATOM:
4950 SCHEME_V->strbuff[0] = '.'; 4963 SCHEME_V->strbuff[0] = '.';
4951 s_return (mk_atom (SCHEME_A_ readstr_upto (SCHEME_A_ 1, DELIMITERS))); 4964 s_return (mk_atom (SCHEME_A_ readstr_upto (SCHEME_A_ 1, DELIMITERS)));
4965
4966 case TOK_STRATOM:
4967 x = readstrexp (SCHEME_A_ '|');
4968 //TODO: haven't checked whether the garbage collector could interfere
4969 s_return (mk_atom (SCHEME_A_ strvalue (x)));
4952 4970
4953 case TOK_DQUOTE: 4971 case TOK_DQUOTE:
4954 x = readstrexp (SCHEME_A_ '"'); 4972 x = readstrexp (SCHEME_A_ '"');
4955 4973
4956 if (x == S_F) 4974 if (x == S_F)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines