I am trying to define a Buffer::searchInset method which would work on
a const buffer and return an iterator to the inset.

My first try is:

Buffer::inset_iterator Buffer::searchInset(Inset const * inset) const
{
        inset_iterator it;
        inset_iterator end = inset_iterator_end();
        for(it = inset_iterator_begin(); it != end; ++it) {
                if (*it == inset)
                        break;
        }
        return it;
}

However, I get:
../../lyx-devel/src/buffer.C: In method `class Buffer::inset_iterator 
Buffer::searchInset(const Inset *) const':
../../lyx-devel/src/buffer.C:3787: passing `const Buffer' as `this' argument of `class 
Buffer::inset_iterator Buffer::inset_iterator_end()' discards qualifiers
../../lyx-devel/src/buffer.C:3788: passing `const Buffer' as `this' argument of `class 
Buffer::inset_iterator Buffer::inset_iterator_begin()' discards qualifiers
make: *** [buffer.o] Error 1

This probably means that I need a Buffer::inset_const_iterator type.
How shall I define it? Do I need to duplicate the
Buffer::inset_iterator class? I certainly hope not...

Could some people who know better than me about C++ iterator semantics
help me?

JMarc

Reply via email to