1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
package QtCore4::classinfo;
#
# Proposed usage:
#
# use QtCore4::classinfo key => value;
#
use strict;
use warnings;
use Carp;
use QtCore4;
our $VERSION = 0.60;
sub import {
no strict 'refs';
my $self = shift;
croak "Odd number of arguments in classinfo declaration" if @_%2;
my $caller = $self eq 'QtCore4::classinfo' ? (caller)[0] : $self;
my(%classinfos) = @_;
my $meta = \%{ $caller . '::META' };
# See QtCore4::slots for explanation of this sub
*{ "${caller}::metaObject" } = sub {
return Qt::_internal::getMetaObject($caller);
} unless defined &{ "${caller}::metaObject" };
Qt::_internal::installqt_metacall( $caller ) unless defined &{$caller."::qt_metacall"};
$meta->{dbus} = undef;
foreach my $key ( keys %classinfos ) {
my $value = $classinfos{$key};
my $classinfo = {
$key => $value
};
push @{$meta->{classinfos}}, $classinfo;
# This affects the way the meta methods are defined. If $meta->{dbus}
# is true, the methods get declared public.
$meta->{dbus} = 1 if $key eq 'D-Bus Interface';
}
}
1;
|