B-JVM-Jasmin
view release on metacpan or search on metacpan
lib/B/JVM/Utils.pm view on Meta::CPAN
=over
=item $VERSION
Version number of B::JVM::Utils. For now, it should always match the version
of B::JVM::Jasmin
=item @EXPORT_OK
All the methods that one can grab from B::JVM::Utils.
=item @EXPORT
We don't export anything by default.
=back
=cut
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@ISA = qw(Exporter);
@EXPORT = qw();
@EXPORT_OK = qw(ExtractMethodData IsValidMethodString IsValidTypeIdentifier);
$VERSION = "0.02";
###############################################################################
=head2 Modules used by B::JVM::Utils
=over
=item Carp
Used for error reporting
=back
=cut
use Carp;
###############################################################################
=head2 Methods in B::JVM::Utils
=over
=cut
#-----------------------------------------------------------------------------
=item B::JVM::ExtractMethodData
usage: B::JVM::ExtractMethodData(METHOD_STRING)
Takes a string that is believed to a valid method string for a JVM method, and
if it is a valid method string, returns a hash reference that looks like:
{ methodName => NAME_OF_THE_METHOD,
returnType => TYPE_ID_OF_RETURN_TYPE,
argumentTypes => [ ARGUMENT_1_RETURN_TYPE_ID,
ARGUMENT_1_RETURN_TYPE_ID,
... ] }
An undefined value is returned if the method string is not valid.
=cut
sub ExtractMethodData {
my($methodString) = @_;
# first, check for the name itself
my ($methodName, $types, $returnType) =
($methodString =~
m{^(\w+(?:/[\w<>]+)*) # the method name
\(( # paren starts list of arg types
(?:\[* # [ starts an array
(?:[BCDFIJSZ]| # the native java types
L\w+(?:/\w+)*;) # a Java class type
)*)\) # paren, end of arg types
([BCDFIJSZV]| # the return type, note that
L\w+(?:/\w+)*;) # V (void) is inculed
$}x);
return undef if (not defined($methodName) and not defined($returnType));
my @types = ($types =~
m{\G(\[* # [ starts an array
(?:[BCDFIJSZ]| # the native java types
L\w+(?:/\w+)*;))}gx); # a Java class type
return { methodName => $methodName,
returnType => $returnType,
argumentTypes => \@types };
}
#-----------------------------------------------------------------------------
=item B::JVM::Utils::IsValidMethodString
usage: B::JVM::Utils::IsValidMethodString(METHOD_STRING)
Takes a string that is believed to a valid method name for a JVM method, and
returns a true iff. the METHOD_STRING is a valid JVM method name
=cut
sub IsValidMethodString {
return (defined ExtractMethodData($_[0]));
}
#-----------------------------------------------------------------------------
=item B::JVM::Utils
usage: B::JVM::Utils:IsValidTypeIdentifier(TYPE_ID)
Takes a string that is believed to a valid type identifitier name on the
JVM, and returns a true iff. the TYPE_ID is a valid JVM type identifier
( run in 1.851 second using v1.01-cache-2.11-cpan-364913b4093 )