Lists Home |
Date Index |
- From: james anderson <firstname.lastname@example.org>
- To: David Brownell <email@example.com>
- Date: Mon, 07 Feb 2000 14:48:19 +0100
David Brownell wrote:
> Stefan Haustein wrote:
> > Terje Norderhaug wrote:
> > > At 4:46 AM 2/5/00, Stefan Haustein wrote:
> > > > Terje Norderhaug wrote:
> > > >> I suggest that parsers interns each name as a separate string in the
> > > >> namespace it belong to. ...
> > would expect that both strings are java-interned. Also, you
> > would not be able to compare just against a constant.
No, but a static variable is possible. Don't forget, the bindings may be
dynamic, that is they change from document to document to document, or
element to element, but the name is, in fact, static.
> It'd be 'string.equals', the pricey one. The work to keep track
> of the appropriately interned strings would be too subtle to keep
> right in most systems. For starters, if I've got two subsystems
> spitting out names, how can they coordinate to use the same pool
> of interned names for each namespace?? Yeech.
> I'd vote against this namespace-specific interning.
IŽd vote for it. I not only would vote for it, I already did vote for it
in the earlier discussions re the SAX2 interface. I've also been using
an interface of this form for the last year to handle QNames. Lisp
offers the advantage, that the reader provides a syntax for this, which
make the declaration unnecessary. Even absent such niceties, the coding
overhead is minor: instead of using constant strings, they are simply
declared and interned in their declaration. Just think of them as if
they were resources.
The SAX2 interface already exposes a name interning mechanism, so the
handful of extra methods can't be an issue.