Boost logo

Boost Users :

Subject: Re: [Boost-users] [Proto] automaitcally convert class to proto literal
From: Daniel Oberhoff (daniel.oberhoff_at_[hidden])
Date: 2009-01-05 08:43:16


> Daniel Oberhoff a écrit :
> > I might have gotten the terms wrong. But the way I got it working
now is
> > with using proto::lit which turns things into literals. I tried
> > subclassing terminal with my array class, but that way the tree did
not
>> keep a reference to the array, and thus could not be evaluated as
such.

> Just make a array_data class that contains your data and make your
user
> level array class extends terminal<array_data>::type. The vec3
example
> in the doc is exacly this and I used variations of this for like 4 or
5
> array like DSEL since proto is available.

Ok, I looked into that. Works better than my previous approaches. Though
I would like it much better if I don't have to split my class into an
internal data class and a user interface, since I would like to use the
whole interface in the proto evaluators. Also, since the extends
mechanism makes the data class end up a member of the derived class it
is hard to access the derived class from the base class. Is this
fundamentally impossible? Naively I would like to write:

class array
: public proto::extends< proto::terminal< array >::type, array >
{
        [...]
};

though this is not possible since the extends mechanism makes the expr
class a member of the extending class, and thus the class would have to
contain itself in the end, which is, of course, impossible.

-- 
---
Daniel Oberhoff
Fraunhofer FIT
Schloss Birlinghoven
53754 Sankt Augustin, Germany
Tel.: +49-(0)-2241-14-3486
Fax.:+49 (0) 2241/14-2080

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net