How about something like this:
- The 'userdata' member of the (internal) stored data always holds a hash.
The UserData method stores the passed SV in the 'UserData' member of that
hash.
The 'Data' method stores the passed SV in the hash with a key equal to the
current classname (obtained from ref($_[0])). As you can't have 2 classes
with the same name in an inheritance hierarchy, nothing ever clobbers
anything else.
This would be problematic if you ever wanted access to your instance data
from a different package from where you set it - but you really should be
using accessor methods to do this anyway.
Does this work, and is it sensible?
Very interesting and elegant solution. I can't see why this wouldn't work.
Just so I understand you:
The userData SV on PERLWIN32GUI_USERDATA, will become a hash if it is ever
used (perhaps we should rename this member?). When the user calls the
UserData method to store data, the data is stored in the hash with the key
'UserData'. If the Data method is used to store data, the class name of the
object will be used to store the data in the hash.
Cheers,
jez.