Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-03-12 08:59:04 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-03-12 09:44:35 +0300
commit873f8b13eceb19ecf439e678b4b2e9de86300c14 (patch)
treec54bb366b8925e10a5e62f695e19d010f55356d7 /source/blender/blenlib
parentd8daeeb9300953ee175e06c8fc1aa3a44a72da20 (diff)
Cleanup: BLI_utildefines struct macros
Use the term "AFTER" instead of "OFS" since it wasn't obvious these macros operate on everything after the struct member passed. Avoid casting to non-const types when only reading.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/BLI_utildefines.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index d3b285d0ddf..8e244f8b70f 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -428,29 +428,29 @@ extern "C" {
((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))
+/** Performs `offsetof(typeof(data), member) + sizeof((data)->member)` for non-gcc compilers. */
+#define OFFSETOF_STRUCT_AFTER(_struct, _member) \
+ ((((const char *)&((_struct)->_member)) - ((const char *)(_struct))) + sizeof((_struct)->_member))
/**
* memcpy helper, skipping the first part of a struct,
* ensures 'struct_dst' isn't const and the offset can be computed at compile time.
* This isn't inclusive, the value of \a member isn't copied.
*/
-#define MEMCPY_STRUCT_OFS(struct_dst, struct_src, member) { \
+#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member) { \
CHECK_TYPE_NONCONST(struct_dst); \
((void)(struct_dst == struct_src), \
- memcpy((char *)(struct_dst) + OFFSETOF_STRUCT(struct_dst, member), \
- (char *)(struct_src) + OFFSETOF_STRUCT(struct_dst, member), \
- sizeof(*(struct_dst)) - OFFSETOF_STRUCT(struct_dst, member))); \
-} (void)0
+ memcpy((char *)(struct_dst) + OFFSETOF_STRUCT_AFTER(struct_dst, member), \
+ (const char *)(struct_src) + OFFSETOF_STRUCT_AFTER(struct_dst, member), \
+ sizeof(*(struct_dst)) - OFFSETOF_STRUCT_AFTER(struct_dst, member))); \
+} ((void)0)
-#define MEMSET_STRUCT_OFS(struct_var, value, member) { \
+#define MEMSET_STRUCT_AFTER(struct_var, value, member) { \
CHECK_TYPE_NONCONST(struct_var); \
- memset((char *)(struct_var) + OFFSETOF_STRUCT(struct_var, member), \
+ memset((char *)(struct_var) + OFFSETOF_STRUCT_AFTER(struct_var, member), \
value, \
- sizeof(*(struct_var)) - OFFSETOF_STRUCT(struct_var, member)); \
-} (void)0
+ sizeof(*(struct_var)) - OFFSETOF_STRUCT_AFTER(struct_var, member)); \
+} ((void)0)
/* defined
* in memory_utils.c for now. I do not know where we should put it actually... */
@@ -458,10 +458,10 @@ extern "C" {
extern bool BLI_memory_is_zero(const void *arr, const size_t arr_size);
#endif
-#define MEMCMP_STRUCT_OFS_IS_ZERO(struct_var, member) \
+#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member) \
(BLI_memory_is_zero( \
- (char *)(struct_var) + OFFSETOF_STRUCT(struct_var, member), \
- sizeof(*(struct_var)) - OFFSETOF_STRUCT(struct_var, member)))
+ (const char *)(struct_var) + OFFSETOF_STRUCT_AFTER(struct_var, member), \
+ sizeof(*(struct_var)) - OFFSETOF_STRUCT_AFTER(struct_var, member)))
/* Warning-free macros for storing ints in pointers. Use these _only_
* for storing an int in a pointer, not a pointer in an int (64bit)! */