B::JVM::Utils - Utility functions for B::JVM


B-JVM-Jasmin documentation Contained in the B-JVM-Jasmin distribution.

Index


Code Index:

NAME

Top

B::JVM::Utils - Utility functions for B::JVM

SYNOPSIS

Top

  use B::JVM::Utils qw(method1 method2);

DESCRIPTION

Top

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.

AUTHOR

Top

Bradley M. Kuhn, bkuhn@ebb.org, http://www.ebb.org/bkuhn

COPYRIGHT

Top

LICENSE

Top

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.

SEE ALSO

Top

perl(1), B::JVM::Jasmin(3), B::JVM::Emit(3).

DETAILED DOCUMENTATION

Top

B::JVM::Jasmin::Utils Package Variables

$VERSION

Version number of B::JVM::Utils. For now, it should always match the version of B::JVM::Jasmin

@EXPORT_OK

All the methods that one can grab from B::JVM::Utils.

@EXPORT

We don't export anything by default.

Modules used by B::JVM::Utils

Carp

Used for error reporting

Methods in B::JVM::Utils

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.

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

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


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__