Boost logo

Boost Users :

Subject: [Boost-users] [karma] Losing attribute?
From: Sebastian Redl (sebastian.redl_at_[hidden])
Date: 2010-02-24 10:17:14


Hi,

I've got a Karma generator that should emit a vector of records, writing
out the index of every entry at the start. My code looks like this (note
that GEOPOINT is a fusion-adapted struct of two doubles):

        typedef std::vector<GEOPOINT> Contour;
        typedef std::vector<Contour> Poly;
        rule<Iterator, GEOPOINT()> point;
        rule<Iterator, Contour(int)> contour;
        rule<Iterator, locals<int>, Poly()> polygon;
        rule<Iterator, Poly()> start;

        point = L';' << double_ << L';' << double_;

        contour = L";SUBPOLYGON " << lit(_r1 - 1) << L" POINTS " <<
                lit(phoenix::size(_val)) << L" MASK XOR" << *point;

        polygon = L"POLYGON COUNT " << lit(phoenix::size(_val)) <<
                *(contour(_a)[++_a]);

        start = polygon;

This doesn't work. If I take away the modification of _a, it works, except
that of course the index is 0 in every iteration. But the moment I modify
_a in any way (including assigning to it anywhere in the polygon rule),
suddenly contour seems to get an incorrect attribute: it never fails, but
never emits points either, i.e. I get an endless string of ";SUBPOLYGON 1
POINTS 0 MASK XOR;SUBPOLYGON 2 POINTS 0 MASK XOR;SUBPOLYGON 3 POINTS 0 MASK
XOR...".

Any idea why that is?

Sebastian


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