develooper Front page | perl.perl5.porters | Postings from October 2001

Re: Clamp, wherefor art thou

Thread Previous | Thread Next
Nick Ing-Simmons
October 30, 2001 09:24
Re: Clamp, wherefor art thou
Message ID:
Arthur Bergman <> writes:
>IMHO we should let SvREADONLY have a meaning on AVs and HVs.
>A Readonly hashes/array can not have any new items added or deleted to it. But
>it doesn't lock the contents. If you want to do that you can itirate over it
>and make them SvREADONLY.

Thanks. That was essentially my position (as I recall it anyway) last time this
was discussed.

For an HV it would also be nice to represent the case of "allowed" keys.
(For an AV I assume anything which does not raise the limit is "allowed".)

I think that allowed (but not existing) entries in HV could be represented
by having an HE but with its SV * being Nullsv - or perhaps a pointer
to a "special" SV

I don't think special casing "scalar keys" is necessary - the allowed keys
are counted so the existing count in the header is fine.

Personally I would be happy if allowed keys always returned true from exists
as well ... but others may differ.

What I really do not like is the 'Clamp' name - it does not suggest to me
anything vaguely like the proposed semantics.

As I recall I was suggesting something like:

use Access;

And we got stuck looking for a prototype that would allow/force a "reference
to anything".

But leaving that on one side I still prefer:

Access::FixKeys(%h);       # SvREADONLY_on(hv);
Access::FixValues(%h);     # SvREADONLY_on($_) foreach values %h;

It also seems to me that an XS module could already do this with mg.c type
"magic" - which would be faster than full "tie" as no method calls are
needed - without modification of the guts of hv.c.

Nick Ing-Simmons

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About