From: William S F. <ws...@fu...> - 2017-05-19 06:59:09
|
On 18 May 2017 at 15:05, Jake <jak...@gm...> wrote: > I feel like I must just be missing this in the documentation somewhere, > but when a function returns a reference SWIG treats that like a pointer by > default. How do we tell it to treat it as a value (i.e. make a copy and > wrap that)? > > For example: > > struct Example { > int& get(int x, int y); > }; > > I want the int copied and not as a SWIG_int_p. > > const int& is marshalled by value in Java/C#. You can thus simply use these typemaps. There are various ways, but I suggest using %apply: %apply const int& { int& } // Everywhere (including input parameters and on function return) %apply const int& { int& Example::get} // Just for this function's return On 18 May 2017 at 15:14, schullq <sch...@gm...> wrote: > Do you include "typemaps.i" ? > > If not, include it, and take a look a it ([swig folder]/Lib/[your target > language]/typemaps.i]), you should get your answer here. > > typemaps.i is for changing the way a function's parameters are marshalled, so not of any use for a function's return. You'll notice there are no 'out' typemaps in this file which is what generates the C code for returning types from a function. William |