summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-03-20 12:11:38 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-03-20 12:11:38 -0700
commit270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8 (patch)
treeaf016173b3eb8785928466032f97f772c5f0dc04 /lib.h
parent49b84f76e1036ebeb75b4348d1d0cf7fdf233939 (diff)
downloadtxr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.tar.gz
txr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.tar.bz2
txr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.zip
* arith.c (plus): Optimization: use num_fast when
result is in the fixnum range. Implemented FLNUM cases, except for adding a FLNUM to BGNUM. (minus, mul): Use num_fast when the cnum value is in the fixnum range. (int_flo): New function. * eval.c (eval_init): Register int-flo intrinsic. * lib.c (c_flo): New function. * lib.h (TYPE_SHIFT, TYPE_PAIR): New macros, carried over from the lazy strings branch. (c_flo, int_flo): Declared.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index 47fa3d38..211d27de 100644
--- a/lib.h
+++ b/lib.h
@@ -43,6 +43,9 @@ typedef enum type {
BGNUM, FLNUM
} type_t;
+#define TYPE_SHIFT 4
+#define TYPE_PAIR(A, B) ((A) << TYPE_SHIFT | (B))
+
typedef enum functype
{
FINTERP, /* Interpreted function. */
@@ -386,6 +389,7 @@ val improper_plist_to_alist(val list, val boolean_keys);
val num(cnum val);
val flo(double val);
cnum c_num(val num);
+double c_flo(val num);
val fixnump(val num);
val bignump(val num);
val floatp(val num);
@@ -449,6 +453,7 @@ val trim_str(val str);
val string_lt(val astr, val bstr);
val int_str(val str, val base);
val flo_str(val str);
+val int_flo(val f);
val chrp(val chr);
wchar_t c_chr(val chr);
val chr_isalnum(val ch);