osd_template.c: Add intrinsic based SSE2 support.
[mplayer.git] / m_struct.h
index bcf09dc..3843f09 100644 (file)
 #ifndef MPLAYER_M_STRUCT_H
 #define MPLAYER_M_STRUCT_H
 
+#include <stddef.h>
+#include <stdint.h>
+
 /// \defgroup OptionsStruct Options struct
 /// \ingroup Options
 /// An API to manipulate structs using m_option.
 ///@{
 
-/// \file m_struct.h
+/// \file
 
 struct m_option;
 
@@ -52,7 +55,7 @@ typedef struct m_struct_st {
  *  \return The offset of the field in bytes.
  */
 #define M_ST_OFF(struct_type, member)    \
-    ((void*) &((struct_type*) 0)->member)
+    ((void*)offsetof(struct_type, member))
 
 /// Get a pointer to a struct field.
 /** \param struct_p Pointer to the struct.
@@ -60,7 +63,7 @@ typedef struct m_struct_st {
  *  \return Pointer to the struct field.
  */
 #define M_ST_MB_P(struct_p, struct_offset)   \
-    ((void *)((char *)(struct_p) + (unsigned long)(struct_offset)))
+    ((void *)((char *)(struct_p) + (intptr_t)(struct_offset)))
 
 /// Access a struct field at a given offset.
 /** \param member_type Type of the field.