Skip to content

Problem with instantiating templates #478

@jpsacha

Description

@jpsacha

Following preset code attempts to create an instance of a template:

new Info("Spinnaker::GenApi::IEnumerationT<Spinnaker::InterfaceTypeEnum>").pointerTypes("EInterfaceType").define()

Usage of the template in the generated Java code is correctly replaced with EInterfaceType. However, the there is no Java class generated to instantiate the template.

Note that template is in the namespace Spinnaker::GenApi. The template parameter is in the namespace Spinnaker. There is a separate preset for each namespace.

Simplified preset class for GenApi

@Properties(inherit = GenICam.class,
        target = "org.bytedeco.spinnaker.GenApi",
        global = "org.bytedeco.spinnaker.global.GenApi", ...)
public class GenApi implements InfoMapper { ... }

Simplified preset class for Spinnaker

@Properties(inherit = GenApi.class,
        target = "org.bytedeco.spinnaker.Spinnaker",
        global = "org.bytedeco.spinnaker.global.Spinnaker", ...)
public class Spinnaker implements InfoMapper { 
    public void map(InfoMap infoMap) {
        infoMap.put(new Info("Spinnaker::GenApi::IEnumerationT<Spinnaker::InterfaceTypeEnum>")
                           .pointerTypes("EInterfaceType").define())
...
}

Simplified C++ definition of the IEnumerationT:

namespace Spinnaker
{
    namespace GenApi
    {
        template <typename EnumT>
        interface SPINNAKER_API_ABSTRACT IEnumerationT : virtual public IEnumeration, virtual public IEnumReference
        {
          ... 
        }
    }
}

Definition of InterfaceTypeEnum:

namespace Spinnaker
{
	enum InterfaceTypeEnum	/*!< Transport layer type of the interface.*/
	{
		InterfaceType_GigEVision,	/*!< GigE Vision*/
		InterfaceType_CameraLink,	/*!< Camera Link*/
		InterfaceType_CameraLinkHS,	/*!< Camera Link High Speed*/
		InterfaceType_CoaXPress,	/*!< CoaXPress*/
		InterfaceType_USB3Vision,	/*!< USB3 Vision*/
		InterfaceType_Custom,	/*!< Custom transport layer*/
		NUMINTERFACETYPE
	}
...
}

Need to figure out some way to force the instantiation of that template.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions