SWIG INOUT types (C++ to Python)

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

I'm creating a python wrapper for a C++ api, making support for some types was more or less straightfoward using templates but the api needs some variables by reference, one of them is an int and the other is float.

If I am not wrong it is done by creating a INOUT apply like:

%apply float& INOUT { float& a };
%apply int& INOUT { int& a };

But how I use that types inside my python?

profilepic.png
manpreet 2 years ago

These b.com/tag/parameters">parameters are returned from the generated b.com/tag/python">python b.com/tag/function">function (not totally intuitive, considering the wrapped C++ b.com/tag/function">function signature). Let's say this is your exposed b.com/tag/function">function:

%apply float& INOUT { float& a };
%apply int& INOUT { int& b };

void foo(float& a, int& b);

you would invoke it from b.com/tag/python">python as

a = 3.14
b = 42

a, b = foo(a, b)

If you don't capture the return values, a and b remain unchanged.


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.