Lines Matching refs:ctxt
246 bcl_pushContext(BclContext ctxt)
253 bc_vec_push(&vm->ctxts, &ctxt);
299 BclContext ctxt = *((BclContext*) bc_vec_item(&vm->ctxts, i));
300 bcl_ctxt_free(ctxt);
387 BclContext ctxt = NULL;
393 ctxt = bc_vm_malloc(sizeof(BclCtxt));
395 bc_vec_init(&ctxt->nums, sizeof(BclNum), BC_DTOR_BCL_NUM);
396 bc_vec_init(&ctxt->free_nums, sizeof(BclNumber), BC_DTOR_NONE);
398 ctxt->scale = 0;
399 ctxt->ibase = 10;
400 ctxt->obase = 10;
404 if (BC_ERR(vm->err && ctxt != NULL))
406 if (ctxt->nums.v != NULL) bc_vec_free(&ctxt->nums);
407 free(ctxt);
408 ctxt = NULL;
413 return ctxt;
417 bcl_ctxt_free(BclContext ctxt)
419 bc_vec_free(&ctxt->free_nums);
420 bc_vec_free(&ctxt->nums);
421 free(ctxt);
425 bcl_ctxt_freeNums(BclContext ctxt)
427 bc_vec_popAll(&ctxt->nums);
428 bc_vec_popAll(&ctxt->free_nums);
432 bcl_ctxt_scale(BclContext ctxt)
434 return ctxt->scale;
438 bcl_ctxt_setScale(BclContext ctxt, size_t scale)
440 ctxt->scale = scale;
444 bcl_ctxt_ibase(BclContext ctxt)
446 return ctxt->ibase;
450 bcl_ctxt_setIbase(BclContext ctxt, size_t ibase)
454 ctxt->ibase = ibase;
458 bcl_ctxt_obase(BclContext ctxt)
460 return ctxt->obase;
464 bcl_ctxt_setObase(BclContext ctxt, size_t obase)
466 ctxt->obase = obase;
472 BclContext ctxt;
475 BC_CHECK_CTXT_ERR(vm, ctxt);
483 if (n.i >= ctxt->nums.len)
493 * @param ctxt The context to insert into.
498 bcl_num_insert(BclContext ctxt, BclNum* restrict n)
503 if (ctxt->free_nums.len)
508 idx = *((BclNumber*) bc_vec_top(&ctxt->free_nums));
509 bc_vec_pop(&ctxt->free_nums);
512 ptr = bc_vec_item(&ctxt->nums, idx.i);
537 idx.i = ctxt->nums.len;
538 bc_vec_push(&ctxt->nums, n);
550 BclContext ctxt;
553 BC_CHECK_CTXT(vm, ctxt);
557 BCL_GROW_NUMS(ctxt);
564 BC_MAYBE_SETUP(ctxt, e, n, idx);
571 * @param ctxt The context.
576 bcl_num_dtor(BclContext ctxt, BclNumber n, BclNum* restrict num)
583 bc_vec_push(&ctxt->free_nums, &n);
594 BclContext ctxt;
597 BC_CHECK_CTXT_ASSERT(vm, ctxt);
599 BCL_CHECK_NUM_VALID(ctxt, n);
601 assert(BCL_NO_GEN(n) < ctxt->nums.len);
603 num = BCL_NUM(ctxt, n);
605 bcl_num_dtor(ctxt, n, num);
614 BclContext ctxt;
617 BC_CHECK_CTXT_ERR(vm, ctxt);
619 BCL_CHECK_NUM_VALID(ctxt, d);
620 BCL_CHECK_NUM_VALID(ctxt, s);
624 assert(BCL_NO_GEN(d) < ctxt->nums.len);
625 assert(BCL_NO_GEN(s) < ctxt->nums.len);
627 dest = BCL_NUM(ctxt, d);
628 src = BCL_NUM(ctxt, s);
648 BclContext ctxt;
651 BC_CHECK_CTXT(vm, ctxt);
653 BCL_CHECK_NUM_VALID(ctxt, s);
657 BCL_GROW_NUMS(ctxt);
659 assert(BCL_NO_GEN(s) < ctxt->nums.len);
661 src = BCL_NUM(ctxt, s);
672 BC_MAYBE_SETUP(ctxt, e, dest, idx);
694 BclContext ctxt;
697 BC_CHECK_CTXT_ASSERT(vm, ctxt);
699 BCL_CHECK_NUM_VALID(ctxt, n);
701 assert(BCL_NO_GEN(n) < ctxt->nums.len);
703 num = BCL_NUM(ctxt, n);
714 BclContext ctxt;
717 BC_CHECK_CTXT_ASSERT(vm, ctxt);
719 BCL_CHECK_NUM_VALID(ctxt, n);
721 assert(BCL_NO_GEN(n) < ctxt->nums.len);
723 num = BCL_NUM(ctxt, n);
734 BclContext ctxt;
737 BC_CHECK_CTXT_ASSERT(vm, ctxt);
739 BCL_CHECK_NUM_VALID(ctxt, n);
741 assert(BCL_NO_GEN(n) < ctxt->nums.len);
743 num = BCL_NUM(ctxt, n);
755 BclContext ctxt;
758 BC_CHECK_CTXT_ERR(vm, ctxt);
760 BC_CHECK_NUM_ERR(ctxt, n);
762 BCL_CHECK_NUM_VALID(ctxt, n);
766 assert(BCL_NO_GEN(n) < ctxt->nums.len);
768 nptr = BCL_NUM(ctxt, n);
792 BclContext ctxt;
795 BC_CHECK_CTXT_ASSERT(vm, ctxt);
797 BCL_CHECK_NUM_VALID(ctxt, n);
799 assert(BCL_NO_GEN(n) < ctxt->nums.len);
801 num = BCL_NUM(ctxt, n);
813 BclContext ctxt;
816 BC_CHECK_CTXT_ERR(vm, ctxt);
818 BCL_CHECK_NUM_VALID(ctxt, n);
822 assert(BCL_NO_GEN(n) < ctxt->nums.len);
825 num = BCL_NUM(ctxt, n);
835 bcl_num_dtor(ctxt, n, num);
861 BclContext ctxt;
864 BC_CHECK_CTXT(vm, ctxt);
868 BCL_GROW_NUMS(ctxt);
875 BC_MAYBE_SETUP(ctxt, e, n, idx);
899 BclContext ctxt;
902 BC_CHECK_CTXT(vm, ctxt);
904 BC_CHECK_NUM(ctxt, a);
905 BC_CHECK_NUM(ctxt, b);
909 BCL_GROW_NUMS(ctxt);
911 assert(BCL_NO_GEN(a) < ctxt->nums.len && BCL_NO_GEN(b) < ctxt->nums.len);
913 aptr = BCL_NUM(ctxt, a);
914 bptr = BCL_NUM(ctxt, b);
922 req(BCL_NUM_NUM(aptr), BCL_NUM_NUM(bptr), ctxt->scale));
924 op(BCL_NUM_NUM(aptr), BCL_NUM_NUM(bptr), BCL_NUM_NUM_NP(c), ctxt->scale);
931 bcl_num_dtor(ctxt, a, aptr);
932 if (b.i != a.i) bcl_num_dtor(ctxt, b, bptr);
936 BC_MAYBE_SETUP(ctxt, e, c, idx);
1044 BclContext ctxt;
1047 BC_CHECK_CTXT(vm, ctxt);
1049 BC_CHECK_NUM(ctxt, a);
1053 BCL_GROW_NUMS(ctxt);
1055 assert(BCL_NO_GEN(a) < ctxt->nums.len);
1057 aptr = BCL_NUM(ctxt, a);
1059 bc_num_sqrt(BCL_NUM_NUM(aptr), BCL_NUM_NUM_NP(b), ctxt->scale);
1065 bcl_num_dtor(ctxt, a, aptr);
1069 BC_MAYBE_SETUP(ctxt, e, b, idx);
1095 BclContext ctxt;
1098 BC_CHECK_CTXT_ERR(vm, ctxt);
1100 BC_CHECK_NUM_ERR(ctxt, a);
1101 BC_CHECK_NUM_ERR(ctxt, b);
1105 BCL_GROW_NUMS(ctxt);
1109 aptr = BCL_NUM(ctxt, a);
1110 bptr = BCL_NUM(ctxt, b);
1118 req = bc_num_divReq(BCL_NUM_NUM(aptr), BCL_NUM_NUM(bptr), ctxt->scale);
1127 BCL_NUM_NUM_NP(dnum), ctxt->scale);
1134 bcl_num_dtor(ctxt, a, aptr);
1135 if (b.i != a.i) bcl_num_dtor(ctxt, b, bptr);
1156 *c = bcl_num_insert(ctxt, &cnum);
1157 *d = bcl_num_insert(ctxt, &dnum);
1185 BclContext ctxt;
1188 BC_CHECK_CTXT(vm, ctxt);
1190 BC_CHECK_NUM(ctxt, a);
1191 BC_CHECK_NUM(ctxt, b);
1192 BC_CHECK_NUM(ctxt, c);
1196 BCL_GROW_NUMS(ctxt);
1198 assert(BCL_NO_GEN(a) < ctxt->nums.len && BCL_NO_GEN(b) < ctxt->nums.len);
1199 assert(BCL_NO_GEN(c) < ctxt->nums.len);
1201 aptr = BCL_NUM(ctxt, a);
1202 bptr = BCL_NUM(ctxt, b);
1203 cptr = BCL_NUM(ctxt, c);
1225 bcl_num_dtor(ctxt, a, aptr);
1226 if (b.i != a.i) bcl_num_dtor(ctxt, b, bptr);
1227 if (c.i != a.i && c.i != b.i) bcl_num_dtor(ctxt, c, cptr);
1231 BC_MAYBE_SETUP(ctxt, e, d, idx);
1253 BclContext ctxt;
1256 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1258 BCL_CHECK_NUM_VALID(ctxt, a);
1259 BCL_CHECK_NUM_VALID(ctxt, b);
1261 assert(BCL_NO_GEN(a) < ctxt->nums.len && BCL_NO_GEN(b) < ctxt->nums.len);
1263 aptr = BCL_NUM(ctxt, a);
1264 bptr = BCL_NUM(ctxt, b);
1276 BclContext ctxt;
1279 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1281 BCL_CHECK_NUM_VALID(ctxt, n);
1283 assert(BCL_NO_GEN(n) < ctxt->nums.len);
1285 nptr = BCL_NUM(ctxt, n);
1296 BclContext ctxt;
1299 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1301 BCL_CHECK_NUM_VALID(ctxt, n);
1303 assert(BCL_NO_GEN(n) < ctxt->nums.len);
1305 nptr = BCL_NUM(ctxt, n);
1318 BclContext ctxt;
1322 BC_CHECK_CTXT(vm, ctxt);
1326 BCL_GROW_NUMS(ctxt);
1346 bc_num_parse(BCL_NUM_NUM_NP(n), val, (BcBigDig) ctxt->ibase);
1358 BC_MAYBE_SETUP(ctxt, e, n, idx);
1368 BclContext ctxt;
1371 BC_CHECK_CTXT_ASSERT(vm, ctxt);
1373 BCL_CHECK_NUM_VALID(ctxt, n);
1375 if (BC_ERR(BCL_NO_GEN(n) >= ctxt->nums.len)) return str;
1379 assert(BCL_NO_GEN(n) < ctxt->nums.len);
1381 nptr = BCL_NUM(ctxt, n);
1389 bc_num_print(BCL_NUM_NUM(nptr), (BcBigDig) ctxt->obase, false);
1400 bcl_num_dtor(ctxt, n, nptr);
1429 BclContext ctxt;
1432 BC_CHECK_CTXT(vm, ctxt);
1434 BC_CHECK_NUM(ctxt, a);
1438 BCL_GROW_NUMS(ctxt);
1440 assert(BCL_NO_GEN(a) < ctxt->nums.len);
1442 aptr = BCL_NUM(ctxt, a);
1457 bcl_num_dtor(ctxt, a, aptr);
1461 BC_MAYBE_SETUP(ctxt, e, b, idx);
1528 BclContext ctxt;
1531 BC_CHECK_CTXT(vm, ctxt);
1535 BCL_GROW_NUMS(ctxt);
1546 BC_MAYBE_SETUP(ctxt, e, n, idx);
1593 BclContext ctxt;
1596 BC_CHECK_CTXT(vm, ctxt);
1597 BC_CHECK_NUM(ctxt, a);
1601 BCL_GROW_NUMS(ctxt);
1603 assert(BCL_NO_GEN(a) < ctxt->nums.len);
1605 aptr = BCL_NUM(ctxt, a);
1620 bcl_num_dtor(ctxt, a, aptr);
1624 BC_MAYBE_SETUP(ctxt, e, b, idx);
1646 BclContext ctxt;
1649 BC_CHECK_CTXT_ERR(vm, ctxt);
1650 BC_CHECK_NUM_ERR(ctxt, n);
1654 assert(BCL_NO_GEN(n) < ctxt->nums.len);
1656 nptr = BCL_NUM(ctxt, n);
1667 bcl_num_dtor(ctxt, n, nptr);
1728 BclContext ctxt;
1731 BC_CHECK_CTXT(vm, ctxt);
1744 BC_MAYBE_SETUP(ctxt, e, n, idx);