| B-JVM-Jasmin documentation | Contained in the B-JVM-Jasmin distribution. |
B::JVM::Utils - Utility functions for B::JVM
use B::JVM::Utils qw(method1 method2);
This package is a set of utilties that are useful when compiling Perl to the JVM architecture. They are a hodgepodge of utilties that don't really fit anywhere else.
Bradley M. Kuhn, bkuhn@ebb.org, http://www.ebb.org/bkuhn
Copyright (C) 1999, Bradley M. Kuhn, All Rights Reserved.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the LICENSE file that was shipped with this distribution.
perl(1), B::JVM::Jasmin(3), B::JVM::Emit(3).
Version number of B::JVM::Utils. For now, it should always match the version of B::JVM::Jasmin
All the methods that one can grab from B::JVM::Utils.
We don't export anything by default.
Used for error reporting
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.
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
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
| B-JVM-Jasmin documentation | Contained in the B-JVM-Jasmin distribution. |
# Utils.pm -*- Perl -*- # # Copyright (C) 1999, Bradley M. Kuhn, All Rights Reserved. # # You may distribute under the terms of either the GNU General Public License # or the Artistic License, as specified in the LICENSE file that was shipped # with this distribution. package B::JVM::Utils; use 5.000562; use strict; use warnings; require Exporter; use AutoLoader qw(AUTOLOAD);
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); @ISA = qw(Exporter); @EXPORT = qw(); @EXPORT_OK = qw(ExtractMethodData IsValidMethodString IsValidTypeIdentifier); $VERSION = "0.02"; ###############################################################################
use Carp; ###############################################################################
#-----------------------------------------------------------------------------
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 }; } #-----------------------------------------------------------------------------
sub IsValidMethodString { return (defined ExtractMethodData($_[0])); } #-----------------------------------------------------------------------------
sub IsValidTypeIdentifier { return ($_[0] =~ m{^\[* # [ starts an array (?:[BCDFIJSZ]| # the native java types L?\w+(?:/\w+)*;?) # a Java class type }x); } #-----------------------------------------------------------------------------
############################################################################### 1; __END__