X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=sources%2Fmacros.h;fp=sources%2Fmacros.h;h=46862926eefd88e432b1c9ba39b74e4fd1cf71ec;hb=86de518c1856b983608c791e0bbbc265aaf8e9b4;hp=0000000000000000000000000000000000000000;hpb=e63a5e53036597d8027e2bf727c606698863a5d6;p=gapil.git diff --git a/sources/macros.h b/sources/macros.h new file mode 100644 index 0000000..4686292 --- /dev/null +++ b/sources/macros.h @@ -0,0 +1,39 @@ +/* + * Endianess conversion for int and short types + */ +#define BE32_TO_LE32(val) ({typeof (val) v= (val); \ + (v>>24) | ((v>>8)&0xFF00) | (v<<24) | ((v<<8)&0xFF0000); } ) +#define BE16_TO_LE16(val) ({typeof (val) v= (val); (v>>8) | (v<<8); } ) +/* + * Define a protected, right typed, no side effects macro for min + */ +#define min(x, y) ({typeof (x) x_ = (x); typeof (y) y_ = (y); \ + x_ < y_ ? x_ : y_;}) +/* + * debugging print definition + */ +#define report(fmt, args...) printf(fmt,##args) +#ifdef DEBUG /* done only on debugging */ +#define debug report +#else +#define debug(fmt, arg...) +#endif + + +/* + * Just to print an hex dump of a buffer, + * ptr is the address, m is how many word per line + * and l how many lines + */ +#define PRINT_BUF(ptr, l, m) ({ \ + int _i, _j; \ + unsigned short *_ptr= (unsigned short *)(ptr); \ + for (_i = 0; _i< (int) l; _i++) { \ + printf("Val[%d]=", m * _i); \ + for (_j = 0; _j < (int) m; _j++) { \ + printf("%x ", *_ptr);\ + _ptr++;\ + }\ + printf("\n"); \ + }\ +})