From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use strict;
use Carp qw(croak);
use constant RESULT_CLASS=>'Data::Range::Compare::Stream::Iterator::Compare::Result';
sub new {
my ($class,%args)=@_;
$class->SUPER::new(column_map=>[],root_ids=>[],dead_columns=>[],last_row=>0,iterators_empty=>0,prepared=>0,consolidateors=>[],raw_row=>[],%args);
}
sub on_dead_iterator { 1 }
sub prepared { $_[0]->{prepared} }
sub add_consolidator {
my ($self,$consolidator)=@_;
croak "Fatal error, cannot add new objects once the consolidator has been called!!" if $self->prepared;
push @{$self->{consolidateors}},$consolidator;
my $id=$#{$self->{consolidateors}};
$consolidator->set_column_id($id);
return $id
}
sub insert_consolidator {
my ($self,$consolidator)=@_;
push @{$self->{consolidateors}},$consolidator;
my $id=$#{$self->{consolidateors}};
$consolidator->set_column_id($id);
if($self->prepared) {
croak "cannot insert empty consolidators!" unless $consolidator->has_next;
$self->{raw_row}->[$id]=$consolidator->get_next;
}
return $id;
}
sub get_iterator_by_id {
my ($self,$id)=@_;
croak "id out of bounds" if !defined($id) or $id>$#{$_[0]->{consolidateors}} or $id<0;
return $self->{consolidateors}->[$id];
}
sub get_column_count_human_readable { 1 + $_[0]->get_column_count}
sub get_column_count { $#{$_[0]->{consolidateors}} }
sub get_consolidateors { @{$_[0]->{consolidateors}} }
sub get_current_row { $_[0]->{current_row} }
sub iterators_empty { $_[0]->{iterators_empty} }
1;