Я пытаюсь выставить эту функцию в Python, используя SWIG:Как открыть std :: vector <int> как список Python с помощью SWIG?
std::vector<int> get_match_stats();
И я хочу SWIG генерировать оберточной код для Python, так что я могу видеть его в виде списка целых чисел.
Добавление этого к .i файла:
%include "typemaps.i" %include "std_vector.i" namespace std { %template(IntVector) vector<int>; }
Я бегу SWIG Version 1.3.36
и вызова глотнул с -Wall
и я не получаю никаких предупреждений.
Я в состоянии получить доступ к списку, но я получаю кучу предупреждений при компиляции с -Wall
(с g++ (GCC) 4.2.4
) код генерируется C++, которые говорят:
warning: dereferencing type-punned pointer will break strict-aliasing rules
Могу ли я обнажая функцию правильно? Если да, то что означает предупреждение?
Эти строки перед ошибочную строку в одной и той же функции:
SWIGINTERN PyObject *_wrap_IntVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector *arg1 = (std::vector *) 0 ; std::vector::iterator arg2 ; std::vector::iterator result; void *argp1 = 0 ; int res1 = 0 ; swig::PySwigIterator *iter2 = 0 ; int res2 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_erase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_erase" "', argument " "1"" of type '" "std::vector *""'"); } arg1 = reinterpret_cast * >(argp1);
И это мешающий линия:
res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::PySwigIterator::descriptor(), 0);
Больше кода следует, что.
Предупреждение генерируется при компиляции с г ++ 4.2.4 является:
swig_iss_wrap.cxx: In function ‘PyObject* _wrap_IntVector_erase__SWIG_0(PyObject*, PyObject*)’: swig_iss_wrap.cxx:5885: warning: dereferencing type-punned pointer will break strict-aliasing rules
Это то, что я пробовал, и при компиляции с g ++ получаю кучу предупреждений. Есть идеи? – 2008-11-10 19:54:10