Skip to content

Better support default arguments for defs->component() with specific interface of modern component

If we have a component created from the current template, its interface is, for example

component_tutorials::components::random_number_server::ComponentInterface

When using it like this in a client:

component_tutorials::components::random_number_server::ComponentInterfacePrx server;
    armarx::PropertyDefinitionsPtr
    Component::createPropertyDefinitions()
    {
        armarx::PropertyDefinitionsPtr def = new armarx::ComponentPropertyDefinitions(getConfigIdentifier());

        def->component(server);

        return def;
    }

The generated property is

 --ArmarX.random_number_client.cmp.Component = arg
                                        Ice object name of the `Component` 
                                        component.
                                        (Default: Component)

which is not really expressive.

This change uses the last namespace of the full type name (random_number_server in the example) if the class name is ComponentInterface, resulting in this property:

  --ArmarX.random_number_client.cmp.random_number_server = arg
                                        Ice object name of the 
                                        `random_number_server` component.
                                        (Default: random_number_server)

Merge request reports