#include "master.hpp" namespace factor { /* If memory allocation fails, bail out */ void *safe_malloc(size_t size) { void *ptr = malloc(size); if(!ptr) fatal_error("Out of memory in safe_malloc", 0); return ptr; } vm_char *safe_strdup(const vm_char *str) { vm_char *ptr = STRDUP(str); if(!ptr) fatal_error("Out of memory in safe_strdup", 0); return ptr; } /* We don't use printf directly, because format directives are not portable. Instead we define the common cases here. */ void nl() { fputs("\n",stdout); } void print_string(const char *str) { fputs(str,stdout); } void print_cell(cell x) { printf(CELL_FORMAT,x); } void print_cell_hex(cell x) { printf(CELL_HEX_FORMAT,x); } void print_cell_hex_pad(cell x) { printf(CELL_HEX_PAD_FORMAT,x); } void print_fixnum(fixnum x) { printf(FIXNUM_FORMAT,x); } cell read_cell_hex() { cell cell; if(scanf(CELL_HEX_FORMAT,&cell) < 0) exit(1); return cell; }; }