From 7a0add6a84e1c3aa8826c98bbef70c07db5e1203 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 8 Aug 2005 15:03:34 +0000 Subject: initial import --- lib/Net/XRC/Data.pm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/Net/XRC/Data.pm (limited to 'lib/Net/XRC/Data.pm') diff --git a/lib/Net/XRC/Data.pm b/lib/Net/XRC/Data.pm new file mode 100644 index 0000000..6f26400 --- /dev/null +++ b/lib/Net/XRC/Data.pm @@ -0,0 +1,34 @@ +package Net::XRC::Data; + +use strict; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $data = shift; + my $self = ref($data) ? $data : \$data; + warn "$proto->($self [$data])\n" + if $Net::XRC::DEBUG > 1; + + if ( $class eq 'Net::XRC::Data' ) { #take a guess + if ( ref($self) eq 'HASH' ) { + $class .= '::complex'; + } elsif ( ref($self) eq 'ARRAY' ) { + $class .= '::list'; + } elsif ( !defined($$self) ) { + $class .= '::null'; + + # now just guess... no good way to distinguish + # (bool and bytes are never guessed) + } elsif ( $$self =~ /^-?\d+$/ ) { + $class .= '::int'; + } else { + $class .= '::string'; + } + eval "use $class;"; + die $@ if $@; + } + bless($self, $class); +} + +1; -- cgit v1.2.1