home · contact · privacy
More documentation and re-styling of code according to new rules.
[plomrogue] / src / readwrite.c
1 /* readwrite.c */
2
3 #include "readwrite.h"
4 #include <stdio.h> /* for FILE typedef*/
5 #include <stdint.h> /* for uint16_t, uint32_t */
6
7
8
9 extern uint16_t read_uint16_bigendian(FILE * file)
10 {
11     uint16_t x;
12     x =     (uint16_t) fgetc(file) << 8;
13     x = x + (uint16_t) fgetc(file);
14     return x;
15 }
16
17
18
19 extern uint32_t read_uint32_bigendian(FILE * file)
20 {
21     uint32_t x;
22     x =       (uint32_t) fgetc(file) << 24;
23     x = x + ( (uint32_t) fgetc(file) << 16 );
24     x = x + ( (uint32_t) fgetc(file) <<  8 );
25     x = x +   (uint32_t) fgetc(file);
26     return x;
27 }
28
29
30
31 extern void write_uint16_bigendian(uint16_t x, FILE * file)
32 {
33     fputc( x >> 8,   file );
34     fputc( x & 0xFF, file );
35 }
36
37
38
39 extern void write_uint32_bigendian(uint32_t x, FILE * file)
40 {
41     fputc(   x >> 24,          file);
42     fputc( ( x >> 16 ) & 0xFF, file);
43     fputc( ( x >>  8 ) & 0xFF, file);
44     fputc(   x         & 0xFF, file);
45 }