Sistemate alcune citazioni, aggiunti alcuni esempi.
[gapil.git] / sources / macros.h
diff --git a/sources/macros.h b/sources/macros.h
new file mode 100644 (file)
index 0000000..4686292
--- /dev/null
@@ -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"); \
+    }\
+})