Workshop o mikrokontrolérech na SKSP 2024.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
917 B

2 months ago
/*
* UCW Library -- Fast Buffered I/O: Binary Numbers
*
* (c) 1997--2006 Martin Mares <mj@ucw.cz>
*
* This software may be freely distributed and used according to the terms
* of the GNU Lesser General Public License.
*/
#include <ucw/lib.h>
#include <ucw/fastbuf.h>
#include <ucw/ff-binary.h>
#define GEN(type, name, size, endian) \
type bget##name##_##endian##_slow(struct fastbuf *f) \
{ \
byte buf[size/8]; \
if (bread(f, buf, sizeof(buf)) != sizeof(buf)) \
return ~(type)0; \
return get_u##size##_##endian(buf); \
} \
void bput##name##_##endian##_##slow(struct fastbuf *f, type x) \
{ \
byte buf[size/8]; \
put_u##size##_##endian(buf, x); \
bwrite_slow(f, buf, sizeof(buf)); \
}
#define FF_ALL(type, name, size) GEN(type,name,size,be) GEN(type,name,size,le)
FF_ALL(int, w, 16)
FF_ALL(uint, l, 32)
FF_ALL(u64, q, 64)
FF_ALL(u64, 5, 40)