The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Encode::JP::Mobile::ConvertPictogramSJIS;
use strict;
use warnings;
use Encode::Alias;

# sjis
define_alias('x-sjis-imode'         => 'x-sjis-docomo');
define_alias('x-sjis-ezweb-auto'    => 'x-sjis-kddi-auto');
define_alias('x-sjis-airedge'       => 'x-sjis-airh');
define_alias('x-sjis-vodafone'      => 'x-sjis-softbank');
define_alias('x-sjis-vodafone-auto' => 'x-sjis-softbank-auto');

# backward compatiblity
define_alias('shift_jis-imode'      => 'x-sjis-imode');
define_alias('shift_jis-kddi-auto'  => 'x-sjis-kddi-auto');
define_alias('shift_jis-airedge'    => 'x-sjis-airh');
define_alias('shift_jis-docomo'     => 'x-sjis-imode');
define_alias('shift_jis-ezweb'      => 'x-sjis-kddi');
define_alias('shift_jis-ezweb-auto' => 'x-sjis-kddi-auto');
define_alias('shift_jis-airh'       => 'x-sjis-airh');


define_alias('shift_jis-softbank' => 'x-sjis-softbank');
define_alias('shift_jis-vodafone' => 'x-sjis-vodafone');

no strict 'refs';
for my $carrier (qw/docomo softbank softbank-auto kddi-auto airh/) {
    my $pkg = "Encode::JP::Mobile::_ConvertPictogramSJIS${carrier}";
    @{"$pkg\::ISA"} = 'Encode::Encoding';
    $pkg->Define("x-sjis-$carrier");

    *{"$pkg\::decode"} = sub ($$;$) {
        my($self, $char, $check) = @_;
        my $str = Encode::decode("x-sjis-$carrier-raw", $char);
        $_[1] = $str if $check and !ref $check and !( $check & Encode::LEAVE_SRC );
        $str;
    };

    *{"$pkg\::encode"} = sub ($$;$) {
        my($self, $str, $check) = @_;

        my $utf8_encoding = "x-utf8-$carrier";
        $utf8_encoding =~ s/-auto$//;
        $utf8_encoding =~ s/-airh$/-docomo/;

        $str = Encode::encode($utf8_encoding, $str, $check);
        Encode::_utf8_on($str);
        $str = Encode::encode("x-sjis-${carrier}-raw", $str, $check);

        $_[1] = $str if $check and !ref $check and !( $check & Encode::LEAVE_SRC );
        $str;
    }
}



1;