1 /* Copyright (C) 2012 Matthew Fluet.
2 * Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 * Copyright (C) 1997-2000 NEC Research Institute.
6 * MLton is released under a BSD-style license.
7 * See the file MLton-LICENSE for details.
10 static inline char readChar (FILE *f
) {
12 fread_safe (&res
, sizeof(char), 1, f
);
16 static inline size_t readSize (FILE *f
) {
18 fread_safe (&res
, sizeof(size_t), 1, f
);
22 static inline uint32_t readUint32 (FILE *f
) {
24 fread_safe (&res
, sizeof(uint32_t), 1, f
);
28 static inline uintptr_t readUintptr (FILE *f
) {
30 fread_safe (&res
, sizeof(uintptr_t), 1, f
);
34 static inline void writeChar (FILE *f
, char c
) {
35 fwrite_safe (&c
, sizeof(char), 1, f
);
38 static inline void writeSize (FILE *f
, size_t z
) {
39 fwrite_safe (&z
, sizeof(size_t), 1, f
);
42 static inline void writeUint32 (FILE *f
, uint32_t u
) {
43 fwrite_safe (&u
, sizeof(uint32_t), 1, f
);
46 static inline void writeUintptr (FILE *f
, uintptr_t u
) {
47 fwrite_safe (&u
, sizeof(uintptr_t), 1, f
);
50 static inline void writeString (FILE *f
, const char* s
) {
51 fwrite_safe (s
, 1, strlen(s
), f
);
55 static inline void writeUint32U (FILE *f
, uint32_t u
) {
56 static char buf
[BUF_SIZE
];
58 snprintf (buf
, BUF_SIZE
, "%"PRIu32
, u
);
62 static inline void writeUintmaxU (FILE *f
, uintmax_t u
) {
63 static char buf
[BUF_SIZE
];
65 snprintf (buf
, BUF_SIZE
, "%"PRIuMAX
, u
);
69 static inline void writeUint32X (FILE *f
, uint32_t u
) {
70 static char buf
[BUF_SIZE
];
72 snprintf (buf
, BUF_SIZE
, "0x%08"PRIx32
, u
);
76 static inline void writeUintmaxX (FILE *f
, uintmax_t u
) {
77 static char buf
[BUF_SIZE
];
79 snprintf (buf
, BUF_SIZE
, "0x%0*"PRIxMAX
, (int)(2 * sizeof(uintmax_t)), u
);
84 static inline void writeNewline (FILE *f
) {
85 writeString (f
, "\n");
88 static inline void writeStringWithNewline (FILE *f
, const char* s
) {