return set;
}
+/**
+ * the name of the apiset
+ * @param set the api set
+ * @return the name of the set
+ */
+const char *afb_apiset_name(struct afb_apiset *set)
+{
+ return set->name;
+}
/**
* Get the API timeout of the set
* @param api the api
* @returns 0 in case of success or -1 in case
* of error with errno set:
- * - EINVAL if name isn't valid
* - EEXIST if name already registered
* - ENOMEM when out of memory
*/
struct api_desc *apis;
int i, c;
- /* Checks the api name */
- if (!afb_api_is_valid_name(name)) {
- ERROR("invalid api name forbidden (name is '%s')", name);
- errno = EINVAL;
- goto error;
- }
-
/* check previously existing plugin */
for (i = 0 ; i < set->count ; i++) {
c = strcasecmp(set->apis[i].name, name);
* @param api the structure where to store data about the API of name
* @return 0 in case of success or -1 in case of error
*/
+int afb_apiset_lookup(struct afb_apiset *set, const char *name, struct afb_api *api)
+{
+ const struct api_desc *i;
+
+ i = search(set, name);
+ if (i) {
+ *api = i->api;
+ return 0;
+ }
+
+ errno = ENOENT;
+ return -1;
+}
+
+/**
+ * Get from the 'set' the API of 'name' in 'api' with fallback to subset or default api
+ * @param set the set of API
+ * @param name the name of the API to get
+ * @param api the structure where to store data about the API of name
+ * @return 0 in case of success or -1 in case of error
+ */
int afb_apiset_get(struct afb_apiset *set, const char *name, struct afb_api *api)
{
const struct api_desc *i;
return -1;
}
if (!i->api.itf->get_verbosity)
- return 0;
+ return verbosity;
return i->api.itf->get_verbosity(i->api.closure);
}
return names;
}
+/**
+ * Enumerate the api names to a callback.
+ * @param set the api set
+ * @param callback the function to call for each name
+ * @param closure the closure for the callback
+ */
+void afb_apiset_enum(struct afb_apiset *set, void (*callback)(struct afb_apiset *set, const char *name, void *closure), void *closure)
+{
+ int i;
+
+ for (i = 0 ; i < set->count ; i++)
+ callback(set, set->apis[i].name, closure);
+}
+