Re: [libxml++] node iterators
- From: Christophe de VIENNE <cdevienne alphacent com>
- To: libxmlplusplus-general lists sourceforge net
- Subject: Re: [libxml++] node iterators
- Date: Mon, 26 May 2003 14:40:20 +0200
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Le Vendredi 23 Mai 2003 18:57, andy glew amd com a écrit :
>
> In other words, I am agreeing with Murray that it is a separate
> class.
Me too (that's what I'm saying in the part of the message you didn't quote :-)
So I started implementing something this way. I have the following classes :
ChildrenList, ChildrenList::iterator and ChildrenList::const_iterator
The API is STL-like :
iterator ChildrenList::begin();
const_iterator ChildrenList::begin() const;
iterator ChildrenList::end();
const_iterator ChildrenList::end() const;
on the different iterators we have operators ++(), ++(int), ==(), !=(), *()
and ->().
I plan to add rbegin() and rend() and ad-hoc iterators.
Node::get_children() returns a reference to a ChildrenList which is an
attribute of Node initialised in constructor.
One problem I faced is the type return by iterator::operator*().
I first wanted to return a Node &. It is, I think, more logical, and avoid
writing things like (*iter)->do_something().
However this change the use of dynamic_cast to 'test' the type of node. If the
cast fail we have an exception instead of just returning a null pointer.
Moreover this will make a bit heavy the switching from a version to another
(but this may be acceptable from a 1.0 to 2.0 version upgrade).
So the question is :
What do you expect as a return type for
Node::ChildrenList::iterator::operator*() ?
remark:
One alternative I thought of is to have :
Node * operator*()
and
Node * operator->()
So we can both avoid complicating use of dynamic_cast and writing stuffs like
(*iter)->do_something().
But I don't think this is a very standard behavior and would prefer not to do
that.
Regards,
Christophe
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+0gs0B+sU3TyOQjARAlh8AJ0fw41qtK1QtMxB1sY0mmjmVvxAegCg4SgB
PYyxAMYlOId6SQiJz/aSl5Q=
=uUIR
-----END PGP SIGNATURE-----
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]