]> gb7djk.dxcluster.net Git - spider.git/blob - perl/Prot.pm
final(!) issued version of sh/dx
[spider.git] / perl / Prot.pm
1 #
2 # Base class for OO version of all protocol stuff
3 #
4
5 package Prot;
6
7 use strict;
8
9
10 use DXUtil;
11 use DXDebug;
12 use vars qw(%valid);
13
14 %valid = (
15                   fromnode => '0,From Node',
16                   tonode => '0,To Node',
17                   vianode => '0,Via Node',
18                   origin => '0,Original Node',
19                   tocall => '0,To Callsign',
20                   fromcall => '0,From Callsign',
21                   hops => '0,No. of hops',
22                   text => '0,Text',
23                   datetime => '0,Date/Time,atime',
24                   freq => '0,Frequency',
25                   dxcall => '0,DX Callsign',
26                   sort => '0,Sort',
27                   hereflag => '0,Here?,yesno',
28                   talkflag => '0,Talk mode',
29                   bellflag => '0,Bell?',
30                   privflag => '0,Private?,yesno',
31                   rrflag => '0,RR Req.?,yesno',
32                   sysopflag => '0,Sysop flag',
33                   dxcount => '0,DX Count',
34                   wwvcount => '0,WWV Count',
35                   version => '0,Node Version',
36                   nodelist => '0,Node List,parray',
37                  );
38
39
40 sub new
41 {
42         my $pkg = shift;
43         my $sort = shift;
44         my $self = bless { sort => $sort }, $pkg;
45         return $self;
46 }
47
48 sub AUTOLOAD
49 {
50         no strict;
51         my $name = $AUTOLOAD;
52         return if $name =~ /::DESTROY$/;
53         $name =~ s/^.*:://o;
54   
55         confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
56         *$AUTOLOAD = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}};
57        goto &$AUTOLOAD;
58 }
59
60 1;
61 __END__