On Wednesday, May 30, 2012 01:50:39 PM John Cummings wrote:
> On 05/30/2012 01:09 PM, Hugo Parente Lima wrote:
> > It can be passed by value unless it's a const reference, otherwise the
> > following code wont work.
> >
> > enum ValEnum { One, Other };
> > void oneOrTheOtherEnumValue(ValEnum& enumValue) {
> >
> > enumValue = Other;
> >
> > }
> >
> > ValEnum a = One;
> > oneOrTheOtherEnumValue(a);
> > // a should be equal to Other.
> >
> > This is why Shiboken tries to use a pointer, but the code seems wrong
> > anyway>
> > :-/.
>
> The subject of the thread was incorrect before. Sorry for the confusion.
>
> Your statement "It can be passed by value unless it's a const reference" is
> circular. Passing by value is by definition not passing by reference.
> Perhaps I don't understand your statement.What I meant was: If the library function being bound has a const reference parameter, we can internally copy this value around and this will not affect the API of the bound library. But if the reference isn't const, the generated code can't pass this parameter by value in any place because it'll change the API behavior, i.e. if the function changes the parameter, the change wont be visible after the function call. This is why Shiboken uses pointers on non-const references, but as you noticed it's buggy and generating broken code. > It also doesn't matter if the reference is const or not in this case, the > current Shiboken still does not create a correct wrapper. Old versions did. > > John Cummings > _______________________________________________ > PySide mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/pyside
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ PySide mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/pyside
