package RPerl::DataStructure::LinkedList::Node; use strict; use warnings; use RPerl::AfterSubclass; our $VERSION = 0.001_100; package RPerl::DataStructure::LinkedList::NodeReference; #use parent qw(RPerl::DataStructure RPerl::DataType::Modifier::Reference); # NEED UPGRADE, CORRELATION #rp023: Inline::CPP support for multiple inheritance use parent qw(RPerl::DataType::Modifier::Reference); #use RPerl::DataStructure; use RPerl::DataType::Modifier::Reference; # must include here because we do not inherit data types use RPerl::DataType::Integer; use RPerl::DataType::String; use RPerl::DataType::Unknown; use RPerl::CodeBlock::Subroutine::Method; our hashref $properties = { data => my unknown $TYPED_data = undef, next => my RPerl::DataStructure::LinkedList::NodeReference $TYPED_next = undef }; sub DUMPER { { my string::method $RETURN_TYPE }; (my RPerl::DataStructure::LinkedList::NodeReference $node) = @ARG; my string $dumped = '['; my integer $is_first = 1; while (defined($node)) { if ($is_first) { $is_first = 0; } else { $dumped .= ', '; } # TODO: handle non-scalartype linked list elements $dumped .= $node->{data}; $node = $node->{next}; } $dumped .= ']'; return $dumped; } # ref to (linked list node) # DEV NOTE: for naming conventions, see DEV NOTE in same code section of LinkedList.pm package # hide from PAUSE indexing linkedlistnoderef; use parent qw(RPerl::DataStructure::LinkedList::NodeReference); use RPerl::DataStructure::LinkedList::Node; our $properties = $properties; 1; # end of class