our
$VERSION
= 0.020_000;
our
@EXPORT
=
qw(
arrayref_CHECK
arrayref_CHECKTRACE
arrayref_to_string_compact
arrayref_to_string
arrayref_to_string_pretty
arrayref_to_string_expand
arrayref_to_string_format
)
;
our
@EXPORT_OK
=
qw()
;
package
boolean;
package
unsigned_integer;
package
number;
package
character;
package
string;
package
type_enum;
package
array;
package
arrayref;
use
parent -norequire,
qw(RPerl::DataStructure::Array::Reference)
;
sub
arrayref_CHECK {
{
my
void
$RETURN_TYPE
};
(
my
$possible_arrayref
) =
@ARG
;
if
( not(
defined
$possible_arrayref
) ) {
croak(
"\nERROR EAVRV00, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\narrayref value expected but undefined/null value found,\ncroaking"
);
}
if
( not( main::RPerl_SvAROKp(
$possible_arrayref
) ) ) {
croak(
"\nERROR EAVRV01, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\narrayref value expected but non-arrayref value found,\ncroaking"
);
}
return
;
}
sub
arrayref_CHECKTRACE {
{
my
void
$RETURN_TYPE
};
(
my
$possible_arrayref
,
my
$variable_name
,
my
$subroutine_name
) =
@ARG
;
if
( not(
defined
$possible_arrayref
) ) {
croak(
"\nERROR EAVRV00, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\narrayref value expected but undefined/null value found,\nin variable $variable_name from subroutine $subroutine_name,\ncroaking"
);
}
if
( not( main::RPerl_SvAROKp(
$possible_arrayref
) ) ) {
croak(
"\nERROR EAVRV01, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\narrayref value expected but non-arrayref value found,\nin variable $variable_name from subroutine $subroutine_name,\ncroaking"
);
}
return
;
}
my
$TYPED_arrayref_to_string_format
= [
\
&main::string_arrayref_to_string_format
,
\
&main::integer_arrayref_to_string_format
,
\
&main::number_arrayref_to_string_format
,
\
&main::string_arrayref_to_string_format
,
\
&main::string_arrayref_to_string_format
,
];
sub
DYNAMIC_arrayref_to_string_format {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
,
my
integer
$format_level
,
my
integer
$indent_level
,
my
boolean
$is_reference
,
my
type_enum
$input_avref_element_type
) =
@ARG
;
RPerl::diag(
'in PERLOPS_PERLTYPES DYNAMIC_arrayref_to_string_format(), received $input_avref_element_type = '
,
$input_avref_element_type
,
"\n"
);
return
&{
$TYPED_arrayref_to_string_format
->[
$input_avref_element_type
]}(
$input_avref
,
$format_level
,
$indent_level
,
$is_reference
);
}
sub
arrayref_to_string_compact {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
) =
@ARG
;
RPerl::diag(
"in PERLOPS_PERLTYPES arrayref_to_string_compact(), about to call DYNAMIC_arrayref_to_string_format() & return value\n"
);
return
DYNAMIC_arrayref_to_string_format(
$input_avref
, -2, 0, 1, main::type_fast_enum__upgrade_integer_to_number(
$input_avref
->[0]));
}
sub
arrayref_to_string {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
) =
@ARG
;
RPerl::diag(
"in PERLOPS_PERLTYPES arrayref_to_string(), about to call DYNAMIC_arrayref_to_string_format() & return value\n"
);
return
DYNAMIC_arrayref_to_string_format(
$input_avref
, -1, 0, 1, main::type_fast_enum__upgrade_integer_to_number(
$input_avref
->[0]));
}
sub
arrayref_to_string_pretty {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
) =
@ARG
;
RPerl::diag(
"in PERLOPS_PERLTYPES arrayref_to_string_pretty(), about to call DYNAMIC_arrayref_to_string_format() & return value\n"
);
return
DYNAMIC_arrayref_to_string_format(
$input_avref
, 0, 0, 1, main::type_fast_enum__upgrade_integer_to_number(
$input_avref
->[0]));
}
sub
arrayref_to_string_expand {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
) =
@ARG
;
RPerl::diag(
"in PERLOPS_PERLTYPES arrayref_to_string_expand(), about to call DYNAMIC_arrayref_to_string_format() & return value\n"
);
return
DYNAMIC_arrayref_to_string_format(
$input_avref
, 1, 0, 1, main::type_fast_enum__upgrade_integer_to_number(
$input_avref
->[0]));
}
sub
arrayref_to_string_format {
{
my
string
$RETURN_TYPE
};
(
my
arrayref
$input_avref
,
my
integer
$format_level
,
my
integer
$indent_level
) =
@ARG
;
RPerl::diag(
"in PERLOPS_PERLTYPES arrayref_to_string_format(), about to call DYNAMIC_arrayref_to_string_format() & return value\n"
);
return
DYNAMIC_arrayref_to_string_format(
$input_avref
,
$format_level
,
$indent_level
, 1, main::type_fast_enum__upgrade_integer_to_number(
$input_avref
->[0]));
}
1;