I've thought out the VisParam API, any comments ?
The container that contains a set of parameters:
struct _VisParamContainer {
VisList entries;
VisEventQueue *eventqueue;
};
A parameter entry:
struct _VisParamEntry {
VisParamContainer *parent;
char *name;
VisParamType type;
int flags;
union {
char *string;
int *integer;
float *floating;
/** @todo add a VisColor entry as well */
} data;
};
API functions:
VisParamContainer *visual_param_container_new ();
int visual_param_container_destroy (VisParamContainer *paramcontainer);
VisParamEntry *visual_param_entry_new ();
int visual_param_entry_free (VisParamEntry *param);
/* On a entry set an event is being emitted */
int visual_param_entry_set (VisParamEntry *param, char *name,
VisParamType type, int flags, void *data);
int visual_param_container_add (VisParamContainer *paramcontainer,
VisParamEntry *param);
int visual_param_container_add_new (VisParamContainer *paramcontainer,
char *name, VisParamType type, int flags, void *data);
int visual_param_container_remove (VisParamContainer *paramcontainer,
char *name);
VisParamEntry *visual_param_container_find (VisParamContainer
*paramcontainer, char *name);
The pointer to the eventqueue is optionally NULL and in case of a
plugin is being set by the plugin handler.
Please comment.
Dennis
|