Insertar CrossCutting C ++ Código a través de Swig% Directiva de excepciones -- python campo con c++ campo con swig camp Relacionados El problema

Inserting crosscutting c++ code via swig %exception directive


2
vote

problema

Español

Me gustaría insertar un pedazo de código (por ejemplo, una llamada de función C ++Cutting C ++) antes de todas las invocaciones de métodos reales en el código de envoltura generado SWIG. He usado la directiva de% de excepción en mi archivo .i y terminé obteniendo el siguiente código de envoltura generado

  some_crosscutting_c++_function_call(); try {   {     SWIG_PYTHON_THREAD_BEGIN_ALLOW;// release GIL     actual_c++_function_call();     SWIG_PYTHON_THREAD_END_ALLOW;// acquire GIL   } } catch(some exception) {   ...... }   

Pero lo que quiero es lo siguiente

  try {   {     SWIG_PYTHON_THREAD_BEGIN_ALLOW;//release GIL     some_crosscutting_c++_function_call();     actual_c++_function_call();     SWIG_PYTHON_THREAD_END_ALLOW;//acquire GIL   } } catch(some exception) {   ...... }   

La llamada de función transversal no necesita Gil, por lo tanto, quiero que se llame después de que se libere el Gil. ¿Hay alguna manera de tener un gancho justo antes de real_c ++ _ function_call () y después de swig_python_thread_begin_allow?

Original en ingles

I would like to insert a piece of code (say a crosscutting c++ function call) before all the actual method invocations in the swig generated wrapper code. I have used the %exception directive in my .i file and ended up getting the following wrapper code generated

some_crosscutting_c++_function_call(); try {   {     SWIG_PYTHON_THREAD_BEGIN_ALLOW;// release GIL     actual_c++_function_call();     SWIG_PYTHON_THREAD_END_ALLOW;// acquire GIL   } } catch(some exception) {   ...... } 

But what I want is the following

try {   {     SWIG_PYTHON_THREAD_BEGIN_ALLOW;//release GIL     some_crosscutting_c++_function_call();     actual_c++_function_call();     SWIG_PYTHON_THREAD_END_ALLOW;//acquire GIL   } } catch(some exception) {   ...... } 

The crosscutting function call doesn't need GIL, hence I want it to be called after the GIL is released. Is there a way to have a hook just before actual_c++_function_call() and after SWIG_PYTHON_THREAD_BEGIN_ALLOW ?

        

Lista de respuestas


Relacionados problema

0  Error en compilado en SWIG para conectar C con PHP  ( Error in compiled in swig for connect c with php ) 
swig -php example.i Esto producirá 3 archivos example_wrap.c, php_example.h y example.php. El primer archivo, example_wrap.c contiene todo el código C neces...

6  Creando una DLL desde un archivo CPP envuelto con SWIG  ( Creating a dll from a wrapped cpp file with swig ) 
Estoy en el proceso de aprender a usar SWIG en Windows. El siguiente es mi código C ++: /* File : example.cxx */ #include "example.h" #define M_PI 3....

1  Compilando una biblioteca para Ruby con SWIG en Mac OS X  ( Compiling a library for ruby with swig on mac os x ) 
Intenté compilar la siguiente biblioteca y todo fue suave hasta el último paso. /* File : computation.c */ int add(int x, int y) { return x + y; } /* Fi...

1  Exportación de estructuras de datos C y una API C a Python  ( Exporting c data structures and a c api to python ) 
Tengo la fuente a una biblioteca C con una API C. Quiero exponer las funciones y las estructuras de datos de C a Python, para que pueda usar la biblioteca en ...

3  Compartiendo la asignación de memoria con C ++ y JNI  ( Sharing memory allocation with c and jni ) 
Estoy escribiendo una envoltura en Java para un programa C ++. La envoltura se realiza usando SWIG. Tengo el siguiente problema: cuando llamo a una función de...

15  ¿Cómo obtener SWIG para aplicar plantillas al envolver una clase de plantilla que contiene vectores?  ( How to get swig to apply templates when wrapping a template class containing vec ) 
Estoy tratando de usar SWIG para envolver (en C #) Algunos código C ++ que contiene una clase de plantilla que en sí mismo envuelve un std::vector<T> . He vi...

4  Mover datos binarios a / desde Perl usando SWIG  ( Moving binary data to from perl using swig ) 
Estoy tratando de que sea fácil para mí mover los datos binarios entre Perl y mi biblioteca de C ++. He creado una estructura C ++ para entregar el Binary_D...

22  Prototipado con código Python antes de compilar  ( Prototyping with python code before compiling ) 
He estado reflexionando sobre la escritura de una biblioteca de ajuste máximo por un tiempo. Conozco a Python bastante bien y planea implementar todo en Pytho...

7  Pasando la matriz de Python a la función C ++ con SWIG  ( Passing python array to c function with swig ) 
He escrito un buen código en Python y funciona muy bien. Pero ahora estoy ampliando el tamaño de los problemas que estoy analizando y Python es terriblemente ...

2  Wrap Std :: Vector de STD :: Vectores, C ++ Swig Python  ( Wrap stdvector of stdvectors c swig python ) 
Quiero envolver un vector C ++ de vectores al código de Python usando SWIG. ¿Es posible envolver este tipo de vector de vectores? std::vector<std::vector...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos