*** empty log message ***
[spider.git] / perl / Thingy.pm
diff --git a/perl/Thingy.pm b/perl/Thingy.pm
new file mode 100644 (file)
index 0000000..ce586a9
--- /dev/null
@@ -0,0 +1,59 @@
+#
+# This module is the factory method for dealing with routable entities
+# It will route transforming them on the way as required.
+#
+# Copyright (c) 2001 Dirk Koopman G1TLH
+#
+# $Id$
+# 
+
+package Thingy;
+
+use strict;
+
+use DXDebug;
+
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
+use vars qw(%valid);
+
+%valid = (
+                 sort => '0,Sort',
+                 tonode => '0,To Node',
+                 fromnode => '0,From Node',
+                 id => '0,Msg Id',
+                 origin => '0,Origin Node',
+                 line => '0,Input Line',
+                );
+
+
+sub init
+{
+
+}
+
+sub new
+{
+       my $pkg = shift;
+       my $self = {@_};
+       return bless $self, $pkg;
+}
+
+sub AUTOLOAD
+{
+       my ($pkg, $name) = $AUTOLOAD =~ /^(.*)::(\w+)$/;
+       return if $name eq 'DESTROY';
+  
+       my $v = "${pkg}::valid";
+       confess "Non-existant field '$AUTOLOAD'" unless $$v{$name} || $valid{$name};
+
+       *$AUTOLOAD = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}};
+       goto &$AUTOLOAD;
+}
+
+1;
+