[Bf-blender-cvs] [c26fa67] master: BLI_utildefines: add pointer offset macro

Campbell Barton noreply at git.blender.org
Mon Feb 23 04:00:47 CET 2015


Commit: c26fa67bcd051e55960dadbcd5a6ee4fd1d0fb4a
Author: Campbell Barton
Date:   Mon Feb 23 13:50:12 2015 +1100
Branches: master
https://developer.blender.org/rBc26fa67bcd051e55960dadbcd5a6ee4fd1d0fb4a

BLI_utildefines: add pointer offset macro

Handy since it keeps the type of the original.

===================================================================

M	source/blender/blenlib/BLI_utildefines.h

===================================================================

diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index de91332..c7e26ce 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -481,6 +481,14 @@ extern "C" {
 /* reusable ELEM macro */
 #define ARRAY_SET_ITEMS(...) { VA_NARGS_CALL_OVERLOAD(_VA_ARRAY_SET_ITEMS, __VA_ARGS__); } (void)0
 
+#if defined(__GNUC__) || defined(__clang__)
+#define POINTER_OFFSET(v, ofs) \
+	((typeof(v))((char *)(v) + ofs))
+#else
+#define POINTER_OFFSET(v, ofs) \
+	((void *)((char *)(v) + ofs))
+#endif
+
 /* Like offsetof(typeof(), member), for non-gcc compilers */
 #define OFFSETOF_STRUCT(_struct, _member) \
 	((((char *)&((_struct)->_member)) - ((char *)(_struct))) + sizeof((_struct)->_member))




More information about the Bf-blender-cvs mailing list