annotate m_struct.h @ 18049:77a3b0d11ca5

Limit the number of entires to the amount that does fit into the chunk. the function need rewrite as it assumes quite many things that are not guaranteed by the specifications.
author iive
date Thu, 06 Apr 2006 20:04:02 +0000
parents 57bdcdb061d7
children 96568be4bfdc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10594
57bdcdb061d7 Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents: 9586
diff changeset
1 #ifndef _M_STRUCT_H
57bdcdb061d7 Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents: 9586
diff changeset
2 #define _M_STRUCT_H
8169
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
3
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
4 ///////////////////// A struct setter ////////////////////////
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
5
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
6 struct m_option;
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
7
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
8 /// Struct definition
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
9 typedef struct m_struct_st {
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
10 char* name; // For error msg and debuging
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
11 unsigned int size; // size of the whole struct
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
12 void* defaults; // Pointer to a struct filled with the default settings
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
13 struct m_option* fields; // settable fields
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
14 } m_struct_t;
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
15
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
16 // Note : the p field of the m_option_t struct must contain the offset
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
17 // of the member in the struct (use M_ST_OFF macro for this).
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
18
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
19 // From glib.h (modified ;-)
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
20 #define M_ST_OFF(struct_type, member) \
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
21 ((void*) &((struct_type*) 0)->member)
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
22 #define M_ST_MB_P(struct_p, struct_offset) \
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
23 ((void*) (struct_p) + (unsigned long) (struct_offset))
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
24 #define M_ST_MB(member_type, struct_p, struct_offset) \
9586
albeu
parents: 8169
diff changeset
25 (*(member_type*) M_ST_MB_P ((struct_p), (struct_offset)))
8169
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
26
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
27
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
28
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
29 /// Allocate the struct and set it to the defaults
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
30 void*
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
31 m_struct_alloc(m_struct_t* st);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
32 /// Set a field of the struct
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
33 int
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
34 m_struct_set(m_struct_t* st, void* obj, char* field, char* param);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
35 /// Reset a field (or all if field == NULL) to defaults
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
36 void
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
37 m_struct_reset(m_struct_t* st, void* obj, char* field);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
38 /// Create a copy of an existing struct
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
39 void*
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
40 m_struct_copy(m_struct_t* st, void* obj);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
41 /// Free an allocated struct
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
42 void
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
43 m_struct_free(m_struct_t* st, void* obj);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
44 /// Get a field description
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
45 struct m_option*
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
46 m_struct_get_field(m_struct_t* st,char* f);
7c9253521f9c A struct setter. It allow you to setup struct from some user
albeu
parents:
diff changeset
47
10594
57bdcdb061d7 Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents: 9586
diff changeset
48 #endif /* _M_STRUCT_H */