change qrz address
[spider.git] / perl / Thingy.pm
1 #
2 # This module is the factory method for dealing with routable entities
3 # It will route transforming them on the way as required.
4 #
5 # Copyright (c) 2001 Dirk Koopman G1TLH
6 #
7 # $Id$
8
9
10 package Thingy;
11
12 use strict;
13
14 use DXDebug;
15
16 use vars qw($VERSION $BRANCH);
17 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
18 $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
19 $main::build += $VERSION;
20 $main::branch += $BRANCH;
21
22 use vars qw(%valid);
23
24 %valid = (
25                   sort => '0,Sort',
26                   tonode => '0,To Node',
27                   fromnode => '0,From Node',
28                   id => '0,Msg Id',
29                   origin => '0,Origin Node',
30                   line => '0,Input Line',
31                  );
32
33
34 sub init
35 {
36
37 }
38
39 sub new
40 {
41         my $pkg = shift;
42         my $self = {@_};
43         return bless $self, $pkg;
44 }
45
46 sub AUTOLOAD
47 {
48         my ($pkg, $name) = $AUTOLOAD =~ /^(.*)::(\w+)$/;
49         return if $name eq 'DESTROY';
50   
51         my $v = "${pkg}::valid";
52         confess "Non-existant field '$AUTOLOAD'" unless $$v{$name} || $valid{$name};
53
54         *$AUTOLOAD = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}};
55         goto &$AUTOLOAD;
56 }
57
58 1;
59