Move Sadakane's bp and Francisco's libcds in their own repository.
[SXSI/XMLTree.git] / common.h
diff --git a/common.h b/common.h
new file mode 100644 (file)
index 0000000..da8fa61
--- /dev/null
+++ b/common.h
@@ -0,0 +1,74 @@
+#ifndef COMMON_H_\r
+#define COMMON_H_\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+//#include <string.h> // for memset\r
+#include <sys/types.h>\r
+#include <unistd.h>\r
+#include <errno.h>\r
+#define B_ERROR(msg) do { fprintf(stderr,"%s\n", msg); exit(1); } while (0)\r
+\r
+inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)\r
+ {\r
+    size_t res;\r
+    res = fread(ptr,size,nmemb,stream);\r
+    if (res < nmemb)\r
+      B_ERROR ("ufread I/O error" );\r
+    return;\r
+ }\r
+\r
+inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)\r
+ {\r
+    size_t res;\r
+    res = fwrite(ptr,size,nmemb,stream);\r
+    if (res < nmemb)\r
+      B_ERROR("ufwrite I/O error");\r
+    return;\r
+ }\r
+\r
+inline void *urealloc(void *ptr, size_t size)\r
+ {\r
+    void *dest = realloc(ptr,size);\r
+    //don't fail if we requested size 0\r
+    if (dest == NULL && size > 0 )\r
+      B_ERROR("urealoc error");\r
+    return dest;\r
+ }\r
+// realloc and set to 0\r
+inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)\r
+ {\r
+   if (o_size == n_size)\r
+     return ptr;\r
+   \r
+    void *dest = realloc(ptr,n_size);\r
+    //don't fail if we requested size 0\r
+    if (dest == NULL && n_size > 0 )\r
+      B_ERROR("urecalloc error");\r
+    // Initialize the new area with 0\r
+    void * n_area_start = &(((char*) dest)[o_size]);\r
+    // memset(n_area_start,0, n_size - o_size);\r
+    for(size_t i = 0; i < n_size - o_size;i++)\r
+      ((char *) n_area_start)[i] = 0;\r
+    return dest;\r
+ }\r
+\r
+inline void *ucalloc(size_t nmemb, size_t size)\r
+ {\r
+    void * dest = calloc(nmemb,size);\r
+    //don't fail if we requested size 0\r
+    if (dest == NULL && nmemb > 0 && size > 0 )\r
+      B_ERROR("ucalloc error");\r
+    return dest;\r
+ }\r
+\r
+inline void *umalloc(size_t size) \r
+ {\r
+    void * dest = malloc(size);\r
+    if (dest == NULL && size > 0)\r
+      B_ERROR("umaloc error");\r
+    return dest;\r
+ }\r
+\r
+#endif\r