Print changes
This commit is contained in:
+24
-2
@@ -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 #
|
||||
// ###############
|
||||
|
||||
Reference in New Issue
Block a user