Re: [PyKDE] static const member variables

2006-07-12 Thread Nigel Stewart

The problem we're having is that without a concept of constness
in Python, we have the risk of python-code changing A::zero,
A::one or QString::null.

>
Proper support for const has been on the TODO list for a long time - just 
haven't got around to it yet.


Thanks Phil, just checking if there was anything new that we
ought to know about...

Thanks,

Nigel Stewrat

___
PyKDE mailing listPyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde


Re: [PyKDE] static const member variables

2006-07-11 Thread Phil Thompson
On Tuesday 11 July 2006 11:15 pm, Nigel Stewart wrote:
> Hello all,
>
> I'm sure this issue has come up before, in one way or another.
>
> Our issue is to do with static const class member variables
> such as:
>
> class A
> {
> public:
>  static const A zero;
>  static const A one;
> ...
> }
>
> ...In much the same manner as Qt provides QString::null.
>
> The problem we're having is that without a concept of constness
> in Python, we have the risk of python-code changing A::zero,
> A::one or QString::null.
>
> So, we were thinking of using %AccessCode (or something similar)
> to provide copies to Python that can be changed, leaving the
> C++ static const safe from modification
>
> class A
> {
> ...
>  static const A zero;
> %AccessCode
>  return new A(A::zero);
> %End
> ...
>
> But then, it seems likely that these copies will be leaked, so
> we seem to be stuck...
>
> Perhaps SIP could support a variable annotation that indicates
> that a copy should be passed to Python, rather than a reference,
> as an approximation to const in C++.
>
> (For a static member function we would be able to use
>   TransferBack to transfer ownership of the copy to Python)
>
> Perhaps more ideally, a const-flavored SIP wrapper object could
> omit the non-const methods - resulting in a lighter-weight and
> more general purpose solution to the problem.

Proper support for const has been on the TODO list for a long time - just 
haven't got around to it yet.

Phil

___
PyKDE mailing listPyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde


[PyKDE] static const member variables

2006-07-11 Thread Nigel Stewart

Hello all,

I'm sure this issue has come up before, in one way or another.

Our issue is to do with static const class member variables
such as:

class A
{
public:
static const A zero;
static const A one;
...
}

...In much the same manner as Qt provides QString::null.

The problem we're having is that without a concept of constness
in Python, we have the risk of python-code changing A::zero,
A::one or QString::null.

So, we were thinking of using %AccessCode (or something similar)
to provide copies to Python that can be changed, leaving the
C++ static const safe from modification

class A
{
...
static const A zero;
%AccessCode
return new A(A::zero);
%End
...

But then, it seems likely that these copies will be leaked, so
we seem to be stuck...

Perhaps SIP could support a variable annotation that indicates
that a copy should be passed to Python, rather than a reference,
as an approximation to const in C++.

(For a static member function we would be able to use
 TransferBack to transfer ownership of the copy to Python)

Perhaps more ideally, a const-flavored SIP wrapper object could
omit the non-const methods - resulting in a lighter-weight and
more general purpose solution to the problem.

Nigel Stewart

___
PyKDE mailing listPyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde