hw/acpi: move object_resolve_type_unambiguous to core QOM
object_resolve_type_unambiguous provides a useful functionality, that
is currently emulated for example by usb_bus_find(). Move it to core
code and add error reporting for increased generality.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240223124406.234509-2-pbonzini@redhat.com>
[PMD: Fixed style]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/qom/object.c b/qom/object.c
index 2c4c64d..d4a001c 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -2229,6 +2229,22 @@
return object_resolve_abs_path(parent, parts, TYPE_OBJECT);
}
+Object *object_resolve_type_unambiguous(const char *typename, Error **errp)
+{
+ bool ambig;
+ Object *o = object_resolve_path_type("", typename, &ambig);
+
+ if (ambig) {
+ error_setg(errp, "More than one object of type %s", typename);
+ return NULL;
+ }
+ if (!o) {
+ error_setg(errp, "No object found of type %s", typename);
+ return NULL;
+ }
+ return o;
+}
+
typedef struct StringProperty
{
char *(*get)(Object *, Error **);