273aa1dfd545dd2149a51034096ca29a0123fa1b
[SXSI/XMLTree.git] / basics.h
1 #ifndef BASICS_H\r
2 #define BASICS_H\r
3 \r
4 #include <stdio.h>\r
5 #include <stdlib.h>\r
6 \r
7 inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)\r
8  {\r
9     size_t res;\r
10     res = fread(ptr,size,nmemb,stream);\r
11     if (res < nmemb)\r
12        throw "ufread I/O error";\r
13     return;\r
14  }\r
15 \r
16 inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)\r
17  {\r
18     size_t res;\r
19     res = fwrite(ptr,size,nmemb,stream);\r
20     if (res < nmemb)\r
21        throw "ufwrite I/O error";\r
22     return;\r
23  }\r
24 \r
25 inline void *urealloc(void *ptr, size_t size)\r
26  {\r
27     void *dest = realloc(ptr,size);\r
28     //don't fail if we requested size 0\r
29     if (dest == NULL && size > 0 )\r
30        throw std::bad_alloc();\r
31     return dest;\r
32  }\r
33 \r
34 inline void *ucalloc(size_t nmemb, size_t size)\r
35  {\r
36     void * dest = calloc(nmemb,size);\r
37     //don't fail if we requested size 0\r
38     if (dest == NULL && nmemb > 0 && size > 0 )\r
39        throw std::bad_alloc();\r
40     return dest;\r
41  }\r
42 \r
43 inline void *umalloc(size_t size) \r
44  {\r
45     void * dest = malloc(size);\r
46     if (dest == NULL && size > 0)\r
47        throw std::bad_alloc();\r
48     return dest;\r
49  }\r
50 \r
51 #endif\r