summaryrefslogtreecommitdiffstats
path: root/m_struct.h
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-12 14:16:30 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-12 14:16:30 +0000
commit1402692370a360a0e1d6eaddb505ce4b8ee91aa4 (patch)
treecf30e691da1d61691b0b0be4309c8b7be65d01fa /m_struct.h
parent20acd250c5c5b787e7a7226759752c5905eef13d (diff)
downloadmpv-1402692370a360a0e1d6eaddb505ce4b8ee91aa4.tar.bz2
mpv-1402692370a360a0e1d6eaddb505ce4b8ee91aa4.tar.xz
A struct setter. It allow you to setup struct from some user
settings. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8170 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'm_struct.h')
-rw-r--r--m_struct.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/m_struct.h b/m_struct.h
new file mode 100644
index 0000000000..02cda2a6bb
--- /dev/null
+++ b/m_struct.h
@@ -0,0 +1,50 @@
+
+#ifndef NEW_CONFIG
+#warning "Including m_struct.h but NEW_CONFIG is disabled"
+#else
+
+///////////////////// A struct setter ////////////////////////
+
+struct m_option;
+
+/// Struct definition
+typedef struct m_struct_st {
+ char* name; // For error msg and debuging
+ unsigned int size; // size of the whole struct
+ void* defaults; // Pointer to a struct filled with the default settings
+ struct m_option* fields; // settable fields
+} m_struct_t;
+
+// Note : the p field of the m_option_t struct must contain the offset
+// of the member in the struct (use M_ST_OFF macro for this).
+
+// From glib.h (modified ;-)
+#define M_ST_OFF(struct_type, member) \
+ ((void*) &((struct_type*) 0)->member)
+#define M_ST_MB_P(struct_p, struct_offset) \
+ ((void*) (struct_p) + (unsigned long) (struct_offset))
+#define M_ST_MB(member_type, struct_p, struct_offset) \
+ (*(member_type*) M_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
+
+
+
+/// Allocate the struct and set it to the defaults
+void*
+m_struct_alloc(m_struct_t* st);
+/// Set a field of the struct
+int
+m_struct_set(m_struct_t* st, void* obj, char* field, char* param);
+/// Reset a field (or all if field == NULL) to defaults
+void
+m_struct_reset(m_struct_t* st, void* obj, char* field);
+/// Create a copy of an existing struct
+void*
+m_struct_copy(m_struct_t* st, void* obj);
+/// Free an allocated struct
+void
+m_struct_free(m_struct_t* st, void* obj);
+/// Get a field description
+struct m_option*
+m_struct_get_field(m_struct_t* st,char* f);
+
+#endif