use strict;
use Carp 'confess';
use overload bool => sub {1}, '""' => sub { shift->to_string }, fallback => 1;
sub to_string {
my $self = shift;
my $string = $self->to_bin;
my $success = utf8::decode($string);
unless ($success) {
confess("The SPVM::BlessedObject::String object cannnot be decoded to Perl string");
}
return $string;
}
sub to_bin { my $ret; eval { $ret = shift->_xs_to_bin(@_) }; if ($@) { confess($@) } $ret; }
1;
=head1 Name
SPVM::BlessedObject::String - SPVM string
=head1 Description
The object of C<SPVM::BlessedObject::String> class holds an SPVM string.
=head1 Usage
my $string = $blessed_object_string->to_string;
my $binary = $blessed_object_string->to_bin;
=head1 Instance Methods
=head2 to_string
my $string = $blessed_object_string->to_string;
Returns a string decoded to Perl string using L<utf8::decode|https://metacpan.org/pod/utf8>.
If the docoding fails, an exception is thrown.
=head2 to_bin
my $binary = $blessed_object_string->to_bin;
Returns a string as a binary.
=head1 Operators
Overloads the following operators.
=head2 bool
my $bool = !!$blessed_object_string;
Always true.
=head2 stringify
my $string = "$blessed_object_string";
The alias for L</"to_string">.
=head1 Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License