Lines Matching refs:argv

27 subr_eq_pred(VM* vm, int argc, scm_obj_t argv[])  in subr_eq_pred()  argument
30 if (argv[0] == argv[1]) return scm_true; in subr_eq_pred()
33 wrong_number_of_arguments_violation(vm, "eq?", 2, 2, argc, argv); in subr_eq_pred()
39 subr_eqv_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_eqv_pred() argument
42 return eqv_pred(argv[0], argv[1]) ? scm_true : scm_false; in subr_eqv_pred()
44 wrong_number_of_arguments_violation(vm, "eqv?", 2, 2, argc, argv); in subr_eqv_pred()
50 subr_equal_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_equal_pred() argument
55 return equal_pred(vm->m_heap, visited, argv[0], argv[1]) ? scm_true : scm_false; in subr_equal_pred()
57 wrong_number_of_arguments_violation(vm, "equal?", 2, 2, argc, argv); in subr_equal_pred()
65 subr_procedure_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_procedure_pred() argument
68 scm_obj_t obj = argv[0]; in subr_procedure_pred()
75 wrong_number_of_arguments_violation(vm, "procedure?", 1, 1, argc, argv); in subr_procedure_pred()
83 subr_unspecified(VM* vm, int argc, scm_obj_t argv[]) in subr_unspecified() argument
86 wrong_number_of_arguments_violation(vm, "unspecified", 0, 0, argc, argv); in subr_unspecified()
92 subr_unspecified_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_unspecified_pred() argument
94 if (argc == 1) return (argv[0] == scm_unspecified) ? scm_true : scm_false; in subr_unspecified_pred()
95 wrong_number_of_arguments_violation(vm, "unspecified?", 1, 1, argc, argv); in subr_unspecified_pred()
105 subr_not(VM* vm, int argc, scm_obj_t argv[]) in subr_not() argument
107 if (argc == 1) return (argv[0] == scm_false) ? scm_true : scm_false; in subr_not()
108 wrong_number_of_arguments_violation(vm, "not", 1, 1, argc, argv); in subr_not()
114 subr_boolean_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_boolean_pred() argument
116 if (argc == 1) return BOOLP(argv[0]) ? scm_true : scm_false; in subr_boolean_pred()
117 wrong_number_of_arguments_violation(vm, "boolean?", 1, 1, argc, argv); in subr_boolean_pred()
123 subr_boolean_eq_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_boolean_eq_pred() argument
126 if (BOOLP(argv[0])) { in subr_boolean_eq_pred()
127 if (BOOLP(argv[1])) { in subr_boolean_eq_pred()
128 return (argv[0] == argv[1]) ? scm_true : scm_false; in subr_boolean_eq_pred()
130 wrong_type_argument_violation(vm, "boolean=?", 1, "boolean", argv[1], argc, argv); in subr_boolean_eq_pred()
133 wrong_type_argument_violation(vm, "boolean=?", 0, "boolean", argv[0], argc, argv); in subr_boolean_eq_pred()
138 if (BOOLP(argv[i])) continue; in subr_boolean_eq_pred()
139 wrong_type_argument_violation(vm, "boolean=?", i, "boolean", argv[i], argc, argv); in subr_boolean_eq_pred()
143 if (argv[i] == argv[i + 1]) continue; in subr_boolean_eq_pred()
148 wrong_number_of_arguments_violation(vm, "boolean=?", 2, -1, argc, argv); in subr_boolean_eq_pred()
156 subr_pair_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_pair_pred() argument
158 if (argc == 1) return PAIRP(argv[0]) ? scm_true : scm_false; in subr_pair_pred()
159 wrong_number_of_arguments_violation(vm, "pair?", 1, 1, argc, argv); in subr_pair_pred()
165 subr_cons(VM* vm, int argc, scm_obj_t argv[]) in subr_cons() argument
167 if (argc == 2) return make_pair(vm->m_heap, argv[0], argv[1]); in subr_cons()
168 wrong_number_of_arguments_violation(vm, "cons", 2, 2, argc, argv); in subr_cons()
174 subr_car(VM* vm, int argc, scm_obj_t argv[]) in subr_car() argument
177 if (PAIRP(argv[0])) return CAR(argv[0]); in subr_car()
178 wrong_type_argument_violation(vm, "car", 0, "pair", argv[0], argc, argv); in subr_car()
181 wrong_number_of_arguments_violation(vm, "car", 1, 1, argc, argv); in subr_car()
187 subr_cdr(VM* vm, int argc, scm_obj_t argv[]) in subr_cdr() argument
190 if (PAIRP(argv[0])) return CDR(argv[0]); in subr_cdr()
191 wrong_type_argument_violation(vm, "cdr", 0, "pair", argv[0], argc, argv); in subr_cdr()
194 wrong_number_of_arguments_violation(vm, "cdr", 1, 1, argc, argv); in subr_cdr()
200 subr_caar(VM* vm, int argc, scm_obj_t argv[]) in subr_caar() argument
203 if (PAIRP(argv[0]) && PAIRP(CAR(argv[0]))) return CAAR(argv[0]); in subr_caar()
204 … wrong_type_argument_violation(vm, "caar", 0, "appropriate list structure", argv[0], argc, argv); in subr_caar()
207 wrong_number_of_arguments_violation(vm, "caar", 1, 1, argc, argv); in subr_caar()
213 subr_cdar(VM* vm, int argc, scm_obj_t argv[]) in subr_cdar() argument
216 if (PAIRP(argv[0]) && PAIRP(CAR(argv[0]))) return CDAR(argv[0]); in subr_cdar()
217 … wrong_type_argument_violation(vm, "cdar", 0, "appropriate list structure", argv[0], argc, argv); in subr_cdar()
220 wrong_number_of_arguments_violation(vm, "cdar", 1, 1, argc, argv); in subr_cdar()
226 subr_cadr(VM* vm, int argc, scm_obj_t argv[]) in subr_cadr() argument
229 if (PAIRP(argv[0]) && PAIRP(CDR(argv[0]))) return CADR(argv[0]); in subr_cadr()
230 … wrong_type_argument_violation(vm, "cadr", 0, "appropriate list structure", argv[0], argc, argv); in subr_cadr()
233 wrong_number_of_arguments_violation(vm, "cadr", 1, 1, argc, argv); in subr_cadr()
239 subr_cddr(VM* vm, int argc, scm_obj_t argv[]) in subr_cddr() argument
242 if (PAIRP(argv[0]) && PAIRP(CDR(argv[0]))) return CDDR(argv[0]); in subr_cddr()
243 … wrong_type_argument_violation(vm, "cddr", 0, "appropriate list structure", argv[0], argc, argv); in subr_cddr()
246 wrong_number_of_arguments_violation(vm, "cddr", 1, 1, argc, argv); in subr_cddr()
252 subr_caddr(VM* vm, int argc, scm_obj_t argv[]) in subr_caddr() argument
255 if (PAIRP(argv[0]) && PAIRP(CDR(argv[0])) && PAIRP(CDDR(argv[0]))) return CADDR(argv[0]); in subr_caddr()
256 … wrong_type_argument_violation(vm, "caddr", 0, "appropriate list structure", argv[0], argc, argv); in subr_caddr()
259 wrong_number_of_arguments_violation(vm, "caddr", 1, 1, argc, argv); in subr_caddr()
265 subr_null_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_null_pred() argument
267 if (argc == 1) return (argv[0] == scm_nil) ? scm_true : scm_false; in subr_null_pred()
268 wrong_number_of_arguments_violation(vm, "null?", 1, 1, argc, argv); in subr_null_pred()
274 subr_list_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_list_pred() argument
276 if (argc == 1) return listp(argv[0]) ? scm_true : scm_false; in subr_list_pred()
277 wrong_number_of_arguments_violation(vm, "list?", 1, 1, argc, argv); in subr_list_pred()
283 subr_list(VM* vm, int argc, scm_obj_t argv[]) in subr_list() argument
286 for (int i = argc - 1; i >= 0; i--) obj = make_pair(vm->m_heap, argv[i], obj); in subr_list()
292 subr_length(VM* vm, int argc, scm_obj_t argv[]) in subr_length() argument
295 if (listp(argv[0])) return MAKEFIXNUM(list_length(argv[0])); in subr_length()
296 wrong_type_argument_violation(vm, "length", 0, "proper list", argv[0], argc, argv); in subr_length()
299 wrong_number_of_arguments_violation(vm, "length", 1, 1, argc, argv); in subr_length()
330 subr_append(VM* vm, int argc, scm_obj_t argv[]) in subr_append() argument
333 if (listp(argv[i])) continue; in subr_append()
334 wrong_type_argument_violation(vm, "append", i, "proper list", argv[i], argc, argv); in subr_append()
338 if (argc == 1) return argv[0]; in subr_append()
341 if (obj == scm_undef) obj = argv[i]; in subr_append()
342 else obj = append2(vm->m_heap, argv[i], obj); in subr_append()
349 subr_reverse(VM* vm, int argc, scm_obj_t argv[]) in subr_reverse() argument
352 if (listp(argv[0])) { in subr_reverse()
353 scm_obj_t lst = argv[0]; in subr_reverse()
361 wrong_type_argument_violation(vm, "reverse", 0, "proper list", argv[0], argc, argv); in subr_reverse()
364 wrong_number_of_arguments_violation(vm, "reverse", 1, 1, argc, argv); in subr_reverse()
370 subr_list_tail(VM* vm, int argc, scm_obj_t argv[]) in subr_list_tail() argument
373 if (PAIRP(argv[0])) { in subr_list_tail()
374 if (FIXNUMP(argv[1])) { in subr_list_tail()
375 scm_obj_t obj = list_tail(argv[0], FIXNUM(argv[1])); in subr_list_tail()
378 if (exact_non_negative_integer_pred(argv[1])) { in subr_list_tail()
379 … invalid_argument_violation(vm, "list-tail", "index out of bounds,", argv[1], 1, argc, argv); in subr_list_tail()
382 …ong_type_argument_violation(vm, "list-tail", 1, "exact non-negative integer", argv[1], argc, argv); in subr_list_tail()
385 if (FIXNUMP(argv[1]) && FIXNUM(argv[1]) == 0) return argv[0]; in subr_list_tail()
386 if (exact_non_negative_integer_pred(argv[1])) { in subr_list_tail()
387 … invalid_argument_violation(vm, "list-tail", "index out of bounds,", argv[1], 1, argc, argv); in subr_list_tail()
390 …ong_type_argument_violation(vm, "list-tail", 1, "exact non-negative integer", argv[1], argc, argv); in subr_list_tail()
393 wrong_number_of_arguments_violation(vm, "list-tail", 2, 2, argc, argv); in subr_list_tail()
399 subr_list_ref(VM* vm, int argc, scm_obj_t argv[]) in subr_list_ref() argument
402 if (PAIRP(argv[0])) { in subr_list_ref()
403 if (FIXNUMP(argv[1])) { in subr_list_ref()
404 scm_obj_t obj = list_ref(argv[0], FIXNUM(argv[1])); in subr_list_ref()
407 if (exact_non_negative_integer_pred(argv[1])) { in subr_list_ref()
408 … invalid_argument_violation(vm, "list-ref", "index out of bounds,", argv[1], 1, argc, argv); in subr_list_ref()
411 …rong_type_argument_violation(vm, "list-ref", 1, "exact non-negative integer", argv[1], argc, argv); in subr_list_ref()
414 wrong_type_argument_violation(vm, "list-ref", 0, "pair", argv[0], argc, argv); in subr_list_ref()
417 wrong_number_of_arguments_violation(vm, "list-ref", 2, 2, argc, argv); in subr_list_ref()
427 subr_symbol_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_symbol_pred() argument
430 return SYMBOLP(argv[0]) ? scm_true : scm_false; in subr_symbol_pred()
432 wrong_number_of_arguments_violation(vm, "symbol?", 1, 1, argc, argv); in subr_symbol_pred()
438 subr_symbol_eq_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_symbol_eq_pred() argument
441 if (SYMBOLP(argv[0])) { in subr_symbol_eq_pred()
442 if (SYMBOLP(argv[1])) { in subr_symbol_eq_pred()
443 return (argv[0] == argv[1]) ? scm_true : scm_false; in subr_symbol_eq_pred()
445 wrong_type_argument_violation(vm, "symbol=?", 1, "symbol", argv[1], argc, argv); in subr_symbol_eq_pred()
448 wrong_type_argument_violation(vm, "symbol=?", 0, "symbol", argv[0], argc, argv); in subr_symbol_eq_pred()
453 if (SYMBOLP(argv[i])) continue; in subr_symbol_eq_pred()
454 wrong_type_argument_violation(vm, "symbol=?", i, "symbol", argv[i], argc, argv); in subr_symbol_eq_pred()
458 if (argv[i] == argv[i + 1]) continue; in subr_symbol_eq_pred()
463 wrong_number_of_arguments_violation(vm, "symbol=?", 2, -1, argc, argv); in subr_symbol_eq_pred()
468 subr_symbol_string(VM* vm, int argc, scm_obj_t argv[]) in subr_symbol_string() argument
471 if (SYMBOLP(argv[0])) { in subr_symbol_string()
472 scm_symbol_t symbol = (scm_symbol_t)argv[0]; in subr_symbol_string()
475 wrong_type_argument_violation(vm, "symbol->string", 0, "symbol", argv[0], argc, argv); in subr_symbol_string()
478 wrong_number_of_arguments_violation(vm, "symbol->string", 1, 1, argc, argv); in subr_symbol_string()
484 subr_string_symbol(VM* vm, int argc, scm_obj_t argv[]) in subr_string_symbol() argument
487 if (STRINGP(argv[0])) { in subr_string_symbol()
488 scm_string_t string = (scm_string_t)argv[0]; in subr_string_symbol()
491 wrong_type_argument_violation(vm, "string->symbol", 0, "string", argv[0], argc, argv); in subr_string_symbol()
494 wrong_number_of_arguments_violation(vm, "string->symbol", 1, 1, argc, argv); in subr_string_symbol()
502 subr_char_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_pred() argument
504 if (argc == 1) return CHARP(argv[0]) ? scm_true : scm_false; in subr_char_pred()
505 wrong_number_of_arguments_violation(vm, "char?", 1, 1, argc, argv); in subr_char_pred()
511 subr_char_integer(VM* vm, int argc, scm_obj_t argv[]) in subr_char_integer() argument
514 if (CHARP(argv[0])) return MAKEFIXNUM(CHAR(argv[0])); in subr_char_integer()
515 wrong_type_argument_violation(vm, "char->integer", 0, "char", argv[0], argc, argv); in subr_char_integer()
518 wrong_number_of_arguments_violation(vm, "char->integer", 1, 1, argc, argv); in subr_char_integer()
524 subr_integer_char(VM* vm, int argc, scm_obj_t argv[]) in subr_integer_char() argument
527 if (exact_non_negative_integer_pred(argv[0])) { in subr_integer_char()
528 if (FIXNUMP(argv[0])) { in subr_integer_char()
529 uint32_t c = FIXNUM(argv[0]); in subr_integer_char()
531 …nvalid_argument_violation(vm, "integer->char", "code point out of range,", argv[0], 0, argc, argv); in subr_integer_char()
535 …d_argument_violation(vm, "integer->char", "code point in excluded range,", argv[0], 0, argc, argv); in subr_integer_char()
540 …nvalid_argument_violation(vm, "integer->char", "code point out of range,", argv[0], 0, argc, argv); in subr_integer_char()
543 …type_argument_violation(vm, "integer->char", 0, "exact non-negative integer", argv[0], argc, argv); in subr_integer_char()
546 wrong_number_of_arguments_violation(vm, "integer->char", 1, 1, argc, argv); in subr_integer_char()
552 subr_char_eq_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_eq_pred() argument
555 if (CHARP(argv[0])) { in subr_char_eq_pred()
556 if (CHARP(argv[1])) { in subr_char_eq_pred()
557 return (CHAR(argv[0]) == CHAR(argv[1])) ? scm_true : scm_false; in subr_char_eq_pred()
559 wrong_type_argument_violation(vm, "char=?", 1, "char", argv[1], argc, argv); in subr_char_eq_pred()
562 wrong_type_argument_violation(vm, "char=?", 0, "char", argv[0], argc, argv); in subr_char_eq_pred()
567 if (CHARP(argv[i])) continue; in subr_char_eq_pred()
568 wrong_type_argument_violation(vm, "char=?", i, "char", argv[i], argc, argv); in subr_char_eq_pred()
572 if (CHAR(argv[i]) == CHAR(argv[i + 1])) continue; in subr_char_eq_pred()
577 wrong_number_of_arguments_violation(vm, "char=?", 2, -1, argc, argv); in subr_char_eq_pred()
583 subr_char_lt_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_lt_pred() argument
586 if (CHARP(argv[0])) { in subr_char_lt_pred()
587 if (CHARP(argv[1])) { in subr_char_lt_pred()
588 return (CHAR(argv[0]) < CHAR(argv[1])) ? scm_true : scm_false; in subr_char_lt_pred()
590 wrong_type_argument_violation(vm, "char<?", 1, "char", argv[1], argc, argv); in subr_char_lt_pred()
593 wrong_type_argument_violation(vm, "char<?", 0, "char", argv[0], argc, argv); in subr_char_lt_pred()
598 if (CHARP(argv[i])) continue; in subr_char_lt_pred()
599 wrong_type_argument_violation(vm, "char<?", i, "char", argv[i], argc, argv); in subr_char_lt_pred()
603 if (CHAR(argv[i]) < CHAR(argv[i + 1])) continue; in subr_char_lt_pred()
608 wrong_number_of_arguments_violation(vm, "char<?", 2, -1, argc, argv); in subr_char_lt_pred()
614 subr_char_gt_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_gt_pred() argument
617 if (CHARP(argv[0])) { in subr_char_gt_pred()
618 if (CHARP(argv[1])) { in subr_char_gt_pred()
619 return (CHAR(argv[0]) > CHAR(argv[1])) ? scm_true : scm_false; in subr_char_gt_pred()
621 wrong_type_argument_violation(vm, "char>?", 1, "char", argv[1], argc, argv); in subr_char_gt_pred()
624 wrong_type_argument_violation(vm, "char>?", 0, "char", argv[0], argc, argv); in subr_char_gt_pred()
629 if (CHARP(argv[i])) continue; in subr_char_gt_pred()
630 wrong_type_argument_violation(vm, "char>?", i, "char", argv[i], argc, argv); in subr_char_gt_pred()
634 if (CHAR(argv[i]) > CHAR(argv[i + 1])) continue; in subr_char_gt_pred()
639 wrong_number_of_arguments_violation(vm, "char>?", 2, -1, argc, argv); in subr_char_gt_pred()
645 subr_char_le_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_le_pred() argument
648 if (CHARP(argv[0])) { in subr_char_le_pred()
649 if (CHARP(argv[1])) { in subr_char_le_pred()
650 return (CHAR(argv[0]) <= CHAR(argv[1])) ? scm_true : scm_false; in subr_char_le_pred()
652 wrong_type_argument_violation(vm, "char<=?", 1, "char", argv[1], argc, argv); in subr_char_le_pred()
655 wrong_type_argument_violation(vm, "char<=?", 0, "char", argv[0], argc, argv); in subr_char_le_pred()
660 if (CHARP(argv[i])) continue; in subr_char_le_pred()
661 wrong_type_argument_violation(vm, "char<=?", i, "char", argv[i], argc, argv); in subr_char_le_pred()
665 if (CHAR(argv[i]) <= CHAR(argv[i + 1])) continue; in subr_char_le_pred()
670 wrong_number_of_arguments_violation(vm, "char<=?", 2, -1, argc, argv); in subr_char_le_pred()
676 subr_char_ge_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_char_ge_pred() argument
679 if (CHARP(argv[0])) { in subr_char_ge_pred()
680 if (CHARP(argv[1])) { in subr_char_ge_pred()
681 return (CHAR(argv[0]) >= CHAR(argv[1])) ? scm_true : scm_false; in subr_char_ge_pred()
683 wrong_type_argument_violation(vm, "char>=?", 1, "char", argv[1], argc, argv); in subr_char_ge_pred()
686 wrong_type_argument_violation(vm, "char>=?", 0, "char", argv[0], argc, argv); in subr_char_ge_pred()
691 if (CHARP(argv[i])) continue; in subr_char_ge_pred()
692 wrong_type_argument_violation(vm, "char>=?", i, "char", argv[i], argc, argv); in subr_char_ge_pred()
696 if (CHAR(argv[i]) >= CHAR(argv[i + 1])) continue; in subr_char_ge_pred()
701 wrong_number_of_arguments_violation(vm, "char>=?", 2, -1, argc, argv); in subr_char_ge_pred()
709 subr_string_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_pred() argument
711 if (argc == 1) return STRINGP(argv[0]) ? scm_true : scm_false; in subr_string_pred()
712 wrong_number_of_arguments_violation(vm, "string?", 1, 1, argc, argv); in subr_string_pred()
718 subr_make_string(VM* vm, int argc, scm_obj_t argv[]) in subr_make_string() argument
721 if (FIXNUMP(argv[0]) && FIXNUM(argv[0]) >= 0) { in subr_make_string()
722 scm_string_t string = make_string(vm->m_heap, FIXNUM(argv[0]), 0x20); in subr_make_string()
723 if (string->size == FIXNUM(argv[0])) return string; in subr_make_string()
725 if (exact_non_negative_integer_pred(argv[0])) { in subr_make_string()
726 … invalid_argument_violation(vm, "make-string", "too many elements,", argv[0], 0, argc, argv); in subr_make_string()
729 …g_type_argument_violation(vm, "make-string", 0, "exact non-negative integer", argv[0], argc, argv); in subr_make_string()
733 if (FIXNUMP(argv[0]) && FIXNUM(argv[0]) >= 0) { in subr_make_string()
734 if (CHARP(argv[1])) { in subr_make_string()
735 int c = CHAR(argv[1]); in subr_make_string()
738 int size = FIXNUM(argv[0]) * bytes; in subr_make_string()
745 wrong_type_argument_violation(vm, "make-string", 1, "char", argv[1], argc, argv); in subr_make_string()
749 if (exact_non_negative_integer_pred(argv[0])) { in subr_make_string()
750 … invalid_argument_violation(vm, "make-string", "too many elements,", argv[0], 0, argc, argv); in subr_make_string()
753 …g_type_argument_violation(vm, "make-string", 0, "exact non-negative integer", argv[0], argc, argv); in subr_make_string()
756 wrong_number_of_arguments_violation(vm, "make-string", 1, 2, argc, argv); in subr_make_string()
762 subr_string(VM* vm, int argc, scm_obj_t argv[]) in subr_string() argument
766 if (CHARP(argv[i])) { in subr_string()
767 size = size + utf8_sizeof_ucs4(CHAR(argv[i])); in subr_string()
770 wrong_type_argument_violation(vm, "string", i, "char", argv[i], argc, argv); in subr_string()
777 int n = cnvt_ucs4_to_utf8(CHAR(argv[i]), utf8); in subr_string()
786 subr_list_string(VM* vm, int argc, scm_obj_t argv[]) in subr_list_string() argument
789 if (listp(argv[0])) { in subr_list_string()
790 scm_obj_t lst = argv[0]; in subr_list_string()
803 … wrong_type_argument_violation(vm, "list->string", i, "char", argv[i], argc, argv); in subr_list_string()
809 wrong_type_argument_violation(vm, "list->string", 0, "proper list", argv[0], argc, argv); in subr_list_string()
812 wrong_number_of_arguments_violation(vm, "list->string", 1, 1, argc, argv); in subr_list_string()
855 subr_string_length(VM* vm, int argc, scm_obj_t argv[]) in subr_string_length() argument
858 if (STRINGP(argv[0])) { in subr_string_length()
859 scm_string_t string = (scm_string_t)argv[0]; in subr_string_length()
863 wrong_type_argument_violation(vm, "string-length", 0, "string", argv[0], argc, argv); in subr_string_length()
866 wrong_number_of_arguments_violation(vm, "string-length", 1, 1, argc, argv); in subr_string_length()
872 subr_string_ref(VM* vm, int argc, scm_obj_t argv[]) in subr_string_ref() argument
875 if (STRINGP(argv[0])) { in subr_string_ref()
876 if (FIXNUMP(argv[1])) { in subr_string_ref()
877 scm_string_t string = (scm_string_t)argv[0]; in subr_string_ref()
879 int index = FIXNUM(argv[1]); in subr_string_ref()
889 … invalid_object_violation(vm, "string-ref", "properly encoded string", string, argc, argv); in subr_string_ref()
896 if (exact_non_negative_integer_pred(argv[1])) { in subr_string_ref()
897 … invalid_argument_violation(vm, "string-ref", "index out of bounds,", argv[1], 1, argc, argv); in subr_string_ref()
900 …ng_type_argument_violation(vm, "string-ref", 1, "exact non-negative integer", argv[1], argc, argv); in subr_string_ref()
904 wrong_type_argument_violation(vm, "string-ref", 0, "string", argv[0], argc, argv); in subr_string_ref()
907 wrong_number_of_arguments_violation(vm, "string-ref", 2, 2, argc, argv); in subr_string_ref()
913 subr_string_set(VM* vm, int argc, scm_obj_t argv[]) in subr_string_set() argument
916 if (STRINGP(argv[0])) { in subr_string_set()
917 if (CHARP(argv[2])) { in subr_string_set()
918 if (FIXNUMP(argv[1])) { in subr_string_set()
919 scm_string_t string = (scm_string_t)argv[0]; in subr_string_set()
920 int index = FIXNUM(argv[1]); in subr_string_set()
921 int ch = CHAR(argv[2]); in subr_string_set()
928 thread_object_access_violation(vm, "string-set!" , argc, argv); in subr_string_set()
942 … thread_object_access_violation(vm, "string-set!" , argc, argv); in subr_string_set()
949 … invalid_argument_violation(vm, "string-set!", "immutable string,", argv[0], 0, argc, argv); in subr_string_set()
956 if (exact_non_negative_integer_pred(argv[1])) { in subr_string_set()
957 … invalid_argument_violation(vm, "string-set!", "index out of bounds,", argv[1], 1, argc, argv); in subr_string_set()
960 …g_type_argument_violation(vm, "string-set!", 1, "exact non-negative integer", argv[1], argc, argv); in subr_string_set()
964 wrong_type_argument_violation(vm, "string-set!", 2, "char", argv[2], argc, argv); in subr_string_set()
967 wrong_type_argument_violation(vm, "string-set!", 0, "string", argv[0], argc, argv); in subr_string_set()
970 wrong_number_of_arguments_violation(vm, "string-set!", 3, 3, argc, argv); in subr_string_set()
976 subr_string_eq_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_eq_pred() argument
979 if (STRINGP(argv[0])) { in subr_string_eq_pred()
980 if (STRINGP(argv[1])) { in subr_string_eq_pred()
981 return string_eq_pred(argv[0], argv[1]) ? scm_true : scm_false; in subr_string_eq_pred()
983 wrong_type_argument_violation(vm, "string=?", 1, "string", argv[1], argc, argv); in subr_string_eq_pred()
986 wrong_type_argument_violation(vm, "string=?", 0, "string", argv[0], argc, argv); in subr_string_eq_pred()
991 if (STRINGP(argv[i])) continue; in subr_string_eq_pred()
992 wrong_type_argument_violation(vm, "string=?", i, "string", argv[i], argc, argv); in subr_string_eq_pred()
996 if (string_eq_pred(argv[i], argv[i + 1])) continue; in subr_string_eq_pred()
1001 wrong_number_of_arguments_violation(vm, "string=?", 2, -1, argc, argv); in subr_string_eq_pred()
1007 subr_string_lt_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_lt_pred() argument
1010 if (STRINGP(argv[0])) { in subr_string_lt_pred()
1011 if (STRINGP(argv[1])) { in subr_string_lt_pred()
1012 return (string_compare(argv[0], argv[1]) < 0) ? scm_true : scm_false; in subr_string_lt_pred()
1014 wrong_type_argument_violation(vm, "string<?", 1, "string", argv[1], argc, argv); in subr_string_lt_pred()
1017 wrong_type_argument_violation(vm, "string<?", 0, "string", argv[0], argc, argv); in subr_string_lt_pred()
1022 if (STRINGP(argv[i])) continue; in subr_string_lt_pred()
1023 wrong_type_argument_violation(vm, "string<?", i, "string", argv[i], argc, argv); in subr_string_lt_pred()
1027 if (string_compare(argv[i], argv[i + 1]) < 0) continue; in subr_string_lt_pred()
1032 wrong_number_of_arguments_violation(vm, "string<?", 2, -1, argc, argv); in subr_string_lt_pred()
1038 subr_string_gt_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_gt_pred() argument
1041 if (STRINGP(argv[0])) { in subr_string_gt_pred()
1042 if (STRINGP(argv[1])) { in subr_string_gt_pred()
1043 return (string_compare(argv[0], argv[1]) > 0) ? scm_true : scm_false; in subr_string_gt_pred()
1045 wrong_type_argument_violation(vm, "string>?", 1, "string", argv[1], argc, argv); in subr_string_gt_pred()
1048 wrong_type_argument_violation(vm, "string>?", 0, "string", argv[0], argc, argv); in subr_string_gt_pred()
1053 if (STRINGP(argv[i])) continue; in subr_string_gt_pred()
1054 wrong_type_argument_violation(vm, "string>?", i, "string", argv[i], argc, argv); in subr_string_gt_pred()
1058 if (string_compare(argv[i], argv[i + 1]) > 0) continue; in subr_string_gt_pred()
1063 wrong_number_of_arguments_violation(vm, "string>?", 2, -1, argc, argv); in subr_string_gt_pred()
1069 subr_string_le_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_le_pred() argument
1072 if (STRINGP(argv[0])) { in subr_string_le_pred()
1073 if (STRINGP(argv[1])) { in subr_string_le_pred()
1074 return (string_compare(argv[0], argv[1]) <= 0) ? scm_true : scm_false; in subr_string_le_pred()
1076 wrong_type_argument_violation(vm, "string<=?", 1, "string", argv[1], argc, argv); in subr_string_le_pred()
1079 wrong_type_argument_violation(vm, "string<=?", 0, "string", argv[0], argc, argv); in subr_string_le_pred()
1084 if (STRINGP(argv[i])) continue; in subr_string_le_pred()
1085 wrong_type_argument_violation(vm, "string<=?", i, "string", argv[i], argc, argv); in subr_string_le_pred()
1089 if (string_compare(argv[i], argv[i + 1]) <= 0) continue; in subr_string_le_pred()
1094 wrong_number_of_arguments_violation(vm, "string<=?", 2, -1, argc, argv); in subr_string_le_pred()
1100 subr_string_ge_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_string_ge_pred() argument
1103 if (STRINGP(argv[0])) { in subr_string_ge_pred()
1104 if (STRINGP(argv[1])) { in subr_string_ge_pred()
1105 return (string_compare(argv[0], argv[1]) >= 0) ? scm_true : scm_false; in subr_string_ge_pred()
1107 wrong_type_argument_violation(vm, "string>=?", 1, "string", argv[1], argc, argv); in subr_string_ge_pred()
1110 wrong_type_argument_violation(vm, "string>=?", 0, "string", argv[0], argc, argv); in subr_string_ge_pred()
1115 if (STRINGP(argv[i])) continue; in subr_string_ge_pred()
1116 wrong_type_argument_violation(vm, "string>=?", i, "string", argv[i], argc, argv); in subr_string_ge_pred()
1120 if (string_compare(argv[i], argv[i + 1]) >= 0) continue; in subr_string_ge_pred()
1125 wrong_number_of_arguments_violation(vm, "string>=?", 2, -1, argc, argv); in subr_string_ge_pred()
1133 subr_substring(VM* vm, int argc, scm_obj_t argv[]) in subr_substring() argument
1136 if (STRINGP(argv[0])) { in subr_substring()
1137 scm_string_t string = (scm_string_t)argv[0]; in subr_substring()
1139 int from = FIXNUM(argv[1]); in subr_substring()
1141 int to = FIXNUM(argv[2]); in subr_substring()
1144 … invalid_argument_violation(vm, "substring", "start index out of bounds,", argv[1], 1, argc, argv); in subr_substring()
1148 … invalid_argument_violation(vm, "substring", "end index out of bounds,", argv[2], 2, argc, argv); in subr_substring()
1152 …argument_violation(vm, "substring", "end index smaller than start index,", argv[2], 2, argc, argv); in subr_substring()
1162 wrong_type_argument_violation(vm, "substring", 0, "string", argv[0], argc, argv); in subr_substring()
1165 wrong_number_of_arguments_violation(vm, "substring", 3, 3, argc, argv); in subr_substring()
1171 subr_string_append(VM* vm, int argc, scm_obj_t argv[]) in subr_string_append() argument
1175 if (STRINGP(argv[i])) { in subr_string_append()
1176 scm_string_t src = (scm_string_t)argv[i]; in subr_string_append()
1179 wrong_type_argument_violation(vm, "string-append", i, "string", argv[i], argc, argv); in subr_string_append()
1187 scm_string_t src = (scm_string_t)argv[i]; in subr_string_append()
1200 subr_string_copy(VM* vm, int argc, scm_obj_t argv[]) in subr_string_copy() argument
1203 if (STRINGP(argv[0])) { in subr_string_copy()
1204 scm_string_t string = (scm_string_t)argv[0]; in subr_string_copy()
1207 wrong_type_argument_violation(vm, "string-copy", 0, "string", argv[0], argc, argv); in subr_string_copy()
1210 wrong_number_of_arguments_violation(vm, "string-copy",1, 1, argc, argv); in subr_string_copy()
1216 subr_string_fill(VM* vm, int argc, scm_obj_t argv[]) in subr_string_fill() argument
1219 if (STRINGP(argv[0])) { in subr_string_fill()
1220 if (CHARP(argv[1])) { in subr_string_fill()
1221 scm_string_t string = (scm_string_t)argv[0]; in subr_string_fill()
1225 thread_object_access_violation(vm, "string-fill!" ,argc, argv); in subr_string_fill()
1230 int ucs4 = CHAR(argv[1]); in subr_string_fill()
1259 wrong_type_argument_violation(vm, "string-fill!", 1, "char", argv[1], argc, argv); in subr_string_fill()
1262 wrong_type_argument_violation(vm, "string-fill!", 0, "string", argv[0], argc, argv); in subr_string_fill()
1265 wrong_number_of_arguments_violation(vm, "string-fill!",2, 2, argc, argv); in subr_string_fill()
1275 subr_vector_pred(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_pred() argument
1277 if (argc == 1) return VECTORP(argv[0]) ? scm_true : scm_false; in subr_vector_pred()
1278 wrong_number_of_arguments_violation(vm, "vector?",1, 1, argc, argv); in subr_vector_pred()
1284 subr_make_vector(VM* vm, int argc, scm_obj_t argv[]) in subr_make_vector() argument
1287 if (FIXNUMP(argv[0]) && FIXNUM(argv[0]) >= 0) { in subr_make_vector()
1288 scm_vector_t vect = make_vector(vm->m_heap, FIXNUM(argv[0]), scm_unspecified); in subr_make_vector()
1291 if (exact_non_negative_integer_pred(argv[0])) { in subr_make_vector()
1292 … invalid_argument_violation(vm, "make-vector", "too many elements,", argv[0], 0, argc, argv); in subr_make_vector()
1295 …g_type_argument_violation(vm, "make-vector", 0, "exact non-negative integer", argv[0], argc, argv); in subr_make_vector()
1300 if (FIXNUMP(argv[0]) && FIXNUM(argv[0]) >= 0) { in subr_make_vector()
1301 scm_vector_t vect = make_vector(vm->m_heap, FIXNUM(argv[0]), argv[1]); in subr_make_vector()
1304 if (exact_non_negative_integer_pred(argv[0])) { in subr_make_vector()
1305 … invalid_argument_violation(vm, "make-vector", "too many elements,", argv[0], 0, argc, argv); in subr_make_vector()
1308 …g_type_argument_violation(vm, "make-vector", 0, "exact non-negative integer", argv[0], argc, argv); in subr_make_vector()
1312 wrong_number_of_arguments_violation(vm, "make-vector",1, 2, argc, argv); in subr_make_vector()
1318 subr_vector(VM* vm, int argc, scm_obj_t argv[]) in subr_vector() argument
1321 for (int i = 0; i < argc; i++) vector->elts[i] = argv[i]; in subr_vector()
1327 subr_vector_length(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_length() argument
1330 if (VECTORP(argv[0])) { in subr_vector_length()
1331 scm_vector_t vector = (scm_vector_t)argv[0]; in subr_vector_length()
1334 wrong_type_argument_violation(vm, "vector-length", 0, "vector", argv[0], argc, argv); in subr_vector_length()
1337 wrong_number_of_arguments_violation(vm, "vector-length",1, 1, argc, argv); in subr_vector_length()
1343 subr_vector_ref(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_ref() argument
1346 if (VECTORP(argv[0])) { in subr_vector_ref()
1347 scm_vector_t vector = (scm_vector_t)argv[0]; in subr_vector_ref()
1348 if (FIXNUMP(argv[1])) { in subr_vector_ref()
1349 int n = FIXNUM(argv[1]); in subr_vector_ref()
1353 if (exact_non_negative_integer_pred(argv[1])) { in subr_vector_ref()
1354 … invalid_argument_violation(vm, "vector-ref", "index out of bounds,", argv[1], 1, argc, argv); in subr_vector_ref()
1357 …ng_type_argument_violation(vm, "vector-ref", 1, "exact non-negative integer", argv[1], argc, argv); in subr_vector_ref()
1361 wrong_type_argument_violation(vm, "vector-ref", 0, "vector", argv[0], argc, argv); in subr_vector_ref()
1364 wrong_number_of_arguments_violation(vm, "vector-ref", 2, 2, argc, argv); in subr_vector_ref()
1370 subr_vector_set(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_set() argument
1373 if (VECTORP(argv[0])) { in subr_vector_set()
1374 scm_vector_t vector = (scm_vector_t)argv[0]; in subr_vector_set()
1375 if (FIXNUMP(argv[1])) { in subr_vector_set()
1376 int n = FIXNUM(argv[1]); in subr_vector_set()
1381 thread_object_access_violation(vm, "vector-set!" ,argc, argv); in subr_vector_set()
1384 if (vm->m_child > 0) vm->m_interp->remember(vector->elts[n], argv[2]); in subr_vector_set()
1389 literal_constant_access_violation(vm, "vector-set!", argv[0], argc, argv); in subr_vector_set()
1394 vm->m_heap->write_barrier(argv[2]); in subr_vector_set()
1395 vector->elts[n] = argv[2]; in subr_vector_set()
1400 if (exact_non_negative_integer_pred(argv[1])) { in subr_vector_set()
1401 … invalid_argument_violation(vm, "vector-set!", "index out of bounds,", argv[1], 1, argc, argv); in subr_vector_set()
1404 …g_type_argument_violation(vm, "vector-set!", 1, "exact non-negative integer", argv[1], argc, argv); in subr_vector_set()
1408 wrong_type_argument_violation(vm, "vector-set!", 0, "vector", argv[0], argc, argv); in subr_vector_set()
1411 wrong_number_of_arguments_violation(vm, "vector-set!", 3, 3, argc, argv); in subr_vector_set()
1419 subr_list_vector(VM* vm, int argc, scm_obj_t argv[]) in subr_list_vector() argument
1422 if (listp(argv[0])) { in subr_list_vector()
1423 scm_obj_t lst = argv[0]; in subr_list_vector()
1432 wrong_type_argument_violation(vm, "list->vector", 0, "proper list", argv[0], argc, argv); in subr_list_vector()
1435 wrong_number_of_arguments_violation(vm, "list->vector", 1, 1, argc, argv); in subr_list_vector()
1441 subr_vector_list(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_list() argument
1444 if (VECTORP(argv[0])) { in subr_vector_list()
1445 scm_vector_t vector = (scm_vector_t)argv[0]; in subr_vector_list()
1451 wrong_type_argument_violation(vm, "vector->list", 0, "vector", argv[0], argc, argv); in subr_vector_list()
1454 wrong_number_of_arguments_violation(vm, "vector->list", 1, 1, argc, argv); in subr_vector_list()
1460 subr_vector_fill(VM* vm, int argc, scm_obj_t argv[]) in subr_vector_fill() argument
1463 if (VECTORP(argv[0])) { in subr_vector_fill()
1464 scm_vector_t vector = (scm_vector_t)argv[0]; in subr_vector_fill()
1469 thread_object_access_violation(vm, "vector-fill!" ,argc, argv); in subr_vector_fill()
1473 for (int i = 0; i < n; i++) vm->m_interp->remember(vector->elts[i], argv[1]); in subr_vector_fill()
1479 literal_constant_access_violation(vm, "vector-fill!", argv[0], argc, argv); in subr_vector_fill()
1483 vm->m_heap->write_barrier(argv[1]); in subr_vector_fill()
1484 for (int i = 0; i < n ; i++) vector->elts[i] = argv[1]; in subr_vector_fill()
1487 wrong_type_argument_violation(vm, "vector-fill!", 0, "vector", argv[0], argc, argv); in subr_vector_fill()
1490 wrong_number_of_arguments_violation(vm, "vector-fill!", 2, 2, argc, argv); in subr_vector_fill()
1504 subr_values(VM* vm, int argc, scm_obj_t argv[]) in subr_values() argument
1506 if (argc == 1) return argv[0]; in subr_values()
1508 for (int i = 0; i < argc; i++) values->elts[i] = argv[i]; in subr_values()
1523 subr_##NAME(VM* vm, int argc, scm_obj_t argv[]) \
1527 scm_obj_t obj = argv[0]; \
1538 … wrong_type_argument_violation(vm, #NAME, 0, "appropriate list structure", argv[0], argc, argv); \
1541 wrong_number_of_arguments_violation(vm, #NAME, 1, 1, argc, argv); \
1547 subr_##NAME(VM* vm, int argc, scm_obj_t argv[]) \
1551 scm_obj_t obj = argv[0]; \
1565 … wrong_type_argument_violation(vm, #NAME, 0, "appropriate list structure", argv[0], argc, argv); \
1568 wrong_number_of_arguments_violation(vm, #NAME, 1, 1, argc, argv); \
1623 subr_##NAME(VM* vm, int argc, scm_obj_t argv[]) \
1627 scm_obj_t obj = n_car_n_cdr(argv[0], array_sizeof(mc), mc); \
1629 … wrong_type_argument_violation(vm, #NAME, 0, "appropriate list structure", argv[0], argc, argv); \
1632 wrong_number_of_arguments_violation(vm, #NAME, 1, 1, argc, argv); \