Help with operators

martin nilsen <[email protected]>
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
My operator bindings just crash
friend Vec  operator+ (C Vec     &v,   Flt      r) {return Vec(v.x+r,
v.y+r, v.z+r);}

friend Vec  operator- (C Vec     &v,   Flt      r) {return Vec(v.x-r,
v.y-r, v.z-r);}
friend Vec  operator* (C Vec     &v,   Flt      r) {return Vec(v.x*r,
v.y*r, v.z*r);}
friend Vec  operator/ (C Vec     &v,   Flt      r) {return Vec(v.x/r,
v.y/r, v.z/r);}


friend Vec  operator+ (C Vec     &a, C Vec     &b) {return
Vec(a.x+b.x, a.y+b.y, a.z+b.z);}
friend Vec  operator- (C Vec     &a, C Vec     &b) {return
Vec(a.x-b.x, a.y-b.y, a.z-b.z);}
friend Vec  operator* (C Vec     &a, C Vec     &b) {return
Vec(a.x*b.x, a.y*b.y, a.z*b.z);}
friend Vec  operator/ (C Vec     &a, C Vec     &b) {return
Vec(a.x/b.x, a.y/b.y, a.z/b.z);}


The binding I've tried
//Add
.def(self + float())
.def(float() + self)
.def(self + Vec())
//Subtract
.def(self - float())
.def(float() - self)
.def(self - Vec())
//Multiply
.def(self * float())
.def(float() * self)
.def(self * Vec())
//Divide
.def(self / float())
.def(float() / self)
.def(self / Vec())
//Equal
.def(self == Vec())

and I can't do
.def(C Vec() &+C Vec() &)
and from what i can understand is because it isn't really taking
itself as a param

but there is also

          Vec& operator+=(  Flt      r) {x+=  r; y+=  r; z+=  r; return T;}
          Vec& operator-=(  Flt      r) {x-=  r; y-=  r; z-=  r; return T;}
          Vec& operator*=(  Flt      r) {x*=  r; y*=  r; z*=  r; return T;}
          Vec& operator/=(  Flt      r) {x/=  r; y/=  r; z/=  r; return T;}
          Vec& operator+=(C Vec     &v) {x+=v.x; y+=v.y; z+=v.z; return T;}
          Vec& operator-=(C Vec     &v) {x-=v.x; y-=v.y; z-=v.z; return T;}
          Vec& operator*=(C Vec     &v) {x*=v.x; y*=v.y; z*=v.z; return T;}
          Vec& operator/=(C Vec     &v) {x/=v.x; y/=v.y; z/=v.z; return T;}
          Vec& operator*=(C Matrix3 &m) {return mul(m);}
          Vec& operator/=(C Matrix3 &m) {return div(m);}
          Vec& operator*=(C Matrix  &m) {return mul(m);}
          Vec& operator/=(C Matrix  &m) {return div(m);}
          Bool operator==(C Vec     &v)C;
          Bool operator!=(C Vec     &v)C;

but from what I understand these can't be binded?
-- 
Later

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.