package Perl::Tidy::IndentationItem;
use strict;
use warnings;
-our $VERSION = '20200110';
+our $VERSION = '20210717';
+
+BEGIN {
+
+ # Array index names
+ my $i = 0;
+ use constant {
+ _spaces_ => $i++,
+ _level_ => $i++,
+ _ci_level_ => $i++,
+ _available_spaces_ => $i++,
+ _closed_ => $i++,
+ _comma_count_ => $i++,
+ _sequence_number_ => $i++,
+ _index_ => $i++,
+ _have_child_ => $i++,
+ _recoverable_spaces_ => $i++,
+ _align_paren_ => $i++,
+ _marked_ => $i++,
+ _stack_depth_ => $i++,
+ _starting_index_K_ => $i++,
+ _arrow_count_ => $i++,
+ };
+}
+
+sub AUTOLOAD {
+
+ # Catch any undefined sub calls so that we are sure to get
+ # some diagnostic information. This sub should never be called
+ # except for a programming error.
+ our $AUTOLOAD;
+ return if ( $AUTOLOAD =~ /\bDESTROY$/ );
+ my ( $pkg, $fname, $lno ) = caller();
+ my $my_package = __PACKAGE__;
+ print STDERR <<EOM;
+======================================================================
+Error detected in package '$my_package', version $VERSION
+Received unexpected AUTOLOAD call for sub '$AUTOLOAD'
+Called from package: '$pkg'
+Called from File '$fname' at line '$lno'
+This error is probably due to a recent programming change
+======================================================================
+EOM
+ exit 1;
+}
+
+sub DESTROY {
+
+ # required to avoid call to AUTOLOAD in some versions of perl
+}
sub new {
# Create an 'indentation_item' which describes one level of leading
# whitespace when the '-lp' indentation is used.
- my (
- $class, $spaces, $level,
- $ci_level, $available_spaces, $index,
- $gnu_sequence_number, $align_paren, $stack_depth,
- $starting_index,
- ) = @_;
-
- my $closed = -1;
- my $arrow_count = 0;
- my $comma_count = 0;
- my $have_child = 0;
- my $want_right_spaces = 0;
- my $marked = 0;
+ my ( $class, %input_hash ) = @_;
# DEFINITIONS:
# spaces => # total leading white spaces
# # with an opening structure?
# marked => # if visited by corrector logic
# stack_depth => # indentation nesting depth
- # starting_index => # first token index of this level
+ # starting_index_K => # first token index K of this level
# arrow_count => # how many =>'s
- return bless {
- _spaces => $spaces,
- _level => $level,
- _ci_level => $ci_level,
- _available_spaces => $available_spaces,
- _closed => $closed,
- _comma_count => $comma_count,
- _sequence_number => $gnu_sequence_number,
- _index => $index,
- _have_child => $have_child,
- _recoverable_spaces => $want_right_spaces,
- _align_paren => $align_paren,
- _marked => $marked,
- _stack_depth => $stack_depth,
- _starting_index => $starting_index,
- _arrow_count => $arrow_count,
- }, $class;
+ my $self = [];
+ $self->[_spaces_] = $input_hash{spaces};
+ $self->[_level_] = $input_hash{level};
+ $self->[_ci_level_] = $input_hash{ci_level};
+ $self->[_available_spaces_] = $input_hash{available_spaces};
+ $self->[_closed_] = -1;
+ $self->[_comma_count_] = 0;
+ $self->[_sequence_number_] = $input_hash{gnu_sequence_number};
+ $self->[_index_] = $input_hash{index};
+ $self->[_have_child_] = 0;
+ $self->[_recoverable_spaces_] = 0;
+ $self->[_align_paren_] = $input_hash{align_paren};
+ $self->[_marked_] = 0;
+ $self->[_stack_depth_] = $input_hash{stack_depth};
+ $self->[_starting_index_K_] = $input_hash{starting_index_K};
+ $self->[_arrow_count_] = 0;
+
+ bless $self, $class;
+ return $self;
}
sub permanently_decrease_available_spaces {
}
sub get_stack_depth {
- my $self = shift;
- return $self->{_stack_depth};
+ return $_[0]->[_stack_depth_];
}
sub get_spaces {
- my $self = shift;
- return $self->{_spaces};
+ return $_[0]->[_spaces_];
}
sub get_marked {
- my $self = shift;
- return $self->{_marked};
+ return $_[0]->[_marked_];
}
sub set_marked {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_marked} = $value;
+ $self->[_marked_] = $value;
}
- return $self->{_marked};
+ return $self->[_marked_];
}
sub get_available_spaces {
- my $self = shift;
- return $self->{_available_spaces};
+ return $_[0]->[_available_spaces_];
}
sub decrease_SPACES {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_spaces} -= $value;
+ $self->[_spaces_] -= $value;
}
- return $self->{_spaces};
+ return $self->[_spaces_];
}
sub decrease_available_spaces {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_available_spaces} -= $value;
+ $self->[_available_spaces_] -= $value;
}
- return $self->{_available_spaces};
+ return $self->[_available_spaces_];
}
sub get_align_paren {
- my $self = shift;
- return $self->{_align_paren};
+ return $_[0]->[_align_paren_];
}
sub get_recoverable_spaces {
- my $self = shift;
- return $self->{_recoverable_spaces};
+ return $_[0]->[_recoverable_spaces_];
}
sub set_recoverable_spaces {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_recoverable_spaces} = $value;
+ $self->[_recoverable_spaces_] = $value;
}
- return $self->{_recoverable_spaces};
+ return $self->[_recoverable_spaces_];
}
sub increase_recoverable_spaces {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_recoverable_spaces} += $value;
+ $self->[_recoverable_spaces_] += $value;
}
- return $self->{_recoverable_spaces};
+ return $self->[_recoverable_spaces_];
}
sub get_ci_level {
- my $self = shift;
- return $self->{_ci_level};
+ return $_[0]->[_ci_level_];
}
sub get_level {
- my $self = shift;
- return $self->{_level};
+ return $_[0]->[_level_];
}
sub get_sequence_number {
- my $self = shift;
- return $self->{_sequence_number};
+ return $_[0]->[_sequence_number_];
}
sub get_index {
- my $self = shift;
- return $self->{_index};
+ return $_[0]->[_index_];
}
-sub get_starting_index {
- my $self = shift;
- return $self->{_starting_index};
+sub get_starting_index_K {
+ return $_[0]->[_starting_index_K_];
}
sub set_have_child {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_have_child} = $value;
+ $self->[_have_child_] = $value;
}
- return $self->{_have_child};
+ return $self->[_have_child_];
}
sub get_have_child {
- my $self = shift;
- return $self->{_have_child};
+ return $_[0]->[_have_child_];
}
sub set_arrow_count {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_arrow_count} = $value;
+ $self->[_arrow_count_] = $value;
}
- return $self->{_arrow_count};
+ return $self->[_arrow_count_];
}
sub get_arrow_count {
- my $self = shift;
- return $self->{_arrow_count};
+ return $_[0]->[_arrow_count_];
}
sub set_comma_count {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_comma_count} = $value;
+ $self->[_comma_count_] = $value;
}
- return $self->{_comma_count};
+ return $self->[_comma_count_];
}
sub get_comma_count {
- my $self = shift;
- return $self->{_comma_count};
+ return $_[0]->[_comma_count_];
}
sub set_closed {
my ( $self, $value ) = @_;
if ( defined($value) ) {
- $self->{_closed} = $value;
+ $self->[_closed_] = $value;
}
- return $self->{_closed};
+ return $self->[_closed_];
}
sub get_closed {
- my $self = shift;
- return $self->{_closed};
+ return $_[0]->[_closed_];
}
1;