Re: [RFC] Stringify a thread

[email protected] (John Peacock) Thu, 05 Oct 2006 14:58:47 -0400
Newsgroups perl.perl5.porters,perl.ithreads
Organization Rowman & Littlefield Publishing Group
Message-ID <[email protected]>
Jim Bodwin wrote:
> You are not overloading the object, you are overloading the reference.  

Um, that's how overloading works:

$ perl -Mversion -MDevel::Peek -e '$vobj = qv("1.2.3");
print Dump($vobj);'
SV = RV(0x81c9750) at 0x8170cdc
   REFCNT = 1
   FLAGS = (ROK,OVERLOAD)
   RV = 0x8171798
   SV = PVHV(0x8175790) at 0x8171798
     REFCNT = 1
     FLAGS = (OBJECT,SHAREKEYS)
     IV = 2
     NV = 0
     STASH = 0x81718e8   "version"
     ARRAY = 0x8190c80  (1:2)
     hash quality = 125.0%
     KEYS = 2
     FILL = 2
     MAX = 1
     RITER = 0
     EITER = 0x0
     Elt "qv" HASH = 0x18c4b28a
     SV = IV(0x818f36c) at 0x8170cf4
       REFCNT = 1
       FLAGS = (IOK,pIOK)
       IV = 1
     Elt "version" HASH = 0x68c27e33
     SV = RV(0x81c974c) at 0x81f4d3c
       REFCNT = 1
       FLAGS = (ROK)
       RV = 0x8170d90
       SV = PVAV(0x8175c64) at 0x8170d90
         REFCNT = 1
         FLAGS = ()
         IV = 0
         NV = 0
         ARRAY = 0x81a2c70
         FILL = 2
         MAX = 3
         ARYLEN = 0x0
         FLAGS = (REAL)
         Elt No. 0
         SV = IV(0x818f370) at 0x817181c
           REFCNT = 1
           FLAGS = (IOK,pIOK)
           IV = 1
         Elt No. 1
         SV = IV(0x818f374) at 0x81717ec
           REFCNT = 1
           FLAGS = (IOK,pIOK)
           IV = 2
         Elt No. 2
         SV = IV(0x818f378) at 0x81f4c7c
           REFCNT = 1
           FLAGS = (IOK,pIOK)
           IV = 3

Objects, themselves, cannot have overloading magic associated with them, 
only references have that ability.

Now, it is possible to have references to objects inside of a composite 
object that are themselves overloaded, but that's probably not nearly as 
common a usage of overloading as the top-level reference.

John

-- 
John Peacock
Director of Information Research and Technology
Rowman & Littlefield Publishing Group
4501 Forbes Boulevard
Suite H
Lanham, MD  20706
301-459-3366 x.5010
fax 301-429-5748