23de1538198bf2c72aa3764d7f3856c41e7868a5
[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 vars qw($VERSION $BRANCH);
11 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
12 $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
13 $main::build += $VERSION;
14 $main::branch += $BRANCH;
15
16 use DXUtil;
17 use DXDebug;
18 use vars qw(%valid);
19
20 %valid = (
21                   fromnode => '0,From Node',
22                   tonode => '0,To Node',
23                   vianode => '0,Via Node',
24                   origin => '0,Original Node',
25                   tocall => '0,To Callsign',
26                   fromcall => '0,From Callsign',
27                   hops => '0,No. of hops',
28                   text => '0,Text',
29                   datetime => '0,Date/Time,atime',
30                   freq => '0,Frequency',
31                   dxcall => '0,DX Callsign',
32                   sort => '0,Sort',
33                   hereflag => '0,Here?,yesno',
34                   talkflag => '0,Talk mode',
35                   bellflag => '0,Bell?',
36                   privflag => '0,Private?,yesno',
37                   rrflag => '0,RR Req.?,yesno',
38                   sysopflag => '0,Sysop flag',
39                   dxcount => '0,DX Count',
40                   wwvcount => '0,WWV Count',
41                   version => '0,Node Version',
42                   nodelist => '0,Node List,parray',
43                  );
44
45
46 sub new
47 {
48         my $pkg = shift;
49         my $sort = shift;
50         my $self = bless { sort => $sort }, $pkg;
51         return $self;
52 }
53
54 sub AUTOLOAD
55 {
56         no strict;
57         my $name = $AUTOLOAD;
58         return if $name =~ /::DESTROY$/;
59         $name =~ s/^.*:://o;
60   
61         confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
62         *$AUTOLOAD = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}};
63        goto &$AUTOLOAD;
64 }
65
66 1;
67 __END__