+/* Treats the feature "provided_api" */
+static int add_provided_api(struct json_object *targets, const struct wgt_desc_feature *feat)
+{
+ static struct paramaction actions[] = {
+ { .name = string_sharp_target, .action = NULL, .closure = NULL }, /* skip #target */
+ { .name = NULL, .action = add_param_array, .closure = (void*)string_provided_api }
+ };
+ return add_targeted_params(targets, feat, actions);
+}
+
+/* Treats the feature "required_api" */
+static int add_required_api(struct json_object *targets, const struct wgt_desc_feature *feat)
+{
+ static struct paramaction actions[] = {
+ { .name = string_sharp_target, .action = NULL, .closure = NULL }, /* skip #target */
+ { .name = NULL, .action = add_param_array, .closure = (void*)string_required_api }
+ };
+ return add_targeted_params(targets, feat, actions);
+}
+
+/* Treats the feature "provided_binding" */
+static int add_provided_binding(struct json_object *targets, const struct wgt_desc_feature *feat)
+{
+ static struct paramaction actions[] = {
+ { .name = string_sharp_target, .action = NULL, .closure = NULL }, /* TODO: should be an error! */
+ { .name = NULL, .action = add_param_array, .closure = (void*)string_provided_binding }
+ };
+ return add_targeted_params(targets, feat, actions);
+}
+
+/* Treats the feature "required_binding" */