Print changes

This commit is contained in:
2026-08-13 02:41:41 -07:00
parent 046b9b0c87
commit 7b854c1559
11 changed files with 438 additions and 26 deletions
+24 -2
View File
@@ -6,6 +6,7 @@
#include "memory.h"
#include <assert.h>
#include <inttypes.h>
#include <stdnoreturn.h>
// ###################
@@ -17,12 +18,29 @@ typedef void LispVal;
// # Fixnum and float stuff #
// ##########################
typedef intptr_t fixnum_t;
#define LISP_FIXNUM_PRINTF(code) PRI##code##PTR
#if LISP_WORD_BITS == 32
# define LISP_FLOAT_SCANF "f"
# define LISP_FLOAT_SCANF "f"
# define LISP_FLOAT_PRINTF "f"
typedef lisp_float32_t lisp_float_t;
typedef lisp_float32_parts lisp_float_parts_t;
# define LISP_FLOAT_MIN_EXP FLOAT32_MIN_EXP
# define LISP_FLOAT_MAX_EXP FLOAT32_MAX_EXP
# define LISP_FLOAT_MAX_PRECISION FLOAT32_MAX_PRECISION
# define LISP_FLOAT_NAN LISP_FLOAT32_NAN()
# define LISP_FLOAT_POS_INF LISP_FLOAT32_INF(false)
# define LISP_FLOAT_NEG_INF LISP_FLOAT32_INF(true)
#else
# define LISP_FLOAT_SCANF "lf"
# define LISP_FLOAT_SCANF "lf"
# define LISP_FLOAT_PRINTF "f"
typedef lisp_float64_t lisp_float_t;
typedef lisp_float64_parts lisp_float_parts_t;
# define LISP_FLOAT_MIN_EXP FLOAT64_MIN_EXP
# define LISP_FLOAT_MAX_EXP FLOAT64_MAX_EXP
# define LISP_FLOAT_MAX_PRECISION FLOAT64_MAX_PRECISION
# define LISP_FLOAT_NAN LISP_FLOAT64_NAN()
# define LISP_FLOAT_POS_INF LISP_FLOAT64_INF(false)
# define LISP_FLOAT_NEG_INF LISP_FLOAT64_INF(true)
#endif
#define MOST_POSITIVE_FIXNUM ((intptr_t) ((INTPTR_MAX & ~(intptr_t) 3) >> 2))
@@ -73,6 +91,10 @@ static ALWAYS_INLINE LispVal *MAKE_LISP_FLOAT(lisp_float_t flt) {
return (LispVal *) ((bits & ~(uintptr_t) 3) | LISP_FLOAT_TAG);
}
#define LISP_NAN MAKE_LISP_FLOAT(LISP_FLOAT_NAN)
#define LISP_POS_INF MAKE_LISP_FLOAT(LISP_FLOAT_POS_INF)
#define LISP_NEG_INF MAKE_LISP_FLOAT(LISP_FLOAT_NEG_INF)
// ###############
// # Other types #
// ###############