]> gitweb.factorcode.org Git - factor.git/blob - vm/utilities.cpp
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / vm / utilities.cpp
1 #include "master.hpp"
2
3 namespace factor
4 {
5
6 /* If memory allocation fails, bail out */
7 void *safe_malloc(size_t size)
8 {
9         void *ptr = malloc(size);
10         if(!ptr) fatal_error("Out of memory in safe_malloc", 0);
11         return ptr;
12 }
13
14 vm_char *safe_strdup(const vm_char *str)
15 {
16         vm_char *ptr = STRDUP(str);
17         if(!ptr) fatal_error("Out of memory in safe_strdup", 0);
18         return ptr;
19 }
20
21
22 /* We don't use printf directly, because format directives are not portable.
23 Instead we define the common cases here. */
24 void nl()
25 {
26         fputs("\n",stdout);
27 }
28
29 void print_string(const char *str)
30 {
31         fputs(str,stdout);
32 }
33
34
35 void print_cell(cell x)
36 {
37         printf(CELL_FORMAT,x);
38 }
39
40 void print_cell_hex(cell x)
41 {
42         printf(CELL_HEX_FORMAT,x);
43 }
44
45 void print_cell_hex_pad(cell x)
46 {
47         printf(CELL_HEX_PAD_FORMAT,x);
48 }
49
50 void print_fixnum(fixnum x)
51 {
52         printf(FIXNUM_FORMAT,x);
53 }
54
55 cell read_cell_hex()
56 {
57         cell cell;
58         if(scanf(CELL_HEX_FORMAT,&cell) < 0) exit(1);
59         return cell;
60 }
61
62 }