From: Dennis S. <sy...@yo...> - 2004-07-10 17:56:55
|
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 |