int pa_classify_source(struct userdata *u, struct pa_source *source,
                       uint32_t flag_mask, uint32_t flag_value,
                       char *buf, int len)
{
    struct pa_classify *classify;
    struct pa_classify_device_def *defs;
    const char *name;

    pa_assert(u);
    pa_assert_se((classify = u->classify));
    pa_assert(classify->sources);
    pa_assert_se((defs = classify->sources->defs));

    name = pa_source_ext_get_name(source);

    return devices_classify(defs, source->proplist, name,
                            flag_mask, flag_value, buf, len);
}
int pa_classify_is_source_typeof(struct userdata *u, struct pa_source *source,
                                 const char *type,
                                 struct pa_classify_device_data **d)
{
    struct pa_classify *classify;
    struct pa_classify_device_def *defs;
    const char *name;

    pa_assert(u);
    pa_assert_se((classify = u->classify));
    pa_assert(classify->sources);
    pa_assert_se((defs = classify->sources->defs));

    if (!source || !type)
        return FALSE;

    name = pa_source_ext_get_name(source);

    return devices_is_typeof(defs, source->proplist, name, type, d);
}
static const char *object_name(struct pa_policy_object *object)
{
    const char *name;

    switch (object->type) {

    case pa_policy_object_module:
        name = pa_module_ext_get_name((struct pa_module *)object->ptr);
        break;

    case pa_policy_object_card:
        name = pa_card_ext_get_name((struct pa_card *)object->ptr);
        break;

    case pa_policy_object_sink:
        name = pa_sink_ext_get_name((struct pa_sink *)object->ptr);
        break;
        
    case pa_policy_object_source:
        name = pa_source_ext_get_name((struct pa_source *)object->ptr);
        break;
        
    case pa_policy_object_sink_input:
        name = pa_sink_input_ext_get_name((struct pa_sink_input *)object->ptr);
        break;
        
    case pa_policy_object_source_output:
        name = pa_source_output_ext_get_name(
                     (struct pa_source_output *)object->ptr);
        break;
        
    default:
        name = "<unknown>";
        break;
    }

    return name;
}