Glib-Ex-ObjectBits
view release on metacpan or search on metacpan
lib/Glib/Ex/TieProperties.pm view on Meta::CPAN
=item C<weak =E<gt> boolean>, default false
Hold only a weak reference to C<$object>.
tie %h, 'Glib::Ex::TieProperties', $object, weak=>1;
If C<$object> is garbage collected while the tied C<%h> still exists then
C<%h> gives C<undef> for all fetches, does nothing for all stores, C<exists>
is always false, and C<keys> and C<each> are empty.
Doing nothing for stores is designed to ignore C<local> or similar cleanups
which might still be pending. If no-one else cared whether the object lived
or died then restoring settings can't be too important.
=back
=item C<< $hashref = Glib::Ex::TieProperties->new ($object) >>
=item C<< $hashref = Glib::Ex::TieProperties->new ($object, key=>value, ...) >>
Create and return a new anonymous hashref tied to the properties of
C<$object>. This is the same as
tie my(%hash), 'Glib::Ex::TieProperties', $object;
$hashref = \%hash;
The difference between a hash and a hashref is normally just a matter of
which style you prefer. Both can be created with one line of code (the
C<my> worked into the C<tie> call of the plain hash).
=item C<< Glib::Ex::TieProperties->in_object ($object) >>
=item C<< Glib::Ex::TieProperties->in_object ($object, key=>value, ...) >>
Establish a tied hash within C<$object> accessing its properties. The
default is a field called C<property>, so for instance
Glib::Ex::TieProperties->in_object ($object)
$object->{'property'}->{'tooltip-text'} = 'Hello.';
The optional key/value pairs are passed to the tie constructor as above, and
in addition
=over 4
=item C<field =E<gt> $str>, default "property"
Set the field name within C<$object> for the tied hash. The default
"property" is designed to be readable and not too likely to clash with other
things, but you can control it with the C<field> parameter,
Glib::Ex::TieProperties->in_object ($object,
field => 'xyzzy')
print $object->{'xyzzy'}->{'border-width'};
=back
The C<weak> parameter described above is always set on a tied hash
established by C<in_object()> so that it's not a circular reference which
would keep C<$object> alive forever.
=back
=head1 TIED OBJECT FUNCTIONS
The tie object associated with the hash, which is returned by the C<tie> or
obtained later with C<tied()>, has the following methods.
=over 4
=item C<< $tobj->object() >>
Return the underlying object (C<Glib::Object> object) being accessed by
C<$tobj>.
my %hash
my $tobj = tie %hash, 'Gtk2::Ex::TiedListColumn', $object;
...
print $tobj->object; # the original $object
Or getting the C<$tobj> later with C<tied()>,
my %hash
tie %hash, 'Gtk2::Ex::TiedListColumn', $object;
...
my $tobj = tied(%hash);
my $object = $tobj->object;
$object->show;
=back
=head1 OTHER WAYS TO DO IT
The C<Glib> module C<< $object->tie_properties() >> feature does a very
similar thing. But it works by populating C<$object> with individual tied
field objects for the properties. C<Glib::Ex::TieProperties> is separate
from the object and may use a little less memory since it's one object
instead of many. But separate means an extra variable, or an extra
indirection for the C<in_object()> style above.
=head1 SEE ALSO
L<Glib>, L<Glib::Object>
=head1 HOME PAGE
L<http://user42.tuxfamily.org/glib-ex-objectbits/index.html>
=head1 LICENSE
Copyright 2009, 2010, 2011, 2012, 2014, 2024 Kevin Ryde
Glib-Ex-ObjectBits is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any later
version.
Glib-Ex-ObjectBits is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
( run in 0.927 second using v1.01-cache-2.11-cpan-39bf76dae61 )