our $VERSION = '20201001';
-# _column # the current column number
-# _starting_column # column number when created
-# _saved_column # a place for temporary storage
+# _column_ # the current column number
+# _starting_column_ # column number when created
+# _saved_column_ # a place for temporary storage
+my $i = 0;
+use constant {
+ _column_ => $i++,
+ _starting_column_ => $i++,
+ _saved_column_ => $i++,
+};
sub new {
my ( $caller, %arg ) = @_;
my $caller_is_obj = ref($caller);
my $class = $caller_is_obj || $caller;
- my $self = bless {}, $class;
- $self->{_column} = $arg{column};
- $self->{_starting_column} = $arg{starting_column};
- $self->{_saved_column} = $arg{saved_column};
- if ( !defined( $self->{_starting_column} ) ) {
- $self->{_starting_column} = $self->{_column};
+ my $self = bless [], $class;
+ $self->[_column_] = $arg{column};
+ $self->[_starting_column_] = $arg{starting_column};
+ $self->[_saved_column_] = $arg{saved_column};
+ if ( !defined( $self->[_starting_column_] ) ) {
+ $self->[_starting_column_] = $self->[_column_];
}
return $self;
}
# some diagnostic information. This sub should never be called
# except for a programming error.
our $AUTOLOAD;
- return if ( $AUTOLOAD =~/\bDESTROY$/ );
+ return if ( $AUTOLOAD =~ /\bDESTROY$/ );
my ( $pkg, $fname, $lno ) = caller();
print STDERR <<EOM;
======================================================================
# required to avoid call to AUTOLOAD in some versions of perl
}
-sub get_column { my $self = shift; return $self->{_column} }
+sub get_column {
+ return $_[0]->[_column_];
+}
sub get_starting_column {
- my $self = shift;
- return $self->{_starting_column};
+ return $_[0]->[_starting_column_];
}
-sub set_column { my ( $self, $val ) = @_; $self->{_column} = $val; return }
+sub set_column {
+ my ( $self, $val ) = @_;
+ $self->[_column_] = $val;
+ return;
+}
sub set_starting_column {
my ( $self, $val ) = @_;
- $self->{_starting_column} = $val;
+ $self->[_starting_column_] = $val;
return;
}
sub increment_column {
my ( $self, $val ) = @_;
- $self->{_column} += $val;
+ $self->[_column_] += $val;
return;
}
sub save_column {
- my $self = shift;
- $self->{_saved_column} = $self->{_column};
+ $_[0]->[_saved_column_] = $_[0]->[_column_];
return;
}
sub restore_column {
- my $self = shift;
- $self->{_column} = $self->{_saved_column};
+ $_[0]->[_column_] = $_[0]->[_saved_column_];
return;
}
} ## end of package VerticalAligner::Alignment