#!/usr/bin/perl
package Simba::Util;

use warnings;
use strict;
use Exporter qw( import );
use Encode qw(decode encode );

our @EXPORT_OK = qw(quote unquote typestr);

sub quote {
    my ($s) = @_;
    $s =~ s{[\000-\040&=]}{sprintf("&#%d;", ord($&))}eg;
    return encode('utf-8', $s);
}

sub unquote {
    my ($s) = @_;
    $s = decode('utf-8', $s);
    $s =~ s{&#(\d+);}{chr($1)}eg;
    return $s;
}

my @typestr = (
    #0   1    2    3    4    5    6    7
    '?', 'p', 'c', '?', 'd', '?', 'b', '?',
    'f', '?', 'l', '?', 's', '?', '?', '?',
);
sub typestr {
    my ($mode) = @_;
    $mode >>= 12;
    return $typestr[$mode] || '?';
}

1;