… | |
… | |
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 | |
|
|
1359 | INTERFACE void |
|
|
1360 | vector_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 | |
1359 | INTERFACE pointer |
1368 | INTERFACE pointer |
1360 | vector_get (pointer vec, uint32_t ielem) |
1369 | vector_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) |