NAME

Data::Identifier::Interface::Userdata - format independent identifier object

VERSION

version v0.17

SYNOPSIS

use parent 'Data::Identifier::Interface::Userdata';

(since v0.14, experimental)

Interface for modules implementing userdata().

Note: This interface is experimental. Details may change or it may be removed completely.

METHODS

userdata

my $value = $obj->userdata(__PACKAGE__, $key);
$obj->userdata(__PACKAGE__, $key => $value);

# since v0.16, highly experimental:
my $value = $pkg->Data::Identifier::Interface::Userdata::userdata(__PACKAGE__, $key);
$pkg->Data::Identifier::Interface::Userdata::userdata(__PACKAGE__, $key => $value);

Get or set user data to be used with this object. The data is stored using the given $key. The package of the caller is given to provide namespaces for the userdata, so two independent packages can use the same $key.

The meaning of $key, and $value is up to __PACKAGE__.

The default implementation uses "_userdata_provider" as a backend for storage.

Since v0.16 it is possible to call this method on packages. This will store the values on the package. This does also not require the package to inherit from this package. This is highly experimental and may change at any point.

_userdata_provider

my $userdata = $obj->_userdata_provider;

This method is used by the default implementation of "userdata". It provides the backend storage for userdata.

For every passed object it returns an instance of a hashref (initially empty) that is kept inside the object.

The default implementation expects the object to be a (blessed) hashref. It uses the key userdata to store the hashref. It is equivalent to:

return $obj->{userdata} //= {};

If "userdata" is overridden this method can stay unimplemented.

AUTHOR

Löwenfelsen UG (haftungsbeschränkt) <support@loewenfelsen.net>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2023-2025 by Löwenfelsen UG (haftungsbeschränkt) <support@loewenfelsen.net>.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)