diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libHX/defs.h | 29 | ||||
-rw-r--r-- | include/libHX/libxml_helper.h | 1 | ||||
-rw-r--r-- | include/libHX/misc.h | 2 | ||||
-rw-r--r-- | include/libHX/string.h | 6 |
4 files changed, 11 insertions, 27 deletions
diff --git a/include/libHX/defs.h b/include/libHX/defs.h index 9ecdd32..1ace518 100644 --- a/include/libHX/defs.h +++ b/include/libHX/defs.h @@ -2,23 +2,14 @@ #define _LIBHX_DEFS_H 1 #ifdef __cplusplus -# define FIELD_SIZEOF(type, member) \ - sizeof(static_cast<type *>(NULL)->member) -# define HXsizeof_member(type, member) FIELD_SIZEOF(type, member) -# define HXtypeof_member(type, member) \ - __typeof__(static_cast<type *>(NULL)->member) -# if defined(__GNUC__) && __GNUC__ >= 4 && !defined(offsetof) - /* - * This is here so most programs can skip inclusion - * of stddef.h just to get offsetof. - */ -# define offsetof(type, member) __builtin_offsetof(type, member) -# endif -# ifndef offsetof -# define offsetof(type, member) \ - reinterpret_cast<long>(&(static_cast<type *>(NULL)->member)) +# define HXsizeof_member(type, member) sizeof(type::member) +# if __cplusplus >= 201100L +# define HXtypeof_member(type, member) decltype(type::member) +# else +# define HXtypeof_member(type, member) __typeof__(type::member)) # endif # ifndef containerof +# include <cstddef> # define containerof(var, type, member) reinterpret_cast<type *>( \ reinterpret_cast<char *>(var) - offsetof(type, member)) # endif @@ -139,14 +130,8 @@ static __inline__ new_type signed_cast(unsigned char *expr) # ifndef reinterpret_cast # define reinterpret_cast(type, expr) ((type)(expr)) # endif -# if defined(__GNUC__) && __GNUC__ >= 4 && !defined(offsetof) -# define offsetof(type, member) __builtin_offsetof(type, member) -# endif -# ifndef offsetof -# define offsetof(type, member) \ - reinterpret_cast(long, &(static_cast(type *, NULL)->member)) -# endif # ifndef containerof +# include <stddef.h> # define containerof(var, type, member) reinterpret_cast(type *, \ reinterpret_cast(char *, var) - offsetof(type, member)) # endif diff --git a/include/libHX/libxml_helper.h b/include/libHX/libxml_helper.h index 599ede1..ebe5613 100644 --- a/include/libHX/libxml_helper.h +++ b/include/libHX/libxml_helper.h @@ -6,7 +6,6 @@ #else # include <string.h> #endif -#include <libHX/defs.h> #include <libxml/parser.h> #ifdef __cplusplus diff --git a/include/libHX/misc.h b/include/libHX/misc.h index 3f68917..adebf22 100644 --- a/include/libHX/misc.h +++ b/include/libHX/misc.h @@ -11,8 +11,6 @@ # include <cstdarg> # include <cstdio> #endif -#include <libHX/defs.h> -#include <libHX/io.h> #ifdef __cplusplus extern "C" { diff --git a/include/libHX/string.h b/include/libHX/string.h index f7146b5..4dc4c11 100644 --- a/include/libHX/string.h +++ b/include/libHX/string.h @@ -66,8 +66,10 @@ extern char *HX_dirname(const char *); extern hxmc_t *HX_getl(hxmc_t **, FILE *); extern void *HX_memmem(const void *, size_t, const void *, size_t); extern char **HX_split(const char *, const char *, int *, int); -extern char **HX_split4(char *, const char *, int *, int); -extern int HX_split5(char *, const char *, int, char **); +extern int HX_split_fixed(char *, const char *, int, char **); +extern char **HX_split_inplace(char *, const char *, int *, int); +#define HX_split4(a, b, c, d) HX_split_inplace((a), (b), (c), (d)) +#define HX_split5(a, b, c, d) HX_split_fixed((a), (b), (c), (d)) extern char *HX_strbchr(const char *, const char *, char); extern char *HX_strchr2(const char *, const char *); extern char *HX_strclone(char **, const char *); |