Dave Mitchell wrote:

> * Is there ever any need to for a PMC type which holds both an int and a
> num? In the Perl 5 case we were constrained by code that expected to always
> find an int (or a num) in a fixed slot in the SV; with PMCs, all access
> to these slots is via methods, so an int-num or num-int conversion can
> be done on the fly.

There is.  You can't necessarily convert on the fly - perl5 allows
dual-typed SVs where the string and number aren't necessarily
interchangable versions of each other.  I use this ability, for example, to
map C #define constants to perl SVs that behave like the symbolic value in
a string context and the numeric value in a numeric constant.  e.g. given
this in a header file:

#define FOO 2
#define BAR 4

and mapping those to similarly named perl variables

my $fb = $foo | $bar;

assigns 6 to $fb, but

print("$foo | $bar\n");

prints out "FOO | BAR"

This is a really useful feature because it means that you don't need huge
lookup tables to convert from the numeric to the string version of a
constant - it is both at the same time.

-- 
Alan Burlison
--
$ head -1 /dev/bollocks
immutably engage omnipresent server-centric drivers

Reply via email to