inline TaggedChild/TaggedFollowingSibling
[SXSI/XMLTree.git] / basics.h
1 #ifndef BASICS_H_\r
2 #define BASICS_H_\r
3 \r
4 \r
5 #include <stdio.h>\r
6 #include <stdlib.h>\r
7 //#include <string.h> // for memset\r
8 #include <sys/types.h>\r
9 #include <unistd.h>\r
10 #include <errno.h>\r
11 #define B_ERROR(msg) do { fprintf(stderr,"%s\n", msg); exit(1); } while (0)\r
12 \r
13 inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)\r
14  {\r
15     size_t res;\r
16     res = fread(ptr,size,nmemb,stream);\r
17     if (res < nmemb)\r
18       B_ERROR ("ufread I/O error" );\r
19     return;\r
20  }\r
21 \r
22 inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)\r
23  {\r
24     size_t res;\r
25     res = fwrite(ptr,size,nmemb,stream);\r
26     if (res < nmemb)\r
27       B_ERROR("ufwrite I/O error");\r
28     return;\r
29  }\r
30 \r
31 inline void *urealloc(void *ptr, size_t size)\r
32  {\r
33     void *dest = realloc(ptr,size);\r
34     //don't fail if we requested size 0\r
35     if (dest == NULL && size > 0 )\r
36       B_ERROR("urealoc error");\r
37     return dest;\r
38  }\r
39 // realloc and set to 0\r
40 inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)\r
41  {\r
42    if (o_size == n_size)\r
43      return ptr;\r
44    \r
45     void *dest = realloc(ptr,n_size);\r
46     //don't fail if we requested size 0\r
47     if (dest == NULL && n_size > 0 )\r
48       B_ERROR("urecalloc error");\r
49     // Initialize the new area with 0\r
50     void * n_area_start = &(((char*) dest)[o_size]);\r
51     // memset(n_area_start,0, n_size - o_size);\r
52     for(size_t i = 0; i < n_size - o_size;i++)\r
53       ((char *) n_area_start)[i] = 0;\r
54     return dest;\r
55  }\r
56 \r
57 inline void *ucalloc(size_t nmemb, size_t size)\r
58  {\r
59     void * dest = calloc(nmemb,size);\r
60     //don't fail if we requested size 0\r
61     if (dest == NULL && nmemb > 0 && size > 0 )\r
62       B_ERROR("ucalloc error");\r
63     return dest;\r
64  }\r
65 \r
66 inline void *umalloc(size_t size) \r
67  {\r
68     void * dest = malloc(size);\r
69     if (dest == NULL && size > 0)\r
70       B_ERROR("umaloc error");\r
71     return dest;\r
72  }\r
73 \r
74 #endif\r