Uso de shared_ptr con SWIG Directors para Java

Estoy empezando a acostumbrarme a SWIG, y la última versión (v3.0) de SWIG parece manejar casi todo lo que necesito fuera de la caja, incluidas las características de C ++ 11, pero he encontrado un inconveniente cuando viene a usar shared_ptr con mis clases de director.

He podido conseguirshared_ptr para trabajar con clases proxy normales genial, pero ahora en mis directores, parece que no es compatible de fábrica. Me está dando el tipo generado automáticamente comoSWIGTYPE_p_std__shared_ptrT_MyDataType_t y está generando una interfaz rota porque no está usando los mismos tipos que usan las clases proxy.

Tengo un ejemplo simplificado de lo que estoy tratando de hacer (ejecutar conswig -c++ -java Test.i en el trago 3.0):

Test.i

%module(directors="1") test
%{

%}

%include <std_shared_ptr.i>

%shared_ptr(MyDataType)

class MyDataType {
public:
    int value;
};

class NonDirectorClass {
public:
    std::shared_ptr<MyDataType> TestMethod();
};

%feature("director") CallbackBaseClass;

class CallbackBaseClass {
public:
    virtual ~CallbackBaseClass() {};
    virtual std::shared_ptr<MyDataType> GetDataFromJava() {};
};

Básicamente lo que voy a hacer es extender elCallbackBaseClass en Java y quiero poder pasar mis tipos empaquetados shared_ptr. La clase no directora genera los tipos shared_ptr muy bien. Los archivos proxy de la clase director se generan correctamente, pero elSwigDirector_ Los métodos en el contenedor hacen referencia a los tipos incorrectos.

Parece que podría reparar manualmente los archivos cambiando el tipo deSWIGTYPE_p_std__shared_ptrT_MyDataType_t aMyDataType en todas partes, pero espero que alguien con más conocimiento de swig pueda responder la pregunta para que esto se pueda generar correctamente.

La mejor pista que tengo esaquí, pero todavía estoy tratando de descubrir cómo usar correctamente estos mapas tipo, especialmente parashared_ptr y no primitivas básicas.

ACTUALIZAR:

La documentacióndice:

Nota: Actualmente no hay soporte para% shared_ptr y la función de director.

Aunque no da ninguna indicación de por qué. Me gustaría saber si esto es imposible con los directores de swig, si hay una buena razón por la que no usar shared_ptr en los directores. Parece que tiene sentido usar los mismos tipos que usas en todas partes. Espero que la respuesta sea que todavía es posible.

Respuestas a la pregunta(1)

Su respuesta a la pregunta