package Psh
::Support
::TiedOption
;
package Psh
::Support
::TiedOption
::Scalar
;
my ($class, $optname) = @_;
return bless \
$optname, $class;
my $val = Psh
::Options
::get_option
($$optname);
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_scalar', $$optname);
my ($optname, $newval) = @_;
my $val = Psh
::Options
::get_option
($$optname);
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_scalar', $$optname);
Psh
::Options
::set_option
($$optname, $newval);
package Psh
::Support
::TiedOption
::Array
;
my ($class, $optname) = @_;
return bless \
$optname, $class;
my ($optname, $index) = @_;
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'ARRAY') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_array', $$optname);
my ($optname, $index, $newval) = @_;
my $array = scalar Psh
::Options
::get_option
($$optname);
unless (ref $array eq 'ARRAY') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_array', $$optname);
$array->[$index] = $newval;
Psh
::Options
::set_option
($$optname, $array);
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'ARRAY') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_array', $$optname);
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'ARRAY') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_array', $$optname);
Psh
::Options
::set_option
($$optname, []);
package Psh
::Support
::TiedOption
::Hash
;
my ($class, $optname) = @_;
return bless \
$optname, $class;
my ($optname, $key) = @_;
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
my ($optname, $key, $newval) = @_;
my $hash = scalar Psh
::Options
::get_option
($$optname);
unless (ref $hash eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
Psh
::Options
::set_option
($$optname, $hash);
my ($optname, $key) = @_;
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
return exists $val->{$key};
my ($optname, $key) = @_;
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
return delete $val->{$key};
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
Psh
::Options
::set_option
($$optname, {});
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);
my $reset_keys = keys %$val;
my $val = Psh
::Options
::get_option
($$optname);
unless (ref $val eq 'HASH') {
Psh
::Util
::print_error_i18n
('bi_tieopt_fetch_badtype_hash', $$optname);