9 typedef enum DataItemType
{
14 typedef struct DataItem DataItem
;
15 typedef struct DataItem_ops DataItem_ops
;
17 STAILQ_HEAD(DataItem_queue
, DataItem
);
18 typedef struct DataItem_queue DataItem_queue
;
21 /** Completely 'free' all resources of the DataItem */
22 void (*free
)(DataItem
*);
23 /** Release expensive resources, leaving identity information */
24 void (*clear
)(DataItem
*);
25 enum DataItemType typeID
;
26 const char **fullType
;
31 STAILQ_ENTRY(DataItem
) entries
;
34 INLINE
void free_DataItem(DataItem
*item
) {
35 assert(item
&& item
->ops
&& item
->ops
->free
);
36 item
->ops
->free(item
);
39 INLINE
void DataItem_clear(DataItem
*item
) {
40 assert(item
&& item
->ops
&& item
->ops
->clear
);
41 item
->ops
->clear(item
);
44 INLINE DataItemType
DataItem_getTypeID(DataItem
*item
) {
45 assert(item
&& item
->ops
);
46 return item
->ops
->typeID
;
49 INLINE
const char** DataItem_getFullType(DataItem
*item
) {
50 assert(item
&& item
->ops
);
51 return item
->ops
->fullType
;