On Friday 09 August 2002 11:59 am, Angus Leeming wrote:
> On Friday 09 August 2002 12:23 pm, Andre Poenitz wrote:
> > On Fri, Aug 09, 2002 at 11:36:13AM +0100, Angus Leeming wrote:
> > > and can therefore be simplified to
> > >
> > > void Counters::copy(Counters & from, Counters & to)
> > > {
> > >   CounterList::iterator it = counterList.begin();
> > >   CounterList::iterator end = counterList.end();
> > >   for (; it != end; ++it) {
> > >           to.set(it->first, from.value(it->first));
> > >   }
> > > }
> >
> > Does this change 'from'?
>
> int Counters::value(string const & ctr) const
> {
>       CounterList::const_iterator cit = counterList.find(ctr);
>       if (cit == counterList.end()) {
>               lyxerr << "value: Counter does not exist: " << ctr << endl;
>               return 0;
>       }
>       return cit->second.value();
> }
>
> No.

But you are right to notice that the semantics of this method are very 
confusing.

1. It's a member of Counters, but does not set *this.

Is this what is meant:
void Counters::copy(Counters const & from)
{
        CounterList::iterator it = counterList.begin();
        CounterList::iterator end = counterList.end();
        for (; it != end; ++it) {
                it->set(from.value(it->first));
        }
}

?

2. Alternatively, it could be a non-member function

void Counters::copy(Counters const & from, Counters & to)
{
        CounterList::iterator it = to.counterList.begin();
        CounterList::iterator end = to.counterList.end();
        for (; it != end; ++it) {
                it->set(from.value(it->first));
        }
}

As it is, I have no idea what it is meant to be doing, but it ain't doing it!

Angus


But is Counters::copy doing what it's meant to be doing?

Why is it a member variable that resets to

Reply via email to