¿Cómo aplicar mapas de tipo SWIG OUTPUT para tipos de clase en Python?

Tengo algunos problemas para generar un contenedor Python alrededor de una biblioteca C ++ usando SWIG (versión 3.0.6).

Mi problema se relaciona con la aplicación del mapa de tipo OUTPUT, específicamente en el caso de punteros / referencias a tipos de clase.

Para ilustrar, esto es lo que quiero para los tipos estándar, y funciona:

// .h
int add(const long arg1,const long arg2,long& resultLong);

// interface.i
%apply long& OUTPUT { long& resultLong };
int add(const long arg1,const long arg2,long& resultLong);

// projectWrapper.py
def add(arg1, arg2):
    return _projectWrapper.add(arg1, arg2)
addTerm = _projectWrapper.add

// usage
>>> result = projectWrapper.add(2, 4)
>>> print result
[0, 6L]

No tiene que pasar "resultLong", pero se agrega al resultado automáticamente. ¡Excelente!

Sin embargo, esto no parece funcionar como esperaba cuando el tipo de salida es un puntero a un tipo de clase:

// .h
int GetClassType(const char* name, exportedClassType*& resultPointer);

class exportedClassType
{...}

// interface.i
%apply exportedClassType*& OUTPUT { exportedClassType*& resultPointer };    
int GetClassType(const char* name, exportedClassType*& resultPointer);

// projectWrapper.py
def GetClassType(name, resultPointer):
    return _projectWrapper.GetClassType(name, resultPointer)
GetClassType = _projectWrapper.GetClassType

El problema parece ser que SWIG no lo ha procesado de la misma manera que el tipo simple. Todavía aparece como un parámetro de "entrada" en la firma de la función envuelta.

// attempted usage
>>> classType = projectWrapper.GetClassType("name")
TypeError: GetClassType() takes exactly 2 arguments (1 given)

>>> result = 0
>>> projectWrapper.GetClassType("name", result)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: in method 'GetClassType', argument 2 of type 'exportedClassType *&'

¿Puede alguien decirme qué estoy haciendo mal o señalarme en la dirección correcta? Cualquier ayuda recibida con gratitud! Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta