Я пытаюсь связать мой класс C ++ с Cython, но мне трудно передать его в качестве аргумента std :: map.
файл sample.pxd:
from libcpp cimport bool
from libcpp cimport string
from libcpp cimport map
from libcpp.utility cimport pair
cdef extern from "../SampleProg.h":
cdef extern from "<map>" namespace "std":
cdef cppclass SampleProg:
SampleProg() except +
void setInitialTemplateParameters(map[string,XdmValue*] parameters, bool tunnel)
# Get all parameters as a std::map
map[string,XdmValue*]& getParameters()
# Get all properties as a std::map
map[string,string]& getProperties()
файл sampleProg.pyx:
cimport sampleProg
from libcpp cimport bool
from libcpp cimport map
from libcpp.utility cimport pair
from libcpp cimport string
cdef class PySampleProg:
def set_initial_template_parameters(self, bool tunnel, **kwds):
cdef map[str, PyXdmValue ] parameters
cdef bool c_tunnel
c_tunnel = tunnel
cdef PyXdmValue value_
for key, value in kwds.items():
if isinstance(value, PyXdmValue):
value_ = value
parameters[key] = value_.thisvptr
if len(kwds) > 0:
self.setInitialTemplateParameters(parameters, c_tunnel);
Кажется, я не могу найти примеры построения карты для передачи в C ++ в cython. Я получаю эту ошибку в файлах pxd и pyx:
void setInitialTemplateParameters (параметры map [string, XdmValue *], туннель bool)
^
sampleProg.pxd: 186: 46: «map» не является идентификатором типа